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:
@@ -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
|
||||||
|
Reference in New Issue
Block a user