Skip to content

Commit

Permalink
vkd3d: Adding format values for ASTC extension
Browse files Browse the repository at this point in the history
Signed-off-by: David McCloskey <dave@juicelabs.co>
  • Loading branch information
dave-juicelabs committed Feb 19, 2024
1 parent a6f6d8c commit 44e5b0a
Show file tree
Hide file tree
Showing 3 changed files with 182 additions and 7 deletions.
57 changes: 57 additions & 0 deletions include/vkd3d_dxgiformat.idl
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,63 @@ typedef enum DXGI_FORMAT
DXGI_FORMAT_V208 = 0x83,
DXGI_FORMAT_V408 = 0x84,

/* https://gli.g-truc.net/0.6.1/api/a00001.html */
DXGI_FORMAT_ASTC_4X4_TYPELESS = 0x85,
DXGI_FORMAT_ASTC_4X4_UNORM = 0x86,
DXGI_FORMAT_ASTC_4X4_UNORM_SRGB = 0x87,
DXGI_FORMAT_ASTC_4X4_FLOAT = 0x88,
DXGI_FORMAT_ASTC_5X4_TYPELESS = 0x89,
DXGI_FORMAT_ASTC_5X4_UNORM = 0x8a,
DXGI_FORMAT_ASTC_5X4_UNORM_SRGB = 0x8b,
DXGI_FORMAT_ASTC_5X5_TYPELESS = 0x8d,
DXGI_FORMAT_ASTC_5X5_UNORM = 0x8e,
DXGI_FORMAT_ASTC_5X5_UNORM_SRGB = 0x8f,
DXGI_FORMAT_ASTC_5X5_FLOAT = 0x90,
DXGI_FORMAT_ASTC_6X5_TYPELESS = 0x91,
DXGI_FORMAT_ASTC_6X5_UNORM = 0x92,
DXGI_FORMAT_ASTC_6X5_UNORM_SRGB = 0x93,
DXGI_FORMAT_ASTC_6X5_FLOAT = 0x94,
DXGI_FORMAT_ASTC_6X6_TYPELESS = 0x95,
DXGI_FORMAT_ASTC_6X6_UNORM = 0x96,
DXGI_FORMAT_ASTC_6X6_UNORM_SRGB = 0x97,
DXGI_FORMAT_ASTC_6X6_FLOAT = 0x98,
DXGI_FORMAT_ASTC_8X5_TYPELESS = 0x99,
DXGI_FORMAT_ASTC_8X5_UNORM = 0x9a,
DXGI_FORMAT_ASTC_8X5_UNORM_SRGB = 0x9b,
DXGI_FORMAT_ASTC_8X5_FLOAT = 0x9c,
DXGI_FORMAT_ASTC_8X6_TYPELESS = 0x9d,
DXGI_FORMAT_ASTC_8X6_UNORM = 0x9e,
DXGI_FORMAT_ASTC_8X6_UNORM_SRGB = 0x9f,
DXGI_FORMAT_ASTC_8X6_FLOAT = 0xa0,
DXGI_FORMAT_ASTC_8X8_TYPELESS = 0xa1,
DXGI_FORMAT_ASTC_8X8_UNORM = 0xa2,
DXGI_FORMAT_ASTC_8X8_UNORM_SRGB = 0xa3,
DXGI_FORMAT_ASTC_8X8_FLOAT = 0xa4,
DXGI_FORMAT_ASTC_10X5_TYPELESS = 0xa5,
DXGI_FORMAT_ASTC_10X5_UNORM = 0xa6,
DXGI_FORMAT_ASTC_10X5_UNORM_SRGB = 0xa7,
DXGI_FORMAT_ASTC_10X5_FLOAT = 0xa8,
DXGI_FORMAT_ASTC_10X6_TYPELESS = 0xa9,
DXGI_FORMAT_ASTC_10X6_UNORM = 0xaa,
DXGI_FORMAT_ASTC_10X6_UNORM_SRGB = 0xab,
DXGI_FORMAT_ASTC_10X6_FLOAT = 0xac,
DXGI_FORMAT_ASTC_10X8_TYPELESS = 0xad,
DXGI_FORMAT_ASTC_10X8_UNORM = 0xae,
DXGI_FORMAT_ASTC_10X8_UNORM_SRGB = 0xaf,
DXGI_FORMAT_ASTC_10X8_FLOAT = 0xb0,
DXGI_FORMAT_ASTC_10X10_TYPELESS = 0xb1,
DXGI_FORMAT_ASTC_10X10_UNORM = 0xb2,
DXGI_FORMAT_ASTC_10X10_UNORM_SRGB = 0xb3,
DXGI_FORMAT_ASTC_10X10_FLOAT = 0xb4,
DXGI_FORMAT_ASTC_12X10_TYPELESS = 0xb5,
DXGI_FORMAT_ASTC_12X10_UNORM = 0xb6,
DXGI_FORMAT_ASTC_12X10_UNORM_SRGB = 0xb7,
DXGI_FORMAT_ASTC_12X10_FLOAT = 0xb8,
DXGI_FORMAT_ASTC_12X12_TYPELESS = 0xb9,
DXGI_FORMAT_ASTC_12X12_UNORM = 0xba,
DXGI_FORMAT_ASTC_12X12_UNORM_SRGB = 0xbb,
DXGI_FORMAT_ASTC_12X12_FLOAT = 0xbc,

