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