Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/ValveSoftware/vkd3d.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilip Rebohle <philip.rebohle@tu-dortmund.de>2021-11-23 19:37:08 +0300
committerHans-Kristian Arntzen <post@arntzen-software.no>2021-11-26 18:51:01 +0300
commit42b8fc333894b0c7dbae16b19f1e4a75cf79ea5f (patch)
treef866d681afcbd5f1ed65420e8c131ef85dcd12c0
parent6a7eee33b57f90414ebbba6953faf963a1cc8105 (diff)
vkd3d: Introduce new format compatibility table.
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
-rw-r--r--libs/vkd3d/utils.c233
1 files changed, 233 insertions, 0 deletions
diff --git a/libs/vkd3d/utils.c b/libs/vkd3d/utils.c
index af44d39c..e46dd5f6 100644
--- a/libs/vkd3d/utils.c
+++ b/libs/vkd3d/utils.c
@@ -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;