vkd3d: Introduce new format compatibility table.

Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
This commit is contained in:
Philip Rebohle 2021-11-23 17:37:08 +01:00 committed by Hans-Kristian Arntzen
parent 6a7eee33b5
commit 42b8fc3338
1 changed files with 233 additions and 0 deletions

View File

@ -153,6 +153,239 @@ static const struct vkd3d_format vkd3d_depth_stencil_formats[] =
#undef SINT
#undef UINT
static const struct vkd3d_format_compatibility_info_2
{
DXGI_FORMAT image_format;
DXGI_FORMAT view_formats[VKD3D_MAX_COMPATIBLE_FORMAT_COUNT];
DXGI_FORMAT uint_format; /* for ClearUAVUint */
}
vkd3d_format_compatibility_info_2[] =
{
{DXGI_FORMAT_R32G32B32A32_TYPELESS,
{DXGI_FORMAT_R32G32B32A32_FLOAT, DXGI_FORMAT_R32G32B32A32_UINT, DXGI_FORMAT_R32G32B32A32_SINT},
DXGI_FORMAT_R32G32B32A32_UINT},
{DXGI_FORMAT_R32G32B32A32_FLOAT, {},
DXGI_FORMAT_R32G32B32A32_UINT},
{DXGI_FORMAT_R32G32B32A32_UINT,
{DXGI_FORMAT_R32G32B32A32_SINT},
DXGI_FORMAT_R32G32B32A32_UINT},
{DXGI_FORMAT_R32G32B32A32_SINT,
{DXGI_FORMAT_R32G32B32A32_UINT},
DXGI_FORMAT_R32G32B32A32_UINT},
{DXGI_FORMAT_R32G32B32_TYPELESS,
{DXGI_FORMAT_R32G32B32_FLOAT, DXGI_FORMAT_R32G32B32_UINT, DXGI_FORMAT_R32G32B32_SINT},
DXGI_FORMAT_R32G32B32_UINT},
{DXGI_FORMAT_R32G32B32_FLOAT, {},
DXGI_FORMAT_R32G32B32_UINT},
{DXGI_FORMAT_R32G32B32_UINT,
{DXGI_FORMAT_R32G32B32_SINT},
DXGI_FORMAT_R32G32B32_UINT},
{DXGI_FORMAT_R32G32B32_SINT,
{DXGI_FORMAT_R32G32B32_UINT},
DXGI_FORMAT_R32G32B32_UINT},
{DXGI_FORMAT_R16G16B16A16_TYPELESS,
{DXGI_FORMAT_R16G16B16A16_FLOAT, DXGI_FORMAT_R16G16B16A16_UNORM, DXGI_FORMAT_R16G16B16A16_SNORM, DXGI_FORMAT_R16G16B16A16_UINT, DXGI_FORMAT_R16G16B16A16_SINT},
DXGI_FORMAT_R16G16B16A16_UINT},
{DXGI_FORMAT_R16G16B16A16_FLOAT, {},
DXGI_FORMAT_R16G16B16A16_UINT},
{DXGI_FORMAT_R16G16B16A16_UINT,
{DXGI_FORMAT_R16G16B16A16_SINT, DXGI_FORMAT_R16G16B16A16_UNORM, DXGI_FORMAT_R16G16B16A16_SNORM},
DXGI_FORMAT_R16G16B16A16_UINT},
{DXGI_FORMAT_R16G16B16A16_SINT,
{DXGI_FORMAT_R16G16B16A16_UINT, DXGI_FORMAT_R16G16B16A16_UNORM, DXGI_FORMAT_R16G16B16A16_SNORM},
DXGI_FORMAT_R16G16B16A16_UINT},
{DXGI_FORMAT_R16G16B16A16_UNORM,
{DXGI_FORMAT_R16G16B16A16_UINT, DXGI_FORMAT_R16G16B16A16_SINT},
DXGI_FORMAT_R16G16B16A16_UINT},
{DXGI_FORMAT_R16G16B16A16_SNORM,
{DXGI_FORMAT_R16G16B16A16_UINT, DXGI_FORMAT_R16G16B16A16_SINT},
DXGI_FORMAT_R16G16B16A16_UINT},
{DXGI_FORMAT_R32G32_TYPELESS,
{DXGI_FORMAT_R32G32_FLOAT, DXGI_FORMAT_R32G32_UINT, DXGI_FORMAT_R32G32_SINT},
DXGI_FORMAT_R32G32_UINT},
{DXGI_FORMAT_R32G32_FLOAT, {},
DXGI_FORMAT_R32G32_UINT},
{DXGI_FORMAT_R32G32_UINT,
{DXGI_FORMAT_R32G32_SINT},
DXGI_FORMAT_R32G32_UINT},
{DXGI_FORMAT_R32G32_SINT,
{DXGI_FORMAT_R32G32_UINT},
DXGI_FORMAT_R32G32_UINT},
{DXGI_FORMAT_R10G10B10A2_TYPELESS,
{DXGI_FORMAT_R10G10B10A2_UNORM, DXGI_FORMAT_R10G10B10A2_UINT},
DXGI_FORMAT_R10G10B10A2_UINT},
{DXGI_FORMAT_R10G10B10A2_UINT,
{DXGI_FORMAT_R10G10B10A2_UNORM},
DXGI_FORMAT_R10G10B10A2_UINT},
{DXGI_FORMAT_R10G10B10A2_UNORM,
{DXGI_FORMAT_R10G10B10A2_UINT},
DXGI_FORMAT_R10G10B10A2_UINT},
{DXGI_FORMAT_R11G11B10_FLOAT, {},
DXGI_FORMAT_R32_UINT},
{DXGI_FORMAT_R8G8_TYPELESS,
{DXGI_FORMAT_R8G8_UINT, DXGI_FORMAT_R8G8_SINT, DXGI_FORMAT_R8G8_UNORM, DXGI_FORMAT_R8G8_SNORM},
DXGI_FORMAT_R8G8_UINT},
{DXGI_FORMAT_R8G8_UINT,
{DXGI_FORMAT_R8G8_SINT, DXGI_FORMAT_R8G8_UNORM, DXGI_FORMAT_R8G8_SNORM},
DXGI_FORMAT_R8G8_UINT},
{DXGI_FORMAT_R8G8_SINT,
{DXGI_FORMAT_R8G8_UINT, DXGI_FORMAT_R8G8_UNORM, DXGI_FORMAT_R8G8_SNORM},
DXGI_FORMAT_R8G8_UINT},
{DXGI_FORMAT_R8G8_UNORM,
{DXGI_FORMAT_R8G8_UINT, DXGI_FORMAT_R8G8_SINT},
DXGI_FORMAT_R8G8_UINT},
{DXGI_FORMAT_R8G8_SNORM,
{DXGI_FORMAT_R8G8_UINT, DXGI_FORMAT_R8G8_SINT},
DXGI_FORMAT_R8G8_UINT},
{DXGI_FORMAT_R8G8B8A8_TYPELESS,
{DXGI_FORMAT_R8G8B8A8_UINT, DXGI_FORMAT_R8G8B8A8_SINT, DXGI_FORMAT_R8G8B8A8_UNORM, DXGI_FORMAT_R8G8B8A8_UNORM_SRGB, DXGI_FORMAT_R8G8B8A8_SNORM},
DXGI_FORMAT_R8G8B8A8_UINT},
{DXGI_FORMAT_R8G8B8A8_UINT,
{DXGI_FORMAT_R8G8B8A8_SINT, DXGI_FORMAT_R8G8B8A8_UNORM, DXGI_FORMAT_R8G8B8A8_UNORM_SRGB, DXGI_FORMAT_R8G8B8A8_SNORM},
DXGI_FORMAT_R8G8B8A8_UINT},
{DXGI_FORMAT_R8G8B8A8_SINT,
{DXGI_FORMAT_R8G8B8A8_UINT, DXGI_FORMAT_R8G8B8A8_UNORM, DXGI_FORMAT_R8G8B8A8_UNORM_SRGB, DXGI_FORMAT_R8G8B8A8_SNORM},
DXGI_FORMAT_R8G8B8A8_UINT},
{DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
{DXGI_FORMAT_R8G8B8A8_UINT, DXGI_FORMAT_R8G8B8A8_SINT, DXGI_FORMAT_R8G8B8A8_UNORM},
DXGI_FORMAT_R8G8B8A8_UINT},
{DXGI_FORMAT_R8G8B8A8_UNORM,
{DXGI_FORMAT_R8G8B8A8_UINT, DXGI_FORMAT_R8G8B8A8_SINT, DXGI_FORMAT_R8G8B8A8_UNORM_SRGB},
DXGI_FORMAT_R8G8B8A8_UINT},
{DXGI_FORMAT_R8G8B8A8_SNORM,
{DXGI_FORMAT_R8G8B8A8_UINT, DXGI_FORMAT_R8G8B8A8_SINT},
DXGI_FORMAT_R8G8B8A8_UINT},
{DXGI_FORMAT_R16G16_TYPELESS,
{DXGI_FORMAT_R16G16_FLOAT, DXGI_FORMAT_R16G16_UINT, DXGI_FORMAT_R16G16_SINT, DXGI_FORMAT_R16G16_UNORM, DXGI_FORMAT_R16G16_SNORM},
DXGI_FORMAT_R16G16_UINT},
{DXGI_FORMAT_R16G16_FLOAT, {},
DXGI_FORMAT_R16G16_UINT},
{DXGI_FORMAT_R16G16_UINT,
{DXGI_FORMAT_R16G16_SINT, DXGI_FORMAT_R16G16_UNORM, DXGI_FORMAT_R16G16_SNORM},
DXGI_FORMAT_R16G16_UINT},
{DXGI_FORMAT_R16G16_SINT,
{DXGI_FORMAT_R16G16_UINT, DXGI_FORMAT_R16G16_UNORM, DXGI_FORMAT_R16G16_SNORM},
DXGI_FORMAT_R16G16_UINT},
{DXGI_FORMAT_R16G16_UNORM,
{DXGI_FORMAT_R16G16_UINT, DXGI_FORMAT_R16G16_SINT},
DXGI_FORMAT_R16G16_UINT},
{DXGI_FORMAT_R16G16_SNORM,
{DXGI_FORMAT_R16G16_UINT, DXGI_FORMAT_R16G16_SINT},
DXGI_FORMAT_R16G16_UINT},
{DXGI_FORMAT_R32_TYPELESS,
{DXGI_FORMAT_R32_FLOAT, DXGI_FORMAT_R32_UINT, DXGI_FORMAT_R32_SINT},
DXGI_FORMAT_R32_UINT},
{DXGI_FORMAT_R32_FLOAT, {},
DXGI_FORMAT_R32_UINT},
{DXGI_FORMAT_R32_UINT,
{DXGI_FORMAT_R32_SINT},
DXGI_FORMAT_R32_UINT},
{DXGI_FORMAT_R32_SINT,
{DXGI_FORMAT_R32_UINT},
DXGI_FORMAT_R32_UINT},
{DXGI_FORMAT_R16_TYPELESS,
{DXGI_FORMAT_R16_FLOAT, DXGI_FORMAT_R16_UINT, DXGI_FORMAT_R16_SINT, DXGI_FORMAT_R16_UNORM, DXGI_FORMAT_R16_SNORM},
DXGI_FORMAT_R16_UINT},
{DXGI_FORMAT_R16_FLOAT, {},
DXGI_FORMAT_R16_UINT},
{DXGI_FORMAT_R16_UINT,
{DXGI_FORMAT_R16_SINT, DXGI_FORMAT_R16_UNORM, DXGI_FORMAT_R16_SNORM},
DXGI_FORMAT_R16_UINT},
{DXGI_FORMAT_R16_SINT,
{DXGI_FORMAT_R16_UINT, DXGI_FORMAT_R16_UNORM, DXGI_FORMAT_R16_SNORM},
DXGI_FORMAT_R16_UINT},
{DXGI_FORMAT_R16_UNORM,
{DXGI_FORMAT_R16_UINT, DXGI_FORMAT_R16_SINT},
DXGI_FORMAT_R16_UINT},
{DXGI_FORMAT_R16_SNORM,
{DXGI_FORMAT_R16_UINT, DXGI_FORMAT_R16_SINT},
DXGI_FORMAT_R16_UINT},
{DXGI_FORMAT_R8_TYPELESS,
{DXGI_FORMAT_R8_UINT, DXGI_FORMAT_R8_SINT, DXGI_FORMAT_R8_UNORM, DXGI_FORMAT_R8_SNORM, DXGI_FORMAT_A8_UNORM},
DXGI_FORMAT_R8_UINT},
{DXGI_FORMAT_R8_UINT,
{DXGI_FORMAT_R8_SINT, DXGI_FORMAT_R8_UNORM, DXGI_FORMAT_R8_SNORM, DXGI_FORMAT_A8_UNORM},
DXGI_FORMAT_R8_UINT},
{DXGI_FORMAT_R8_SINT,
{DXGI_FORMAT_R8_UINT, DXGI_FORMAT_R8_UNORM, DXGI_FORMAT_R8_SNORM, DXGI_FORMAT_A8_UNORM},
DXGI_FORMAT_R8_UINT},
{DXGI_FORMAT_R8_UNORM,
{DXGI_FORMAT_R8_UINT, DXGI_FORMAT_R8_SINT, DXGI_FORMAT_A8_UNORM},
DXGI_FORMAT_R8_UINT},
{DXGI_FORMAT_R8_SNORM,
{DXGI_FORMAT_R8_UINT, DXGI_FORMAT_R8_SINT},
DXGI_FORMAT_R8_UINT},
{DXGI_FORMAT_A8_UNORM,
{DXGI_FORMAT_R8_UINT, DXGI_FORMAT_R8_SINT, DXGI_FORMAT_R8_UNORM},
DXGI_FORMAT_R8_UINT},
{DXGI_FORMAT_B8G8R8A8_TYPELESS,
{DXGI_FORMAT_B8G8R8A8_UNORM, DXGI_FORMAT_B8G8R8A8_UNORM_SRGB},
DXGI_FORMAT_R8G8B8A8_UINT},
{DXGI_FORMAT_B8G8R8A8_UNORM,
{DXGI_FORMAT_B8G8R8A8_UNORM_SRGB},
DXGI_FORMAT_R8G8B8A8_UINT},
{DXGI_FORMAT_B8G8R8A8_UNORM_SRGB,
{DXGI_FORMAT_B8G8R8A8_UNORM},
DXGI_FORMAT_R8G8B8A8_UINT},
{DXGI_FORMAT_B8G8R8X8_TYPELESS,
{DXGI_FORMAT_B8G8R8X8_UNORM, DXGI_FORMAT_B8G8R8X8_UNORM_SRGB},
DXGI_FORMAT_R8G8B8A8_UINT},
{DXGI_FORMAT_B8G8R8X8_UNORM,
{DXGI_FORMAT_B8G8R8X8_UNORM_SRGB},
DXGI_FORMAT_R8G8B8A8_UINT},
{DXGI_FORMAT_B8G8R8X8_UNORM_SRGB,
{DXGI_FORMAT_B8G8R8X8_UNORM},
DXGI_FORMAT_R8G8B8A8_UINT},
{DXGI_FORMAT_BC1_TYPELESS,
{DXGI_FORMAT_BC1_UNORM, DXGI_FORMAT_BC1_UNORM_SRGB}},
{DXGI_FORMAT_BC1_UNORM,
{DXGI_FORMAT_BC1_UNORM_SRGB}},
{DXGI_FORMAT_BC1_UNORM_SRGB,
{DXGI_FORMAT_BC1_UNORM}},
{DXGI_FORMAT_BC2_TYPELESS,
{DXGI_FORMAT_BC2_UNORM, DXGI_FORMAT_BC2_UNORM_SRGB}},
{DXGI_FORMAT_BC2_UNORM,
{DXGI_FORMAT_BC2_UNORM_SRGB}},
{DXGI_FORMAT_BC2_UNORM_SRGB,
{DXGI_FORMAT_BC2_UNORM}},
{DXGI_FORMAT_BC3_TYPELESS,
{DXGI_FORMAT_BC3_UNORM, DXGI_FORMAT_BC3_UNORM_SRGB}},
{DXGI_FORMAT_BC3_UNORM,
{DXGI_FORMAT_BC3_UNORM_SRGB}},
{DXGI_FORMAT_BC3_UNORM_SRGB,
{DXGI_FORMAT_BC3_UNORM}},
{DXGI_FORMAT_BC4_TYPELESS,
{DXGI_FORMAT_BC4_UNORM, DXGI_FORMAT_BC4_SNORM}},
{DXGI_FORMAT_BC5_TYPELESS,
{DXGI_FORMAT_BC5_UNORM, DXGI_FORMAT_BC5_SNORM}},
{DXGI_FORMAT_BC6H_TYPELESS,
{DXGI_FORMAT_BC6H_UF16, DXGI_FORMAT_BC6H_SF16}},
{DXGI_FORMAT_BC7_TYPELESS,
{DXGI_FORMAT_BC7_UNORM, DXGI_FORMAT_BC7_UNORM_SRGB}},
{DXGI_FORMAT_BC7_UNORM,
{DXGI_FORMAT_BC7_UNORM_SRGB}},
{DXGI_FORMAT_BC7_UNORM_SRGB,
{DXGI_FORMAT_BC7_UNORM}},
};
static const struct vkd3d_format_compatibility_info
{
DXGI_FORMAT format;