[PATCH vkd3d 3/3] libs/vkd3d-shader: Force public enums to 32-bit values.

Józef Kucia joseph.kucia at gmail.com
Fri Feb 2 08:39:23 CST 2018


From: Józef Kucia <jkucia at codeweavers.com>

Signed-off-by: Józef Kucia <jkucia at codeweavers.com>
---
 include/vkd3d_shader.h    | 26 +++++++++++++++++++-------
 libs/vkd3d-shader/spirv.c |  6 +++---
 2 files changed, 22 insertions(+), 10 deletions(-)

diff --git a/include/vkd3d_shader.h b/include/vkd3d_shader.h
index 52b1b9ea0707..48b51898d453 100644
--- a/include/vkd3d_shader.h
+++ b/include/vkd3d_shader.h
@@ -25,21 +25,25 @@
 extern "C" {
 #endif  /* __cplusplus */
 
+#define VKD3D_FORCE_32_BIT_ENUM(name) name##_FORCE_32BIT = 0x7fffffff
+
 enum vkd3d_shader_compiler_option
 {
     VKD3D_SHADER_STRIP_DEBUG = 0x00000001,
 
-    VKD3D_SHADER_COMPILER_OPTIONS_FORCE_32_BIT = 0x7fffffff,
+    VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_COMPILER_OPTION),
 };
 
 enum vkd3d_shader_visibility
 {
-    VKD3D_SHADER_VISIBILITY_ALL,
-    VKD3D_SHADER_VISIBILITY_VERTEX,
-    VKD3D_SHADER_VISIBILITY_HULL,
-    VKD3D_SHADER_VISIBILITY_DOMAIN,
-    VKD3D_SHADER_VISIBILITY_GEOMETRY,
-    VKD3D_SHADER_VISIBILITY_PIXEL,
+    VKD3D_SHADER_VISIBILITY_ALL = 0,
+    VKD3D_SHADER_VISIBILITY_VERTEX = 1,
+    VKD3D_SHADER_VISIBILITY_HULL = 2,
+    VKD3D_SHADER_VISIBILITY_DOMAIN = 3,
+    VKD3D_SHADER_VISIBILITY_GEOMETRY = 4,
+    VKD3D_SHADER_VISIBILITY_PIXEL = 5,
+
+    VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_VISIBILITY),
 };
 
 struct vkd3d_shader_code
@@ -55,6 +59,8 @@ enum vkd3d_shader_descriptor_type
     VKD3D_SHADER_DESCRIPTOR_TYPE_SRV,     /* t#  */
     VKD3D_SHADER_DESCRIPTOR_TYPE_UAV,     /* u#  */
     VKD3D_SHADER_DESCRIPTOR_TYPE_SAMPLER, /* s#  */
+
+    VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_DESCRIPTOR_TYPE),
 };
 
 struct vkd3d_shader_descriptor_binding
@@ -119,6 +125,8 @@ void vkd3d_shader_free_root_signature(D3D12_ROOT_SIGNATURE_DESC *root_signature)
 enum vkd3d_root_signature_version
 {
     VKD3D_ROOT_SIGNATURE_VERSION_1_0 = 0x1,
+
+    VKD3D_FORCE_32_BIT_ENUM(VKD3D_ROOT_SIGNATURE_VERSION),
 };
 
 HRESULT vkd3d_shader_serialize_root_signature(const D3D12_ROOT_SIGNATURE_DESC *root_signature,
@@ -143,6 +151,8 @@ enum vkd3d_component_type
     VKD3D_TYPE_FLOAT   = 3,
     VKD3D_TYPE_BOOL,
     VKD3D_TYPE_COUNT,
+
+    VKD3D_FORCE_32_BIT_ENUM(VKD3D_COMPONENT_TYPE),
 };
 
 enum vkd3d_sysval_semantic
@@ -163,6 +173,8 @@ enum vkd3d_sysval_semantic
     VKD3D_SV_TESS_FACTOR_TRIINT        = 14,
     VKD3D_SV_TESS_FACTOR_LINEDET       = 15,
     VKD3D_SV_TESS_FACTOR_LINEDEN       = 16,
+
+    VKD3D_FORCE_32_BIT_ENUM(VKD3D_SYSVAL_SEMANTIC),
 };
 
 struct vkd3d_shader_signature_element
diff --git a/libs/vkd3d-shader/spirv.c b/libs/vkd3d-shader/spirv.c
index 6eb1537f0b86..f984e624b466 100644
--- a/libs/vkd3d-shader/spirv.c
+++ b/libs/vkd3d-shader/spirv.c
@@ -1919,10 +1919,10 @@ static bool vkd3d_dxbc_compiler_check_shader_visibility(struct vkd3d_dxbc_compil
             return compiler->shader_type == VKD3D_SHADER_TYPE_GEOMETRY;
         case VKD3D_SHADER_VISIBILITY_PIXEL:
             return compiler->shader_type == VKD3D_SHADER_TYPE_PIXEL;
+        default:
+            ERR("Invalid shader visibility %#x.\n", visibility);
+            return false;
     }
-
-    ERR("Invalid shader visibility %#x.\n", visibility);
-    return false;
 }
 
 static struct vkd3d_push_constant_buffer_binding *vkd3d_dxbc_compiler_find_push_constant_buffer(
-- 
2.13.6




More information about the wine-devel mailing list