[PATCH vkd3d v3 07/12] vkd3d-shader/hlsl: Add dimension types for textures to enum hlsl_sampler_dim.

Francisco Casas fcasas at codeweavers.com
Fri Dec 17 13:12:49 CST 2021


Signed-off-by: Francisco Casas <fcasas at codeweavers.com>
---
 libs/vkd3d-shader/hlsl.c     | 25 +++++++++++++++----------
 libs/vkd3d-shader/hlsl.h     | 10 ++++++++--
 libs/vkd3d-shader/hlsl_sm4.c |  2 +-
 3 files changed, 24 insertions(+), 13 deletions(-)

diff --git a/libs/vkd3d-shader/hlsl.c b/libs/vkd3d-shader/hlsl.c
index c664d5b1..2bd4b5c8 100644
--- a/libs/vkd3d-shader/hlsl.c
+++ b/libs/vkd3d-shader/hlsl.c
@@ -929,10 +929,15 @@ struct vkd3d_string_buffer *hlsl_type_to_string(struct hlsl_ctx *ctx, const stru
         {
             static const char *const dimensions[] =
             {
-                [HLSL_SAMPLER_DIM_1D] = "1D",
-                [HLSL_SAMPLER_DIM_2D] = "2D",
-                [HLSL_SAMPLER_DIM_3D] = "3D",
-                [HLSL_SAMPLER_DIM_CUBE] = "Cube"
+                [HLSL_SAMPLER_DIM_1D]        = "1D",
+                [HLSL_SAMPLER_DIM_2D]        = "2D",
+                [HLSL_SAMPLER_DIM_3D]        = "3D",
+                [HLSL_SAMPLER_DIM_CUBE]      = "Cube",
+                [HLSL_SAMPLER_DIM_1DARRAY]   = "1DArray",
+                [HLSL_SAMPLER_DIM_2DARRAY]   = "2DArray",
+                [HLSL_SAMPLER_DIM_2DMS]      = "2DMS",
+                [HLSL_SAMPLER_DIM_2DMSARRAY] = "2DMSArray",
+                [HLSL_SAMPLER_DIM_CUBEARRAY] = "CubeArray",
             };
 
             switch (type->base_type)
@@ -1776,11 +1781,11 @@ static void declare_predefined_types(struct hlsl_ctx *ctx)
 
     static const char *const sampler_names[] =
     {
-        "sampler",
-        "sampler1D",
-        "sampler2D",
-        "sampler3D",
-        "samplerCUBE"
+        [HLSL_SAMPLER_DIM_GENERIC] = "sampler",
+        [HLSL_SAMPLER_DIM_1D]      = "sampler1D",
+        [HLSL_SAMPLER_DIM_2D]      = "sampler2D",
+        [HLSL_SAMPLER_DIM_3D]      = "sampler3D",
+        [HLSL_SAMPLER_DIM_CUBE]    = "samplerCUBE",
     };
 
     static const struct
@@ -1832,7 +1837,7 @@ static void declare_predefined_types(struct hlsl_ctx *ctx)
         }
     }
 
-    for (bt = 0; bt <= HLSL_SAMPLER_DIM_MAX; ++bt)
+    for (bt = 0; bt <= HLSL_SAMPLER_DIM_LAST_SAMPLER; ++bt)
     {
         type = hlsl_new_type(ctx, sampler_names[bt], HLSL_CLASS_OBJECT, HLSL_TYPE_SAMPLER, 1, 1);
         type->sampler_dim = bt;
diff --git a/libs/vkd3d-shader/hlsl.h b/libs/vkd3d-shader/hlsl.h
index 49fa8d9d..334610df 100644
--- a/libs/vkd3d-shader/hlsl.h
+++ b/libs/vkd3d-shader/hlsl.h
@@ -98,7 +98,13 @@ enum hlsl_sampler_dim
    HLSL_SAMPLER_DIM_2D,
    HLSL_SAMPLER_DIM_3D,
    HLSL_SAMPLER_DIM_CUBE,
-   HLSL_SAMPLER_DIM_MAX = HLSL_SAMPLER_DIM_CUBE
+   HLSL_SAMPLER_DIM_LAST_SAMPLER = HLSL_SAMPLER_DIM_CUBE,
+   HLSL_SAMPLER_DIM_1DARRAY,
+   HLSL_SAMPLER_DIM_2DARRAY,
+   HLSL_SAMPLER_DIM_2DMS,
+   HLSL_SAMPLER_DIM_2DMSARRAY,
+   HLSL_SAMPLER_DIM_CUBEARRAY,
+   HLSL_SAMPLER_DIM_MAX = HLSL_SAMPLER_DIM_CUBEARRAY,
 };
 
 enum hlsl_matrix_majority
@@ -489,7 +495,7 @@ struct hlsl_ctx
         struct hlsl_type *vector[HLSL_TYPE_LAST_SCALAR + 1][4];
         /* matrix[float][2][4] is a float4x2, i.e. dimx = 2, dimy = 4 */
         struct hlsl_type *matrix[HLSL_TYPE_LAST_SCALAR + 1][4][4];
-        struct hlsl_type *sampler[HLSL_SAMPLER_DIM_MAX + 1];
+        struct hlsl_type *sampler[HLSL_SAMPLER_DIM_LAST_SAMPLER + 1];
         struct hlsl_type *Void;
     } builtin_types;
 
diff --git a/libs/vkd3d-shader/hlsl_sm4.c b/libs/vkd3d-shader/hlsl_sm4.c
index be35d125..cefe173d 100644
--- a/libs/vkd3d-shader/hlsl_sm4.c
+++ b/libs/vkd3d-shader/hlsl_sm4.c
@@ -1291,7 +1291,7 @@ static void write_sm4_ld(struct hlsl_ctx *ctx, struct vkd3d_bytecode_buffer *buf
         case HLSL_SAMPLER_DIM_CUBE:
             break;
 
-        case HLSL_SAMPLER_DIM_GENERIC:
+        default:
             assert(0);
     }
 
-- 
2.25.1




More information about the wine-devel mailing list