16#define ENABLE_VERIFY_GL (0 & DO_CHECK)
17#define ENABLE_VERIFY_GL_TRACE 0
21#define ENABLE_DEBUG_OUTPUT (!UE_BUILD_SHIPPING)
22#if !ENABLE_DEBUG_OUTPUT
31#define ENABLE_VERIFY_GL_THREAD (!(UE_BUILD_TEST || UE_BUILD_SHIPPING))
34#define ENABLE_UNIFORM_BUFFER_LAYOUT_VERIFICATION ( 0 & UE_BUILD_DEBUG & (!PLATFORM_ANDROID))
37#define ENABLE_UNIFORM_BUFFER_LAYOUT_DUMP 0
43#define ENABLE_OPENGL_DEBUG_GROUPS 1
45#define OPENGL_PERFORMANCE_DATA_INVALID (ENABLE_VERIFY_GL | ENABLE_UNIFORM_BUFFER_LAYOUT_VERIFICATION | DEBUG_GL_SHADERS)
59#if ENABLE_VERIFY_GL_THREAD
60 #define CHECK_EXPECTED_GL_THREAD() \
61 if (!PlatformOpenGLThreadHasRenderingContext()) \
63 UE_LOG(LogRHI, Fatal, TEXT("Potential use of GL context from incorrect thread. [IsInGameThread() = %d, IsInRenderingThread() = %d, IsInRHIThread() = %d, IsRunningRHIInSeparateThread() = %d]"), IsInGameThread(), IsInRenderingThread(), IsInRHIThread(), IsRunningRHIInSeparateThread()); \
66 #define CHECK_EXPECTED_GL_THREAD()
73 #define VERIFY_GL(msg) { CHECK_EXPECTED_GL_THREAD(); GLenum ErrorCode = PlatformGlGetError(); if (ErrorCode != GL_NO_ERROR) { VerifyOpenGLResult(ErrorCode,TEXT(#msg),TEXT(""),TEXT(__FILE__),__LINE__); } }
77 const char* FunctionName;
78 const TCHAR* Filename;
89#if ENABLE_VERIFY_GL_TRACE
97#if ENABLE_VERIFY_GL_TRACE
117 #define MACRO_TOKENIZER(IdentifierName, Msg, FileName, LineNumber) FOpenGLErrorScope IdentifierName_ ## LineNumber (Msg, FileName, LineNumber)
118 #define MACRO_TOKENIZER2(IdentifierName, Msg, FileName, LineNumber) MACRO_TOKENIZER(IdentiferName, Msg, FileName, LineNumber)
119 #define VERIFY_GL_SCOPE_WITH_MSG_STR(MsgStr) CHECK_EXPECTED_GL_THREAD(); MACRO_TOKENIZER2(ErrorScope_, MsgStr, TEXT(__FILE__), __LINE__)
120 #define VERIFY_GL_SCOPE() VERIFY_GL_SCOPE_WITH_MSG_STR(__FUNCTION__)
121 #define VERIFY_GL_FUNC(Func, ...) { VERIFY_GL_SCOPE_WITH_MSG_STR((#Func)); Func(__VA_ARGS__); }
126 #define glBlitFramebuffer(...) VERIFY_GL_FUNC(glBlitFramebuffer, __VA_ARGS__)
127 #define glTexImage2D(...) VERIFY_GL_FUNC(glTexImage2D, __VA_ARGS__)
128 #define glTexSubImage2D(...) VERIFY_GL_FUNC(glTexSubImage2D, __VA_ARGS__)
129 #define glCompressedTexImage2D(...) VERIFY_GL_FUNC(glCompressedTexImage2D, __VA_ARGS__)
132 #define VERIFY_GL(...) CHECK_EXPECTED_GL_THREAD()
133 #define VERIFY_GL_SCOPE(...) CHECK_EXPECTED_GL_THREAD()
141#define GL_CAPTURE_CALLSTACK 0
#define check(expr)
Definition AssertionMacros.h:314
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define UE_LOG(CategoryName, Verbosity, Format,...)
Definition LogMacros.h:270
void VerifyOpenGLResult(GLenum ErrorCode, const TCHAR *Msg1, const TCHAR *Msg2, const TCHAR *Filename, uint32 Line)
Definition OpenGLUtil.cpp:73
bool IsOGLDebugOutputEnabled()
int32 GetOGLDebugOutputLevel()
void SetOpenGLResourceName(FOpenGLTexture *Texture, const ANSICHAR *Name)
Definition OpenGLUtil.cpp:13
bool PlatformOpenGLThreadHasRenderingContext()
Definition LinuxOpenGLPlatform.cpp:812
GLenum GetOpenGLCubeFace(ECubeFace Face)
Definition OpenGLUtil.cpp:95
ECubeFace
Definition RHIDefinitions.h:525
#define ANSI_TO_TCHAR(str)
Definition StringConv.h:1020
Definition OpenGLResources.h:918
Definition OpenGLUtil.h:137
static const TCHAR * TStr()
Definition OpenGLUtil.h:138