=?UTF-8?Q?J=C3=B3zef=20Kucia=20?=: include: Add STATIC_ASSERT() macro.

Alexandre Julliard julliard at winehq.org
Thu Nov 8 14:29:03 CST 2018


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

Author: Józef Kucia <jkucia at codeweavers.com>
Date:   Thu Nov  8 17:19:31 2018 +0100

include: Add STATIC_ASSERT() macro.

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>

---

 include/private/vkd3d_common.h | 2 ++
 libs/vkd3d-shader/dxbc.c       | 2 +-
 libs/vkd3d-shader/spirv.c      | 6 +++---
 tests/d3d12.c                  | 2 +-
 4 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/include/private/vkd3d_common.h b/include/private/vkd3d_common.h
index 2e3873b..d097f3d 100644
--- a/include/private/vkd3d_common.h
+++ b/include/private/vkd3d_common.h
@@ -26,6 +26,8 @@
 
 #define DIV_ROUND_UP(a, b) ((a) % (b) == 0 ? (a) / (b) : (a) / (b) + 1)
 
+#define STATIC_ASSERT(e) extern void __VKD3D_STATIC_ASSERT__(int [(e) ? 1 : -1])
+
 static inline size_t align(size_t addr, size_t alignment)
 {
     return (addr + (alignment - 1)) & ~(alignment - 1);
diff --git a/libs/vkd3d-shader/dxbc.c b/libs/vkd3d-shader/dxbc.c
index eb1729c..7b03448 100644
--- a/libs/vkd3d-shader/dxbc.c
+++ b/libs/vkd3d-shader/dxbc.c
@@ -1788,7 +1788,7 @@ static void read_dword(const char **ptr, DWORD *d)
 
 static void read_float(const char **ptr, float *f)
 {
-    assert(sizeof(float) == sizeof(DWORD)); /* FIXME: use static assert */
+    STATIC_ASSERT(sizeof(float) == sizeof(DWORD));
     read_dword(ptr, (DWORD *)f);
 }
 
diff --git a/libs/vkd3d-shader/spirv.c b/libs/vkd3d-shader/spirv.c
index c9634ed..1655bf3 100644
--- a/libs/vkd3d-shader/spirv.c
+++ b/libs/vkd3d-shader/spirv.c
@@ -6897,10 +6897,10 @@ static void vkd3d_dxbc_compiler_emit_shader_epilogue_function(struct vkd3d_dxbc_
     unsigned int i, count;
     DWORD variable_idx;
 
-    function_id = compiler->epilogue_function_id;
+    STATIC_ASSERT(ARRAY_SIZE(compiler->private_output_variable) == ARRAY_SIZE(param_id));
+    STATIC_ASSERT(ARRAY_SIZE(compiler->private_output_variable) == ARRAY_SIZE(param_type_id));
 
-    assert(ARRAY_SIZE(compiler->private_output_variable) == ARRAY_SIZE(param_id));
-    assert(ARRAY_SIZE(compiler->private_output_variable) == ARRAY_SIZE(param_type_id));
+    function_id = compiler->epilogue_function_id;
 
     void_id = vkd3d_spirv_get_op_type_void(builder);
     type_id = vkd3d_spirv_get_type_id(builder, VKD3D_TYPE_FLOAT, 4);
diff --git a/tests/d3d12.c b/tests/d3d12.c
index b50723b..c855e9c 100644
--- a/tests/d3d12.c
+++ b/tests/d3d12.c
@@ -7786,7 +7786,7 @@ static void test_shader_instructions(void)
         },
     };
 
-    assert(sizeof(tests->input) == sizeof(uint_tests->input));
+    STATIC_ASSERT(sizeof(tests->input) == sizeof(uint_tests->input));
 
     memset(&desc, 0, sizeof(desc));
     desc.rt_format = DXGI_FORMAT_R32G32B32A32_FLOAT;




More information about the wine-cvs mailing list