From 74bfdfef73d6c1defcbd162adc0efd0d139f8bae Mon Sep 17 00:00:00 2001 From: Robert Beckebans Date: Tue, 14 Jul 2020 18:35:00 +0200 Subject: [PATCH] Extended OpenGL Debug Callback --- neo/renderer/OpenGL/RenderBackend_GL.cpp | 26 +++++++++++++++++++++--- neo/renderer/RenderSystem.cpp | 2 ++ 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/neo/renderer/OpenGL/RenderBackend_GL.cpp b/neo/renderer/OpenGL/RenderBackend_GL.cpp index c870fc4a..c9fdef0f 100644 --- a/neo/renderer/OpenGL/RenderBackend_GL.cpp +++ b/neo/renderer/OpenGL/RenderBackend_GL.cpp @@ -131,16 +131,36 @@ For ARB_debug_output */ // RB: added const to userParam static void CALLBACK DebugCallback( unsigned int source, unsigned int type, - unsigned int id, unsigned int severity, int length, const char* message, const void* userParam ) + unsigned int id, unsigned int severity, int length, const char* msg, const void* userParam ) { + char s[1024]; + // it probably isn't safe to do an idLib::Printf at this point + const char* severityStr = "Severity: Unkown"; + switch( severity ) + { + case GL_DEBUG_SEVERITY_HIGH: + severityStr = "Severity: High"; + break; + + case GL_DEBUG_SEVERITY_MEDIUM: + severityStr = "Severity: Medium"; + break; + + case GL_DEBUG_SEVERITY_LOW: + severityStr = "Severity: High"; + break; + } + + idStr::snPrintf( s, sizeof( s ), "[OpenGL] Debug: [ %s ] Code %d, %d : '%s'\n", severityStr, source, type, msg ); + // RB: printf should be thread safe on Linux #if defined(_WIN32) - OutputDebugString( message ); + OutputDebugString( s ); OutputDebugString( "\n" ); #else - printf( "%s\n", message ); + printf( "%s\n", s ); #endif // RB end } diff --git a/neo/renderer/RenderSystem.cpp b/neo/renderer/RenderSystem.cpp index 25c74a85..7fe87b4e 100644 --- a/neo/renderer/RenderSystem.cpp +++ b/neo/renderer/RenderSystem.cpp @@ -655,6 +655,8 @@ void idRenderSystemLocal::SwapCommandBuffers_FinishRendering( return; } + //GL_CheckErrors(); + // After coming back from an autoswap, we won't have anything to render //if( frameData && frameData->cmdHead->next != NULL ) {