=?UTF-8?Q?J=C3=B3zef=20Kucia=20?=: libs/vkd3d-shader: Rework swizzle macros.

Alexandre Julliard julliard at winehq.org
Thu May 24 16:33:16 CDT 2018


Module: vkd3d
Branch: master
Commit: 926f844ead86849c27cdb875dd5cd83fe918b368
URL:    https://source.winehq.org/git/vkd3d.git/?a=commit;h=926f844ead86849c27cdb875dd5cd83fe918b368

Author: Józef Kucia <jkucia at codeweavers.com>
Date:   Thu May 24 13:08:34 2018 +0200

libs/vkd3d-shader: Rework swizzle macros.

Signed-off-by: Józef Kucia <jkucia at codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 libs/vkd3d-shader/dxbc.c                 |  4 ++--
 libs/vkd3d-shader/spirv.c                |  8 ++++----
 libs/vkd3d-shader/vkd3d_shader_private.h | 17 +++++++++++++----
 3 files changed, 19 insertions(+), 10 deletions(-)

diff --git a/libs/vkd3d-shader/dxbc.c b/libs/vkd3d-shader/dxbc.c
index 5f87eae..87b2d71 100644
--- a/libs/vkd3d-shader/dxbc.c
+++ b/libs/vkd3d-shader/dxbc.c
@@ -1521,7 +1521,7 @@ static BOOL shader_sm4_read_src_param(struct vkd3d_sm4_data *priv, const DWORD *
 
     if (src_param->reg.type == VKD3DSPR_IMMCONST)
     {
-        src_param->swizzle = VKD3DSP_NOSWIZZLE;
+        src_param->swizzle = VKD3D_NO_SWIZZLE;
     }
     else
     {
@@ -1531,7 +1531,7 @@ static BOOL shader_sm4_read_src_param(struct vkd3d_sm4_data *priv, const DWORD *
         switch (swizzle_type)
         {
             case VKD3D_SM4_SWIZZLE_NONE:
-                src_param->swizzle = VKD3DSP_NOSWIZZLE;
+                src_param->swizzle = VKD3D_NO_SWIZZLE;
                 break;
 
             case VKD3D_SM4_SWIZZLE_SCALAR:
diff --git a/libs/vkd3d-shader/spirv.c b/libs/vkd3d-shader/spirv.c
index f646d54..53ddd44 100644
--- a/libs/vkd3d-shader/spirv.c
+++ b/libs/vkd3d-shader/spirv.c
@@ -2349,7 +2349,7 @@ static uint32_t vkd3d_dxbc_compiler_emit_swizzle(struct vkd3d_dxbc_compiler *com
     unsigned int i, component_idx, component_count;
     uint32_t type_id, components[VKD3D_VEC4_SIZE];
 
-    if (swizzle == VKD3DSP_NOSWIZZLE && write_mask == VKD3DSP_WRITEMASK_ALL)
+    if (swizzle == VKD3D_NO_SWIZZLE && write_mask == VKD3DSP_WRITEMASK_ALL)
         return val_id;
 
     component_count = vkd3d_write_mask_component_count(write_mask);
@@ -2972,7 +2972,7 @@ static uint32_t vkd3d_dxbc_compiler_emit_input(struct vkd3d_dxbc_compiler *compi
 
     if (val_id && input_component_count != component_count)
         val_id = vkd3d_dxbc_compiler_emit_swizzle(compiler,
-                val_id, VKD3D_TYPE_FLOAT, VKD3DSP_NOSWIZZLE, dst->write_mask);
+                val_id, VKD3D_TYPE_FLOAT, VKD3D_NO_SWIZZLE, dst->write_mask);
 
     vkd3d_symbol_make_register(&reg_symbol, reg);
 
@@ -4601,7 +4601,7 @@ static void vkd3d_dxbc_compiler_emit_control_flow_instruction(struct vkd3d_dxbc_
             assert(compiler->control_flow_depth);
             assert(cf_info->current_block == VKD3D_BLOCK_SWITCH);
 
-            assert(src->swizzle == VKD3DSP_NOSWIZZLE && src->reg.type == VKD3DSPR_IMMCONST);
+            assert(src->swizzle == VKD3D_NO_SWIZZLE && src->reg.type == VKD3DSPR_IMMCONST);
             value = *src->reg.u.immconst_data;
 
             if (!vkd3d_array_reserve((void **)&cf_info->u.switch_.case_blocks, &cf_info->u.switch_.case_blocks_size,
@@ -5946,7 +5946,7 @@ static void vkd3d_dxbc_compiler_emit_output_setup_function(struct vkd3d_dxbc_com
 
         write_mask = signature->elements[i].mask & 0xff;
         val_id = vkd3d_dxbc_compiler_emit_swizzle(compiler,
-                param_id[variable_idx], VKD3D_TYPE_FLOAT, VKD3DSP_NOSWIZZLE, write_mask);
+                param_id[variable_idx], VKD3D_TYPE_FLOAT, VKD3D_NO_SWIZZLE, write_mask);
 
         if (compiler->output_info[i].component_type != VKD3D_TYPE_FLOAT)
         {
diff --git a/libs/vkd3d-shader/vkd3d_shader_private.h b/libs/vkd3d-shader/vkd3d_shader_private.h
index 09c2e1d..45af2db 100644
--- a/libs/vkd3d-shader/vkd3d_shader_private.h
+++ b/libs/vkd3d-shader/vkd3d_shader_private.h
@@ -390,8 +390,6 @@ enum vkd3d_immconst_type
     VKD3D_IMMCONST_VEC4,
 };
 
-#define VKD3DSP_NOSWIZZLE (0u | (1u << 2) | (2u << 4) | (3u << 6))
-
 enum vkd3d_shader_src_modifier
 {
     VKD3DSPSM_NONE = 0,
@@ -852,11 +850,22 @@ static inline unsigned int vkd3d_write_mask_component_count(DWORD write_mask)
     return count;
 }
 
+/* swizzle bits fields: wwzzyyxx */
+#define VKD3D_SWIZZLE_X (0u)
+#define VKD3D_SWIZZLE_Y (1u)
+#define VKD3D_SWIZZLE_Z (2u)
+#define VKD3D_SWIZZLE_W (3u)
+#define VKD3D_SWIZZLE_MASK (0x3u)
+#define VKD3D_SWIZZLE_SHIFT(idx) (2u * (idx))
+#define VKD3D_NO_SWIZZLE ((VKD3D_SWIZZLE_X << VKD3D_SWIZZLE_SHIFT(0)) \
+        | (VKD3D_SWIZZLE_Y << VKD3D_SWIZZLE_SHIFT(1)) \
+        | (VKD3D_SWIZZLE_Z << VKD3D_SWIZZLE_SHIFT(2)) \
+        | (VKD3D_SWIZZLE_W << VKD3D_SWIZZLE_SHIFT(3)))
+
 static inline unsigned int vkd3d_swizzle_get_component(DWORD swizzle,
         unsigned int idx)
 {
-    /* swizzle bits fields: wwzzyyxx */
-    return (swizzle >> (2 * idx)) & 0x3;
+    return (swizzle >> VKD3D_SWIZZLE_SHIFT(idx)) & VKD3D_SWIZZLE_MASK;
 }
 
 #define VKD3D_DXBC_MAX_SOURCE_COUNT 6




More information about the wine-cvs mailing list