Mesa (main): d3d12: Generate format table using a macro list
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Fri Nov 19 23:20:52 UTC 2021
Module: Mesa
Branch: main
Commit: ca7d4fcb3fccda9d01b8843f98afb397f75dcf11
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=ca7d4fcb3fccda9d01b8843f98afb397f75dcf11
Author: Jesse Natalie <jenatali at microsoft.com>
Date: Wed Nov 17 15:29:03 2021 -0800
d3d12: Generate format table using a macro list
Reviewed-by: Bill Kristiansen <billkris at microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13054>
---
src/gallium/drivers/d3d12/d3d12_format.c | 187 ++++++++++++++++---------------
1 file changed, 95 insertions(+), 92 deletions(-)
diff --git a/src/gallium/drivers/d3d12/d3d12_format.c b/src/gallium/drivers/d3d12/d3d12_format.c
index 1bcc57bb211..60a47215b14 100644
--- a/src/gallium/drivers/d3d12/d3d12_format.c
+++ b/src/gallium/drivers/d3d12/d3d12_format.c
@@ -60,99 +60,102 @@
#define MAP_FORMAT_X8(BITS, TYPE) \
MAP_FORMAT2(BITS ## X8, TYPE, BITS ## A8, TYPE) \
-static const DXGI_FORMAT formats[PIPE_FORMAT_COUNT] = {
- MAP_FORMAT_NORM(R8)
- MAP_FORMAT_INT(R8)
-
- MAP_FORMAT_NORM(R8G8)
- MAP_FORMAT_INT(R8G8)
-
- MAP_FORMAT_NORM(R8G8B8A8)
- MAP_FORMAT_INT(R8G8B8A8)
- MAP_FORMAT_SRGB(R8G8B8A8)
-
- /* 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
- * just use RGBA. This is needed to support RGB configs, since some apps
- * will only choose RGB (not RGBA) configs.
- */
- MAP_FORMAT_X8(R8G8B8, UNORM)
- MAP_FORMAT_X8(R8G8B8, SNORM)
- MAP_FORMAT_X8(R8G8B8, UINT)
- MAP_FORMAT_X8(R8G8B8, SINT)
-
- MAP_FORMAT(B8G8R8X8, UNORM)
- MAP_FORMAT(B8G8R8A8, UNORM)
-
- MAP_FORMAT_SRGB(B8G8R8A8)
-
- MAP_FORMAT_INT(R32)
- MAP_FORMAT_FLOAT(R32)
- MAP_FORMAT_INT(R32G32)
- MAP_FORMAT_FLOAT(R32G32)
- MAP_FORMAT_INT(R32G32B32)
- MAP_FORMAT_FLOAT(R32G32B32)
- MAP_FORMAT_INT(R32G32B32A32)
- MAP_FORMAT_FLOAT(R32G32B32A32)
-
- MAP_FORMAT_NORM(R16)
- MAP_FORMAT_INT(R16)
- MAP_FORMAT_FLOAT(R16)
-
- MAP_FORMAT_NORM(R16G16)
- MAP_FORMAT_INT(R16G16)
- MAP_FORMAT_FLOAT(R16G16)
-
- MAP_FORMAT_NORM(R16G16B16A16)
- MAP_FORMAT_INT(R16G16B16A16)
- MAP_FORMAT_FLOAT(R16G16B16A16)
-
- MAP_FORMAT(A8, UNORM)
- MAP_EMU_FORMAT_NO_ALPHA(8, UNORM)
- MAP_EMU_FORMAT(8, SNORM)
- MAP_EMU_FORMAT(8, SINT)
- MAP_EMU_FORMAT(8, UINT)
- MAP_EMU_FORMAT(16, UNORM)
- MAP_EMU_FORMAT(16, SNORM)
- MAP_EMU_FORMAT(16, SINT)
- MAP_EMU_FORMAT(16, UINT)
- MAP_EMU_FORMAT(16, FLOAT)
- MAP_EMU_FORMAT(32, SINT)
- MAP_EMU_FORMAT(32, UINT)
- MAP_EMU_FORMAT(32, FLOAT)
-
- MAP_FORMAT2(R9G9B9E5, FLOAT, R9G9B9E5, SHAREDEXP)
- MAP_FORMAT(R11G11B10, FLOAT)
- MAP_FORMAT(R10G10B10A2, UINT)
- MAP_FORMAT(R10G10B10A2, UNORM)
-
- MAP_FORMAT(B5G6R5, UNORM)
- MAP_FORMAT(B5G5R5A1, UNORM)
- MAP_FORMAT2(B5G5R5X1, UNORM, B5G5R5A1, UNORM)
-
- MAP_FORMAT2(DXT1, RGB, BC1, UNORM)
- MAP_FORMAT2(DXT1, RGBA, BC1, UNORM)
- MAP_FORMAT2(DXT3, RGBA, BC2, UNORM)
- MAP_FORMAT2(DXT5, RGBA, BC3, UNORM)
-
- MAP_FORMAT2(DXT1, SRGB, BC1, UNORM_SRGB)
- MAP_FORMAT2(DXT1, SRGBA, BC1, UNORM_SRGB)
- MAP_FORMAT2(DXT3, SRGBA, BC2, UNORM_SRGB)
- MAP_FORMAT2(DXT5, SRGBA, BC3, UNORM_SRGB)
-
- MAP_FORMAT2(RGTC1, UNORM, BC4, UNORM)
- MAP_FORMAT2(RGTC1, SNORM, BC4, SNORM)
- MAP_FORMAT2(RGTC2, UNORM, BC5, UNORM)
- MAP_FORMAT2(RGTC2, SNORM, BC5, SNORM)
-
- MAP_FORMAT2(Z32, FLOAT, R32, TYPELESS)
- MAP_FORMAT2(Z16, UNORM, R16, TYPELESS)
- MAP_FORMAT2(Z24X8, UNORM, R24G8, TYPELESS)
- MAP_FORMAT2(X24S8, UINT, R24G8, TYPELESS)
-
- MAP_FORMAT2(Z24_UNORM_S8, UINT, R24G8, TYPELESS)
- MAP_FORMAT2(Z32_FLOAT_S8X24, UINT, R32G8X24, TYPELESS)
+#define FORMAT_TABLE() \
+ MAP_FORMAT_NORM(R8) \
+ MAP_FORMAT_INT(R8) \
+\
+ MAP_FORMAT_NORM(R8G8) \
+ MAP_FORMAT_INT(R8G8) \
+\
+ MAP_FORMAT_NORM(R8G8B8A8) \
+ MAP_FORMAT_INT(R8G8B8A8) \
+ MAP_FORMAT_SRGB(R8G8B8A8) \
+\
+ /* 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 \
+ * just use RGBA. This is needed to support RGB configs, since some apps \
+ * will only choose RGB (not RGBA) configs. \
+ */ \
+ MAP_FORMAT_X8(R8G8B8, UNORM) \
+ MAP_FORMAT_X8(R8G8B8, SNORM) \
+ MAP_FORMAT_X8(R8G8B8, UINT) \
+ MAP_FORMAT_X8(R8G8B8, SINT) \
+\
+ MAP_FORMAT(B8G8R8X8, UNORM) \
+ MAP_FORMAT(B8G8R8A8, UNORM) \
+\
+ MAP_FORMAT_SRGB(B8G8R8A8) \
+\
+ MAP_FORMAT_INT(R32) \
+ MAP_FORMAT_FLOAT(R32) \
+ MAP_FORMAT_INT(R32G32) \
+ MAP_FORMAT_FLOAT(R32G32) \
+ MAP_FORMAT_INT(R32G32B32) \
+ MAP_FORMAT_FLOAT(R32G32B32) \
+ MAP_FORMAT_INT(R32G32B32A32) \
+ MAP_FORMAT_FLOAT(R32G32B32A32) \
+\
+ MAP_FORMAT_NORM(R16) \
+ MAP_FORMAT_INT(R16) \
+ MAP_FORMAT_FLOAT(R16) \
+\
+ MAP_FORMAT_NORM(R16G16) \
+ MAP_FORMAT_INT(R16G16) \
+ MAP_FORMAT_FLOAT(R16G16) \
+\
+ MAP_FORMAT_NORM(R16G16B16A16) \
+ MAP_FORMAT_INT(R16G16B16A16) \
+ MAP_FORMAT_FLOAT(R16G16B16A16) \
+\
+ MAP_FORMAT(A8, UNORM) \
+ MAP_EMU_FORMAT_NO_ALPHA(8, UNORM) \
+ MAP_EMU_FORMAT(8, SNORM) \
+ MAP_EMU_FORMAT(8, SINT) \
+ MAP_EMU_FORMAT(8, UINT) \
+ MAP_EMU_FORMAT(16, UNORM) \
+ MAP_EMU_FORMAT(16, SNORM) \
+ MAP_EMU_FORMAT(16, SINT) \
+ MAP_EMU_FORMAT(16, UINT) \
+ MAP_EMU_FORMAT(16, FLOAT) \
+ MAP_EMU_FORMAT(32, SINT) \
+ MAP_EMU_FORMAT(32, UINT) \
+ MAP_EMU_FORMAT(32, FLOAT) \
+\
+ MAP_FORMAT2(R9G9B9E5, FLOAT, R9G9B9E5, SHAREDEXP) \
+ MAP_FORMAT(R11G11B10, FLOAT) \
+ MAP_FORMAT(R10G10B10A2, UINT) \
+ MAP_FORMAT(R10G10B10A2, UNORM) \
+\
+ MAP_FORMAT(B5G6R5, UNORM) \
+ MAP_FORMAT(B5G5R5A1, UNORM) \
+ MAP_FORMAT2(B5G5R5X1, UNORM, B5G5R5A1, UNORM) \
+\
+ MAP_FORMAT2(DXT1, RGB, BC1, UNORM) \
+ MAP_FORMAT2(DXT1, RGBA, BC1, UNORM) \
+ MAP_FORMAT2(DXT3, RGBA, BC2, UNORM) \
+ MAP_FORMAT2(DXT5, RGBA, BC3, UNORM) \
+\
+ MAP_FORMAT2(DXT1, SRGB, BC1, UNORM_SRGB) \
+ MAP_FORMAT2(DXT1, SRGBA, BC1, UNORM_SRGB) \
+ MAP_FORMAT2(DXT3, SRGBA, BC2, UNORM_SRGB) \
+ MAP_FORMAT2(DXT5, SRGBA, BC3, UNORM_SRGB) \
+\
+ MAP_FORMAT2(RGTC1, UNORM, BC4, UNORM) \
+ MAP_FORMAT2(RGTC1, SNORM, BC4, SNORM) \
+ MAP_FORMAT2(RGTC2, UNORM, BC5, UNORM) \
+ MAP_FORMAT2(RGTC2, SNORM, BC5, SNORM) \
+\
+ MAP_FORMAT2(Z32, FLOAT, R32, TYPELESS) \
+ MAP_FORMAT2(Z16, UNORM, R16, TYPELESS) \
+ MAP_FORMAT2(Z24X8, UNORM, R24G8, TYPELESS) \
+ MAP_FORMAT2(X24S8, UINT, R24G8, TYPELESS) \
+\
+ MAP_FORMAT2(Z24_UNORM_S8, UINT, R24G8, TYPELESS) \
+ MAP_FORMAT2(Z32_FLOAT_S8X24, UINT, R32G8X24, TYPELESS) \
MAP_FORMAT2(X32_S8X24, UINT, R32G8X24, TYPELESS)
+
+static const DXGI_FORMAT formats[PIPE_FORMAT_COUNT] = {
+ FORMAT_TABLE()
};
DXGI_FORMAT
More information about the mesa-commit
mailing list