diff options
Diffstat (limited to 'src/3rdparty/angle/src/common/debug.h')
-rw-r--r-- | src/3rdparty/angle/src/common/debug.h | 32 |
1 files changed, 26 insertions, 6 deletions
diff --git a/src/3rdparty/angle/src/common/debug.h b/src/3rdparty/angle/src/common/debug.h index 793843895c..997ebca6be 100644 --- a/src/3rdparty/angle/src/common/debug.h +++ b/src/3rdparty/angle/src/common/debug.h @@ -62,7 +62,7 @@ namespace gl // A macro to log a performance event around a scope. #if defined(ANGLE_ENABLE_TRACE) || defined(ANGLE_ENABLE_PERF) #if defined(_MSC_VER) -#define EVENT(message, ...) gl::ScopedPerfEventHelper scopedPerfEventHelper ## __LINE__(__FUNCTION__ message "\n", __VA_ARGS__); +#define EVENT(message, ...) gl::ScopedPerfEventHelper scopedPerfEventHelper ## __LINE__("%s" message "\n", __FUNCTION__, __VA_ARGS__); #else #define EVENT(message, ...) gl::ScopedPerfEventHelper scopedPerfEventHelper(message "\n", ##__VA_ARGS__); #endif // _MSC_VER @@ -77,15 +77,30 @@ namespace gl ERR("\t! Assert failed in %s(%d): "#expression"\n", __FUNCTION__, __LINE__); \ assert(expression); \ } while(0) +#define UNUSED_ASSERTION_VARIABLE(variable) #else #define ASSERT(expression) (void(0)) +#define UNUSED_ASSERTION_VARIABLE(variable) ((void)variable) +#endif + +#ifndef ANGLE_ENABLE_TRACE +#define UNUSED_TRACE_VARIABLE(variable) ((void)variable) +#else +#define UNUSED_TRACE_VARIABLE(variable) #endif // A macro to indicate unimplemented functionality + +// Define NOASSERT_UNIMPLEMENTED to non zero to skip the assert fail in the unimplemented checks +// This will allow us to test with some automated test suites (eg dEQP) without crashing +#ifndef NOASSERT_UNIMPLEMENTED +#define NOASSERT_UNIMPLEMENTED 0 +#endif + #if !defined(NDEBUG) #define UNIMPLEMENTED() do { \ FIXME("\t! Unimplemented: %s(%d)\n", __FUNCTION__, __LINE__); \ - assert(false); \ + assert(NOASSERT_UNIMPLEMENTED); \ } while(0) #else #define UNIMPLEMENTED() FIXME("\t! Unimplemented: %s(%d)\n", __FUNCTION__, __LINE__) @@ -101,9 +116,7 @@ namespace gl #define UNREACHABLE() ERR("\t! Unreachable reached: %s(%d)\n", __FUNCTION__, __LINE__) #endif -// A macro that determines whether an object has a given runtime type. MSVC uses _CPPRTTI. -// GCC uses __GXX_RTTI, but the macro was introduced in version 4.3, so we assume that all older -// versions support RTTI. +// A macro that determines whether an object has a given runtime type. #if !defined(NDEBUG) && (!defined(_MSC_VER) || defined(_CPPRTTI)) && (!defined(__GNUC__) || __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 3) || defined(__GXX_RTTI)) #define HAS_DYNAMIC_TYPE(type, obj) (dynamic_cast<type >(obj) != NULL) #else @@ -111,6 +124,13 @@ namespace gl #endif // A macro functioning as a compile-time assert to validate constant conditions -#define META_ASSERT(condition) typedef int COMPILE_TIME_ASSERT_##__LINE__[static_cast<bool>(condition)?1:-1] +#if defined(_MSC_VER) && _MSC_VER >= 1600 +#define META_ASSERT_MSG(condition, msg) static_assert(condition, msg) +#else +#define META_ASSERT_CONCAT(a, b) a ## b +#define META_ASSERT_CONCAT2(a, b) META_ASSERT_CONCAT(a, b) +#define META_ASSERT_MSG(condition, msg) typedef int META_ASSERT_CONCAT2(COMPILE_TIME_ASSERT_, __LINE__)[static_cast<bool>(condition)?1:-1] +#endif +#define META_ASSERT(condition) META_ASSERT_MSG(condition, "compile time assertion failed.") #endif // COMMON_DEBUG_H_ |