Mesa (main): d3d12: Make format list all use macros

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Fri Nov 19 23:20:52 UTC 2021


Module: Mesa
Branch: main
Commit: 25bcc56027e31dccabf209399e2c692bf0f4ad52
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=25bcc56027e31dccabf209399e2c692bf0f4ad52

Author: Jesse Natalie <jenatali at microsoft.com>
Date:   Wed Nov 17 15:23:54 2021 -0800

d3d12: Make format list all use macros

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 | 110 +++++++++++++++++--------------
 1 file changed, 59 insertions(+), 51 deletions(-)

diff --git a/src/gallium/drivers/d3d12/d3d12_format.c b/src/gallium/drivers/d3d12/d3d12_format.c
index d49c3b00c1f..1bcc57bb211 100644
--- a/src/gallium/drivers/d3d12/d3d12_format.c
+++ b/src/gallium/drivers/d3d12/d3d12_format.c
@@ -28,31 +28,39 @@
 #include "util/u_math.h"
 #include "util/compiler.h"
 
-static const DXGI_FORMAT formats[PIPE_FORMAT_COUNT] = {
+#define MAP_FORMAT(BITS, TYPE) \
+   [PIPE_FORMAT_ ## BITS ## _ ## TYPE] = DXGI_FORMAT_ ## BITS ## _ ## TYPE,
+
+#define MAP_FORMAT2(BITS1, TYPE1, BITS2, TYPE2) \
+   [PIPE_FORMAT_ ## BITS1 ## _ ## TYPE1] = DXGI_FORMAT_ ## BITS2 ## _ ## TYPE2,
+
 #define MAP_FORMAT_NORM(FMT) \
-   [PIPE_FORMAT_ ## FMT ## _UNORM] = DXGI_FORMAT_ ## FMT ## _UNORM, \
-   [PIPE_FORMAT_ ## FMT ## _SNORM] = DXGI_FORMAT_ ## FMT ## _SNORM,
+   MAP_FORMAT(FMT, UNORM) \
+   MAP_FORMAT(FMT, SNORM)
 
 #define MAP_FORMAT_INT(FMT) \
-   [PIPE_FORMAT_ ## FMT ## _UINT] = DXGI_FORMAT_ ## FMT ## _UINT, \
-   [PIPE_FORMAT_ ## FMT ## _SINT] = DXGI_FORMAT_ ## FMT ## _SINT,
+   MAP_FORMAT(FMT, UINT) \
+   MAP_FORMAT(FMT, SINT)
 
 #define MAP_FORMAT_SRGB(FMT) \
-   [PIPE_FORMAT_ ## FMT ## _SRGB] = DXGI_FORMAT_ ## FMT ## _UNORM_SRGB,
+   MAP_FORMAT2(FMT, SRGB, FMT, UNORM_SRGB)
 
 #define MAP_FORMAT_FLOAT(FMT) \
-   [PIPE_FORMAT_ ## FMT ## _FLOAT] = DXGI_FORMAT_ ## FMT ## _FLOAT,
+   MAP_FORMAT(FMT, FLOAT)
 
 #define MAP_EMU_FORMAT_NO_ALPHA(BITS, TYPE) \
-   [PIPE_FORMAT_L ## BITS ## _ ## TYPE] = DXGI_FORMAT_R ## BITS ## _ ## TYPE, \
-   [PIPE_FORMAT_I ## BITS ## _ ## TYPE] = DXGI_FORMAT_R ## BITS ## _ ## TYPE, \
-   [PIPE_FORMAT_L ## BITS ## A ## BITS ## _ ## TYPE] = \
-          DXGI_FORMAT_R ## BITS ## G ## BITS ## _ ## TYPE,
+   MAP_FORMAT2(L ## BITS, TYPE, R ## BITS, TYPE) \
+   MAP_FORMAT2(I ## BITS, TYPE, R ## BITS, TYPE) \
+   MAP_FORMAT2(L ## BITS ## A ## BITS, TYPE, R ## BITS ## G ## BITS, TYPE)
 
 #define MAP_EMU_FORMAT(BITS, TYPE) \
-   [PIPE_FORMAT_A ## BITS ## _ ## TYPE] = DXGI_FORMAT_R ## BITS ## _ ## TYPE, \
+   MAP_FORMAT2(A ## BITS, TYPE, R ## BITS, TYPE) \
    MAP_EMU_FORMAT_NO_ALPHA(BITS, TYPE)
 
+#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)
 
@@ -68,13 +76,13 @@ static const DXGI_FORMAT formats[PIPE_FORMAT_COUNT] = {
     * just use RGBA. This is needed to support RGB configs, since some apps
     * will only choose RGB (not RGBA) configs.
     */
-   [PIPE_FORMAT_R8G8B8X8_UNORM] = DXGI_FORMAT_R8G8B8A8_UNORM,
-   [PIPE_FORMAT_R8G8B8X8_SNORM] = DXGI_FORMAT_R8G8B8A8_SNORM,
-   [PIPE_FORMAT_R8G8B8X8_UINT] = DXGI_FORMAT_R8G8B8A8_UINT,
-   [PIPE_FORMAT_R8G8B8X8_SINT] = DXGI_FORMAT_R8G8B8A8_SINT,
+   MAP_FORMAT_X8(R8G8B8, UNORM)
+   MAP_FORMAT_X8(R8G8B8, SNORM)
+   MAP_FORMAT_X8(R8G8B8, UINT)
+   MAP_FORMAT_X8(R8G8B8, SINT)
 
-   [PIPE_FORMAT_B8G8R8X8_UNORM] = DXGI_FORMAT_B8G8R8X8_UNORM,
-   [PIPE_FORMAT_B8G8R8A8_UNORM] = DXGI_FORMAT_B8G8R8A8_UNORM,
+   MAP_FORMAT(B8G8R8X8, UNORM)
+   MAP_FORMAT(B8G8R8A8, UNORM)
 
    MAP_FORMAT_SRGB(B8G8R8A8)
 
@@ -99,7 +107,7 @@ static const DXGI_FORMAT formats[PIPE_FORMAT_COUNT] = {
    MAP_FORMAT_INT(R16G16B16A16)
    MAP_FORMAT_FLOAT(R16G16B16A16)
 
-   [PIPE_FORMAT_A8_UNORM] = DXGI_FORMAT_A8_UNORM,
+   MAP_FORMAT(A8, UNORM)
    MAP_EMU_FORMAT_NO_ALPHA(8, UNORM)
    MAP_EMU_FORMAT(8, SNORM)
    MAP_EMU_FORMAT(8, SINT)
@@ -113,38 +121,38 @@ static const DXGI_FORMAT formats[PIPE_FORMAT_COUNT] = {
    MAP_EMU_FORMAT(32, UINT)
    MAP_EMU_FORMAT(32, FLOAT)
 
-   [PIPE_FORMAT_R9G9B9E5_FLOAT] = DXGI_FORMAT_R9G9B9E5_SHAREDEXP,
-   [PIPE_FORMAT_R11G11B10_FLOAT] = DXGI_FORMAT_R11G11B10_FLOAT,
-   [PIPE_FORMAT_R10G10B10A2_UINT] = DXGI_FORMAT_R10G10B10A2_UINT,
-   [PIPE_FORMAT_R10G10B10A2_UNORM] = DXGI_FORMAT_R10G10B10A2_UNORM,
-
-   [PIPE_FORMAT_B5G6R5_UNORM] = DXGI_FORMAT_B5G6R5_UNORM,
-   [PIPE_FORMAT_B5G5R5A1_UNORM] = DXGI_FORMAT_B5G5R5A1_UNORM,
-   [PIPE_FORMAT_B5G5R5X1_UNORM] = DXGI_FORMAT_B5G5R5A1_UNORM,
-
-   [PIPE_FORMAT_DXT1_RGB] = DXGI_FORMAT_BC1_UNORM,
-   [PIPE_FORMAT_DXT1_RGBA] = DXGI_FORMAT_BC1_UNORM,
-   [PIPE_FORMAT_DXT3_RGBA] = DXGI_FORMAT_BC2_UNORM,
-   [PIPE_FORMAT_DXT5_RGBA] = DXGI_FORMAT_BC3_UNORM,
-
-   [PIPE_FORMAT_DXT1_SRGB] = DXGI_FORMAT_BC1_UNORM_SRGB,
-   [PIPE_FORMAT_DXT1_SRGBA] = DXGI_FORMAT_BC1_UNORM_SRGB,
-   [PIPE_FORMAT_DXT3_SRGBA] = DXGI_FORMAT_BC2_UNORM_SRGB,
-   [PIPE_FORMAT_DXT5_SRGBA] = DXGI_FORMAT_BC3_UNORM_SRGB,
-
-   [PIPE_FORMAT_RGTC1_UNORM] = DXGI_FORMAT_BC4_UNORM,
-   [PIPE_FORMAT_RGTC1_SNORM] = DXGI_FORMAT_BC4_SNORM,
-   [PIPE_FORMAT_RGTC2_UNORM] = DXGI_FORMAT_BC5_UNORM,
-   [PIPE_FORMAT_RGTC2_SNORM] = DXGI_FORMAT_BC5_SNORM,
-
-   [PIPE_FORMAT_Z32_FLOAT] = DXGI_FORMAT_R32_TYPELESS,
-   [PIPE_FORMAT_Z16_UNORM] = DXGI_FORMAT_R16_TYPELESS,
-   [PIPE_FORMAT_Z24X8_UNORM] = DXGI_FORMAT_R24G8_TYPELESS,
-   [PIPE_FORMAT_X24S8_UINT] = DXGI_FORMAT_R24G8_TYPELESS,
-
-   [PIPE_FORMAT_Z24_UNORM_S8_UINT] = DXGI_FORMAT_R24G8_TYPELESS,
-   [PIPE_FORMAT_Z32_FLOAT_S8X24_UINT] = DXGI_FORMAT_R32G8X24_TYPELESS,
-   [PIPE_FORMAT_X32_S8X24_UINT] = DXGI_FORMAT_R32G8X24_TYPELESS,
+   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)
 };
 
 DXGI_FORMAT



More information about the mesa-commit mailing list