DXGI_FORMAT_SAMPLER_FEEDBACK_MIN_MIP_OPAQUE = 0xbd,
DXGI_FORMAT_SAMPLER_FEEDBACK_MIP_REGION_USED_OPAQUE = 0xbe,

Expand Down
55 changes: 55 additions & 0 deletions libs/vkd3d/utils.c
Original file line number Diff line number Diff line change
Expand Up @@ -1039,6 +1039,61 @@ bool is_valid_format(DXGI_FORMAT dxgi_format)
case DXGI_FORMAT_P208:
case DXGI_FORMAT_V208:
case DXGI_FORMAT_V408:
case DXGI_FORMAT_ASTC_4X4_TYPELESS:
case DXGI_FORMAT_ASTC_4X4_UNORM:
case DXGI_FORMAT_ASTC_4X4_UNORM_SRGB:
case DXGI_FORMAT_ASTC_4X4_FLOAT:
case DXGI_FORMAT_ASTC_5X4_TYPELESS:
case DXGI_FORMAT_ASTC_5X4_UNORM:
case DXGI_FORMAT_ASTC_5X4_UNORM_SRGB:
case DXGI_FORMAT_ASTC_5X5_TYPELESS:
case DXGI_FORMAT_ASTC_5X5_UNORM:
case DXGI_FORMAT_ASTC_5X5_UNORM_SRGB:
case DXGI_FORMAT_ASTC_5X5_FLOAT:
case DXGI_FORMAT_ASTC_6X5_TYPELESS:
case DXGI_FORMAT_ASTC_6X5_UNORM:
case DXGI_FORMAT_ASTC_6X5_UNORM_SRGB:
case DXGI_FORMAT_ASTC_6X5_FLOAT:
case DXGI_FORMAT_ASTC_6X6_TYPELESS:
case DXGI_FORMAT_ASTC_6X6_UNORM:
case DXGI_FORMAT_ASTC_6X6_UNORM_SRGB:
case DXGI_FORMAT_ASTC_6X6_FLOAT:
case DXGI_FORMAT_ASTC_8X5_TYPELESS:
case DXGI_FORMAT_ASTC_8X5_UNORM:
case DXGI_FORMAT_ASTC_8X5_UNORM_SRGB:
case DXGI_FORMAT_ASTC_8X5_FLOAT:
case DXGI_FORMAT_ASTC_8X6_TYPELESS:
case DXGI_FORMAT_ASTC_8X6_UNORM:
case DXGI_FORMAT_ASTC_8X6_UNORM_SRGB:
case DXGI_FORMAT_ASTC_8X6_FLOAT:
case DXGI_FORMAT_ASTC_8X8_TYPELESS:
case DXGI_FORMAT_ASTC_8X8_UNORM:
case DXGI_FORMAT_ASTC_8X8_UNORM_SRGB:
case DXGI_FORMAT_ASTC_8X8_FLOAT:
case DXGI_FORMAT_ASTC_10X5_TYPELESS:
case DXGI_FORMAT_ASTC_10X5_UNORM:
case DXGI_FORMAT_ASTC_10X5_UNORM_SRGB:
case DXGI_FORMAT_ASTC_10X5_FLOAT:
case DXGI_FORMAT_ASTC_10X6_TYPELESS:
case DXGI_FORMAT_ASTC_10X6_UNORM:
case DXGI_FORMAT_ASTC_10X6_UNORM_SRGB:
case DXGI_FORMAT_ASTC_10X6_FLOAT:
case DXGI_FORMAT_ASTC_10X8_TYPELESS:
case DXGI_FORMAT_ASTC_10X8_UNORM:
case DXGI_FORMAT_ASTC_10X8_UNORM_SRGB:
case DXGI_FORMAT_ASTC_10X8_FLOAT:
case DXGI_FORMAT_ASTC_10X10_TYPELESS:
case DXGI_FORMAT_ASTC_10X10_UNORM:
case DXGI_FORMAT_ASTC_10X10_UNORM_SRGB:
case DXGI_FORMAT_ASTC_10X10_FLOAT:
case DXGI_FORMAT_ASTC_12X10_TYPELESS:
case DXGI_FORMAT_ASTC_12X10_UNORM:
case DXGI_FORMAT_ASTC_12X10_UNORM_SRGB:
case DXGI_FORMAT_ASTC_12X10_FLOAT:
case DXGI_FORMAT_ASTC_12X12_TYPELESS:
case DXGI_FORMAT_ASTC_12X12_UNORM:
case DXGI_FORMAT_ASTC_12X12_UNORM_SRGB:
case DXGI_FORMAT_ASTC_12X12_FLOAT:
case DXGI_FORMAT_SAMPLER_FEEDBACK_MIN_MIP_OPAQUE:
case DXGI_FORMAT_SAMPLER_FEEDBACK_MIP_REGION_USED_OPAQUE:
case DXGI_FORMAT_A4B4G4R4_UNORM:
Expand Down
77 changes: 70 additions & 7 deletions tests/d3d12_device.c
Original file line number Diff line number Diff line change
Expand Up @@ -468,6 +468,61 @@ void test_format_support(void)
DXGI_FORMAT_P208,
DXGI_FORMAT_V208,
DXGI_FORMAT_V408,
/* DXGI_FORMAT_ASTC_4X4_TYPELESS */ (DXGI_FORMAT)0x85,
/* DXGI_FORMAT_ASTC_4X4_UNORM */ (DXGI_FORMAT)0x86,
/* DXGI_FORMAT_ASTC_4X4_UNORM_SRGB */ (DXGI_FORMAT)0x87,
/* DXGI_FORMAT_ASTC_4X4_FLOAT */ (DXGI_FORMAT)0x88,
/* DXGI_FORMAT_ASTC_5X4_TYPELESS */ (DXGI_FORMAT)0x89,
/* DXGI_FORMAT_ASTC_5X4_UNORM */ (DXGI_FORMAT)0x8a,
/* DXGI_FORMAT_ASTC_5X4_UNORM_SRGB */ (DXGI_FORMAT)0x8b,
/* DXGI_FORMAT_ASTC_5X5_TYPELESS */ (DXGI_FORMAT)0x8d,
/* DXGI_FORMAT_ASTC_5X5_UNORM */ (DXGI_FORMAT)0x8e,
/* DXGI_FORMAT_ASTC_5X5_UNORM_SRGB */ (DXGI_FORMAT)0x8f,
/* DXGI_FORMAT_ASTC_5X5_FLOAT */ (DXGI_FORMAT)0x90,
/* DXGI_FORMAT_ASTC_6X5_TYPELESS */ (DXGI_FORMAT)0x91,
/* DXGI_FORMAT_ASTC_6X5_UNORM */ (DXGI_FORMAT)0x92,
/* DXGI_FORMAT_ASTC_6X5_UNORM_SRGB */ (DXGI_FORMAT)0x93,
/* DXGI_FORMAT_ASTC_6X5_FLOAT */ (DXGI_FORMAT)0x94,
/* DXGI_FORMAT_ASTC_6X6_TYPELESS */ (DXGI_FORMAT)0x95,
/* DXGI_FORMAT_ASTC_6X6_UNORM */ (DXGI_FORMAT)0x96,
/* DXGI_FORMAT_ASTC_6X6_UNORM_SRGB */ (DXGI_FORMAT)0x97,
/* DXGI_FORMAT_ASTC_6X6_FLOAT */ (DXGI_FORMAT)0x98,
/* DXGI_FORMAT_ASTC_8X5_TYPELESS */ (DXGI_FORMAT)0x99,
/* DXGI_FORMAT_ASTC_8X5_UNORM */ (DXGI_FORMAT)0x9a,
/* DXGI_FORMAT_ASTC_8X5_UNORM_SRGB */ (DXGI_FORMAT)0x9b,
/* DXGI_FORMAT_ASTC_8X5_FLOAT */ (DXGI_FORMAT)0x9c,
/* DXGI_FORMAT_ASTC_8X6_TYPELESS */ (DXGI_FORMAT)0x9d,
/* DXGI_FORMAT_ASTC_8X6_UNORM */ (DXGI_FORMAT)0x9e,
/* DXGI_FORMAT_ASTC_8X6_UNORM_SRGB */ (DXGI_FORMAT)0x9f,
/* DXGI_FORMAT_ASTC_8X6_FLOAT */ (DXGI_FORMAT)0xa0,
/* DXGI_FORMAT_ASTC_8X8_TYPELESS */ (DXGI_FORMAT)0xa1,
/* DXGI_FORMAT_ASTC_8X8_UNORM */ (DXGI_FORMAT)0xa2,
/* DXGI_FORMAT_ASTC_8X8_UNORM_SRGB */ (DXGI_FORMAT)0xa3,
/* DXGI_FORMAT_ASTC_8X8_FLOAT */ (DXGI_FORMAT)0xa4,
/* DXGI_FORMAT_ASTC_10X5_TYPELESS */ (DXGI_FORMAT)0xa5,
/* DXGI_FORMAT_ASTC_10X5_UNORM */ (DXGI_FORMAT)0xa6,
/* DXGI_FORMAT_ASTC_10X5_UNORM_SRGB */ (DXGI_FORMAT)0xa7,
/* DXGI_FORMAT_ASTC_10X5_FLOAT */ (DXGI_FORMAT)0xa8,
/* DXGI_FORMAT_ASTC_10X6_TYPELESS */ (DXGI_FORMAT)0xa9,
/* DXGI_FORMAT_ASTC_10X6_UNORM */ (DXGI_FORMAT)0xaa,
/* DXGI_FORMAT_ASTC_10X6_UNORM_SRGB */ (DXGI_FORMAT)0xab,
/* DXGI_FORMAT_ASTC_10X6_FLOAT */ (DXGI_FORMAT)0xac,
/* DXGI_FORMAT_ASTC_10X8_TYPELESS */ (DXGI_FORMAT)0xad,
/* DXGI_FORMAT_ASTC_10X8_UNORM */ (DXGI_FORMAT)0xae,
/* DXGI_FORMAT_ASTC_10X8_UNORM_SRGB */ (DXGI_FORMAT)0xaf,
/* DXGI_FORMAT_ASTC_10X8_FLOAT */ (DXGI_FORMAT)0xb0,
/* DXGI_FORMAT_ASTC_10X10_TYPELESS */ (DXGI_FORMAT)0xb1,
/* DXGI_FORMAT_ASTC_10X10_UNORM */ (DXGI_FORMAT)0xb2,
/* DXGI_FORMAT_ASTC_10X10_UNORM_SRGB */ (DXGI_FORMAT)0xb3,
/* DXGI_FORMAT_ASTC_10X10_FLOAT */ (DXGI_FORMAT)0xb4,
/* DXGI_FORMAT_ASTC_12X10_TYPELESS */ (DXGI_FORMAT)0xb5,
/* DXGI_FORMAT_ASTC_12X10_UNORM */ (DXGI_FORMAT)0xb6,
/* DXGI_FORMAT_ASTC_12X10_UNORM_SRGB */ (DXGI_FORMAT)0xb7,
/* DXGI_FORMAT_ASTC_12X10_FLOAT */ (DXGI_FORMAT)0xb8,
/* DXGI_FORMAT_ASTC_12X12_TYPELESS */ (DXGI_FORMAT)0xb9,
/* DXGI_FORMAT_ASTC_12X12_UNORM */ (DXGI_FORMAT)0xba,
/* DXGI_FORMAT_ASTC_12X12_UNORM_SRGB */ (DXGI_FORMAT)0xbb,
/* DXGI_FORMAT_ASTC_12X12_FLOAT */ (DXGI_FORMAT)0xbc,
DXGI_FORMAT_SAMPLER_FEEDBACK_MIN_MIP_OPAQUE,
DXGI_FORMAT_SAMPLER_FEEDBACK_MIP_REGION_USED_OPAQUE,
};
Expand Down Expand Up @@ -604,15 +659,23 @@ void test_format_support(void)

if (!unspecified_format)
{
for (j = 0; j < ARRAY_SIZE(dxgi_format_list[k].optional_formats); ++j)
/* ASTC format are optional */
if (all_formats[i] >= /* DXGI_FORMAT_ASTC_4X4_TYPELESS */ (DXGI_FORMAT)0x85 &&
all_formats[i] <= /* DXGI_FORMAT_ASTC_12X12_FLOAT */ (DXGI_FORMAT)0xbc)
optional_format = true;

if (!optional_format)
{
// Fixed size list with only part of the list filled
if (dxgi_format_list[k].optional_formats[j] == DXGI_FORMAT_UNKNOWN)
break;
if (dxgi_format_list[k].optional_formats[j] == all_formats[i])
for (j = 0; j < ARRAY_SIZE(dxgi_format_list[k].optional_formats); ++j)
{
optional_format = true;
break;
// Fixed size list with only part of the list filled
if (dxgi_format_list[k].optional_formats[j] == DXGI_FORMAT_UNKNOWN)
break;
if (dxgi_format_list[k].optional_formats[j] == all_formats[i])
{
optional_format = true;
break;
}
}
}
}
Expand Down

0 comments on commit 44e5b0a

Please sign in to comment.