[Bf-blender-cvs] [3a5501d168d] blender2.8: Use static assert in Clay engine to ensure struct alignment

Sergey Sharybin noreply at git.blender.org
Fri May 12 12:02:55 CEST 2017


Commit: 3a5501d168d75f0611e82ac7ba03d8a723a77a9f
Author: Sergey Sharybin
Date:   Fri May 12 11:56:19 2017 +0200
Branches: blender2.8
https://developer.blender.org/rB3a5501d168d75f0611e82ac7ba03d8a723a77a9f

Use static assert in Clay engine to ensure struct alignment

===================================================================

M	source/blender/blenlib/BLI_utildefines.h
M	source/blender/draw/engines/clay/clay_engine.c

===================================================================

diff --git a/source/blender/blenlib/BLI_utildefines.h b/source/blender/blenlib/BLI_utildefines.h
index 746eb922c65..72ac6bd0080 100644
--- a/source/blender/blenlib/BLI_utildefines.h
+++ b/source/blender/blenlib/BLI_utildefines.h
@@ -674,6 +674,9 @@ extern bool BLI_memory_is_zero(const void *arr, const size_t arr_size);
 #  define BLI_STATIC_ASSERT(a, msg)
 #endif
 
+#define BLI_STATIC_ASSERT_ALIGN(st, align) \
+  BLI_STATIC_ASSERT((sizeof(st) % (align) == 0), "Structure must be strictly aligned")
+
 /* hints for branch prediction, only use in code that runs a _lot_ where */
 #ifdef __GNUC__
 #  define LIKELY(x)       __builtin_expect(!!(x), 1)
diff --git a/source/blender/draw/engines/clay/clay_engine.c b/source/blender/draw/engines/clay/clay_engine.c
index 6486c87337d..1941c339c96 100644
--- a/source/blender/draw/engines/clay/clay_engine.c
+++ b/source/blender/draw/engines/clay/clay_engine.c
@@ -57,6 +57,7 @@ typedef struct CLAY_UBO_Material {
 	float matcap_rot[2];
 	float pad[2]; /* ensure 16 bytes alignement */
 } CLAY_UBO_Material; /* 48 bytes */
+BLI_STATIC_ASSERT_ALIGN(CLAY_UBO_Material, 16);
 
 #define MAX_CLAY_MAT 512 /* 512 = 9 bit material id */




More information about the Bf-blender-cvs mailing list