d3d12: Generate format table using a macro list

Reviewed-by: Bill Kristiansen <billkris@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13054>
This commit is contained in:
Jesse Natalie
2021-11-17 15:29:03 -08:00
committed by Marge Bot
parent 25bcc56027
commit ca7d4fcb3f

View File

@@ -60,99 +60,102 @@
#define MAP_FORMAT_X8(BITS, TYPE) \ #define MAP_FORMAT_X8(BITS, TYPE) \
MAP_FORMAT2(BITS ## X8, TYPE, BITS ## A8, TYPE) \ MAP_FORMAT2(BITS ## X8, TYPE, BITS ## A8, TYPE) \
static const DXGI_FORMAT formats[PIPE_FORMAT_COUNT] = { #define FORMAT_TABLE() \
MAP_FORMAT_NORM(R8) MAP_FORMAT_NORM(R8) \
MAP_FORMAT_INT(R8) MAP_FORMAT_INT(R8) \
\
MAP_FORMAT_NORM(R8G8) MAP_FORMAT_NORM(R8G8) \
MAP_FORMAT_INT(R8G8) MAP_FORMAT_INT(R8G8) \
\
MAP_FORMAT_NORM(R8G8B8A8) MAP_FORMAT_NORM(R8G8B8A8) \
MAP_FORMAT_INT(R8G8B8A8) MAP_FORMAT_INT(R8G8B8A8) \
MAP_FORMAT_SRGB(R8G8B8A8) MAP_FORMAT_SRGB(R8G8B8A8) \
\
/* Since we report PIPE_CAP_RGB_OVERRIDE_DST_ALPHA_BLEND and other caps, /* Since we report PIPE_CAP_RGB_OVERRIDE_DST_ALPHA_BLEND and other caps, \
* we can rely on st/mesa to force the alpha to 1 for these, so we can * we can rely on st/mesa to force the alpha to 1 for these, so we can \
* just use RGBA. This is needed to support RGB configs, since some apps * just use RGBA. This is needed to support RGB configs, since some apps \
* will only choose RGB (not RGBA) configs. * will only choose RGB (not RGBA) configs. \
*/ */ \
MAP_FORMAT_X8(R8G8B8, UNORM) MAP_FORMAT_X8(R8G8B8, UNORM) \
MAP_FORMAT_X8(R8G8B8, SNORM) MAP_FORMAT_X8(R8G8B8, SNORM) \
MAP_FORMAT_X8(R8G8B8, UINT) MAP_FORMAT_X8(R8G8B8, UINT) \
MAP_FORMAT_X8(R8G8B8, SINT) MAP_FORMAT_X8(R8G8B8, SINT) \
\
MAP_FORMAT(B8G8R8X8, UNORM) MAP_FORMAT(B8G8R8X8, UNORM) \
MAP_FORMAT(B8G8R8A8, UNORM) MAP_FORMAT(B8G8R8A8, UNORM) \
\
MAP_FORMAT_SRGB(B8G8R8A8) MAP_FORMAT_SRGB(B8G8R8A8) \
\
MAP_FORMAT_INT(R32) MAP_FORMAT_INT(R32) \
MAP_FORMAT_FLOAT(R32) MAP_FORMAT_FLOAT(R32) \
MAP_FORMAT_INT(R32G32) MAP_FORMAT_INT(R32G32) \
MAP_FORMAT_FLOAT(R32G32) MAP_FORMAT_FLOAT(R32G32) \
MAP_FORMAT_INT(R32G32B32) MAP_FORMAT_INT(R32G32B32) \
MAP_FORMAT_FLOAT(R32G32B32) MAP_FORMAT_FLOAT(R32G32B32) \
MAP_FORMAT_INT(R32G32B32A32) MAP_FORMAT_INT(R32G32B32A32) \
MAP_FORMAT_FLOAT(R32G32B32A32) MAP_FORMAT_FLOAT(R32G32B32A32) \
\
MAP_FORMAT_NORM(R16) MAP_FORMAT_NORM(R16) \
MAP_FORMAT_INT(R16) MAP_FORMAT_INT(R16) \
MAP_FORMAT_FLOAT(R16) MAP_FORMAT_FLOAT(R16) \
\
MAP_FORMAT_NORM(R16G16) MAP_FORMAT_NORM(R16G16) \
MAP_FORMAT_INT(R16G16) MAP_FORMAT_INT(R16G16) \
MAP_FORMAT_FLOAT(R16G16) MAP_FORMAT_FLOAT(R16G16) \
\
MAP_FORMAT_NORM(R16G16B16A16) MAP_FORMAT_NORM(R16G16B16A16) \
MAP_FORMAT_INT(R16G16B16A16) MAP_FORMAT_INT(R16G16B16A16) \
MAP_FORMAT_FLOAT(R16G16B16A16) MAP_FORMAT_FLOAT(R16G16B16A16) \
\
MAP_FORMAT(A8, UNORM) MAP_FORMAT(A8, UNORM) \
MAP_EMU_FORMAT_NO_ALPHA(8, UNORM) MAP_EMU_FORMAT_NO_ALPHA(8, UNORM) \
MAP_EMU_FORMAT(8, SNORM) MAP_EMU_FORMAT(8, SNORM) \
MAP_EMU_FORMAT(8, SINT) MAP_EMU_FORMAT(8, SINT) \
MAP_EMU_FORMAT(8, UINT) MAP_EMU_FORMAT(8, UINT) \
MAP_EMU_FORMAT(16, UNORM) MAP_EMU_FORMAT(16, UNORM) \
MAP_EMU_FORMAT(16, SNORM) MAP_EMU_FORMAT(16, SNORM) \
MAP_EMU_FORMAT(16, SINT) MAP_EMU_FORMAT(16, SINT) \
MAP_EMU_FORMAT(16, UINT) MAP_EMU_FORMAT(16, UINT) \
MAP_EMU_FORMAT(16, FLOAT) MAP_EMU_FORMAT(16, FLOAT) \
MAP_EMU_FORMAT(32, SINT) MAP_EMU_FORMAT(32, SINT) \
MAP_EMU_FORMAT(32, UINT) MAP_EMU_FORMAT(32, UINT) \
MAP_EMU_FORMAT(32, FLOAT) MAP_EMU_FORMAT(32, FLOAT) \
\
MAP_FORMAT2(R9G9B9E5, FLOAT, R9G9B9E5, SHAREDEXP) MAP_FORMAT2(R9G9B9E5, FLOAT, R9G9B9E5, SHAREDEXP) \
MAP_FORMAT(R11G11B10, FLOAT) MAP_FORMAT(R11G11B10, FLOAT) \
MAP_FORMAT(R10G10B10A2, UINT) MAP_FORMAT(R10G10B10A2, UINT) \
MAP_FORMAT(R10G10B10A2, UNORM) MAP_FORMAT(R10G10B10A2, UNORM) \
\
MAP_FORMAT(B5G6R5, UNORM) MAP_FORMAT(B5G6R5, UNORM) \
MAP_FORMAT(B5G5R5A1, UNORM) MAP_FORMAT(B5G5R5A1, UNORM) \
MAP_FORMAT2(B5G5R5X1, UNORM, B5G5R5A1, UNORM) MAP_FORMAT2(B5G5R5X1, UNORM, B5G5R5A1, UNORM) \
\
MAP_FORMAT2(DXT1, RGB, BC1, UNORM) MAP_FORMAT2(DXT1, RGB, BC1, UNORM) \
MAP_FORMAT2(DXT1, RGBA, BC1, UNORM) MAP_FORMAT2(DXT1, RGBA, BC1, UNORM) \
MAP_FORMAT2(DXT3, RGBA, BC2, UNORM) MAP_FORMAT2(DXT3, RGBA, BC2, UNORM) \
MAP_FORMAT2(DXT5, RGBA, BC3, UNORM) MAP_FORMAT2(DXT5, RGBA, BC3, UNORM) \
\
MAP_FORMAT2(DXT1, SRGB, BC1, UNORM_SRGB) MAP_FORMAT2(DXT1, SRGB, BC1, UNORM_SRGB) \
MAP_FORMAT2(DXT1, SRGBA, BC1, UNORM_SRGB) MAP_FORMAT2(DXT1, SRGBA, BC1, UNORM_SRGB) \
MAP_FORMAT2(DXT3, SRGBA, BC2, UNORM_SRGB) MAP_FORMAT2(DXT3, SRGBA, BC2, UNORM_SRGB) \
MAP_FORMAT2(DXT5, SRGBA, BC3, UNORM_SRGB) MAP_FORMAT2(DXT5, SRGBA, BC3, UNORM_SRGB) \
\
MAP_FORMAT2(RGTC1, UNORM, BC4, UNORM) MAP_FORMAT2(RGTC1, UNORM, BC4, UNORM) \
MAP_FORMAT2(RGTC1, SNORM, BC4, SNORM) MAP_FORMAT2(RGTC1, SNORM, BC4, SNORM) \
MAP_FORMAT2(RGTC2, UNORM, BC5, UNORM) MAP_FORMAT2(RGTC2, UNORM, BC5, UNORM) \
MAP_FORMAT2(RGTC2, SNORM, BC5, SNORM) MAP_FORMAT2(RGTC2, SNORM, BC5, SNORM) \
\
MAP_FORMAT2(Z32, FLOAT, R32, TYPELESS) MAP_FORMAT2(Z32, FLOAT, R32, TYPELESS) \
MAP_FORMAT2(Z16, UNORM, R16, TYPELESS) MAP_FORMAT2(Z16, UNORM, R16, TYPELESS) \
MAP_FORMAT2(Z24X8, UNORM, R24G8, TYPELESS) MAP_FORMAT2(Z24X8, UNORM, R24G8, TYPELESS) \
MAP_FORMAT2(X24S8, UINT, R24G8, TYPELESS) MAP_FORMAT2(X24S8, UINT, R24G8, TYPELESS) \
\
MAP_FORMAT2(Z24_UNORM_S8, UINT, R24G8, TYPELESS) MAP_FORMAT2(Z24_UNORM_S8, UINT, R24G8, TYPELESS) \
MAP_FORMAT2(Z32_FLOAT_S8X24, UINT, R32G8X24, TYPELESS) MAP_FORMAT2(Z32_FLOAT_S8X24, UINT, R32G8X24, TYPELESS) \
MAP_FORMAT2(X32_S8X24, UINT, R32G8X24, TYPELESS) MAP_FORMAT2(X32_S8X24, UINT, R32G8X24, TYPELESS)
static const DXGI_FORMAT formats[PIPE_FORMAT_COUNT] = {
FORMAT_TABLE()
}; };
DXGI_FORMAT DXGI_FORMAT