swr/rast: add SWR_STATIC_ASSERT() macro
authorAlok Hota <alok.hota@intel.com>
Wed, 20 Jun 2018 17:16:36 +0000 (12:16 -0500)
committerAlok Hota <alok.hota@intel.com>
Tue, 30 Apr 2019 19:48:12 +0000 (19:48 +0000)
Reviewed-by: Bruce Cherniak <bruce.cherniak@intel.com>
src/gallium/drivers/swr/rasterizer/common/swr_assert.h

index d74b798..7e90e21 100644 (file)
@@ -192,7 +192,11 @@ void SwrTrace(
 #define SWR_INVALID(...)                                                                       \
     _SWR_INVALID_CONCAT(_SWR_INVALID_, _SWR_INVALID_VARGS(_SWR_INVALID_VARGS_0 __VA_ARGS__())) \
     (__VA_ARGS__)
-#endif
+
+#define SWR_STATIC_ASSERT(expression, ...) \
+    static_assert((expression), "Failed:\n    " #expression "\n    " __VA_ARGS__);
+
+#endif // SWR_ENABLE_REL_ASSERTS
 
 #endif // C++
 
@@ -226,6 +230,9 @@ static bool SwrSizeofWorkaround(T)
 #define SWR_REL_TRACE(_fmtstr, ...) \
     _SWR_MACRO_START(void)(0);      \
     _SWR_MACRO_END
+#define SWR_STATIC_ASSERT(e, ...)                           \
+    _SWR_MACRO_START(void)  sizeof(SwrSizeofWorkaround(e)); \
+    _SWR_MACRO_END
 #endif
 
 #if defined(_MSC_VER)