diff --git a/neo/renderer/OpenGL/RenderBackend_GL.cpp b/neo/renderer/OpenGL/RenderBackend_GL.cpp index b9a72ca4..4a1e0ce4 100644 --- a/neo/renderer/OpenGL/RenderBackend_GL.cpp +++ b/neo/renderer/OpenGL/RenderBackend_GL.cpp @@ -1962,6 +1962,7 @@ void idRenderBackend::StereoRenderExecuteBackEndCommands( const emptyCommand_t* // SRS - Save glConfig.timerQueryAvailable state so it can be disabled for RC_DRAW_VIEW_GUI then restored after it is finished const bool timerQueryAvailable = glConfig.timerQueryAvailable; + bool drawView3D_timestamps = false; for( int stereoEye = 1; stereoEye >= -1; stereoEye -= 2 ) { @@ -1994,25 +1995,27 @@ void idRenderBackend::StereoRenderExecuteBackEndCommands( const emptyCommand_t* } foundEye[ targetEye ] = true; - if( cmds->commandId == RC_DRAW_VIEW_GUI ) - { - // SRS - Capture separate timestamps for GUI rendering - renderLog.OpenMainBlock( MRB_DRAW_GUI ); - renderLog.OpenBlock( "Render_DrawViewGUI", colorBlue ); - // SRS - Disable detailed timestamps during GUI rendering so they do not overwrite timestamps from 3D rendering - glConfig.timerQueryAvailable = false; - - DrawView( dsc, stereoEye ); - - // SRS - Restore timestamp capture state after GUI rendering is finished - glConfig.timerQueryAvailable = timerQueryAvailable; - renderLog.CloseBlock(); - renderLog.CloseMainBlock(); - } - else + if( cmds->commandId == RC_DRAW_VIEW_GUI && drawView3D_timestamps ) { + // SRS - Capture separate timestamps for overlay GUI rendering when RC_DRAW_VIEW_3D timestamps are active + renderLog.OpenMainBlock( MRB_DRAW_GUI ); + renderLog.OpenBlock( "Render_DrawViewGUI", colorBlue ); + // SRS - Disable detailed timestamps during overlay GUI rendering so they do not overwrite timestamps from 3D rendering + glConfig.timerQueryAvailable = false; + DrawView( dsc, stereoEye ); + + // SRS - Restore timestamp capture state after overlay GUI rendering is finished + glConfig.timerQueryAvailable = timerQueryAvailable; + renderLog.CloseBlock(); + renderLog.CloseMainBlock(); + break; + } + else if( cmds->commandId == RC_DRAW_VIEW_3D ) + { + drawView3D_timestamps = true; } + DrawView( dsc, stereoEye ); } break; diff --git a/neo/renderer/RenderBackend.cpp b/neo/renderer/RenderBackend.cpp index dd73c688..a1aaecf3 100644 --- a/neo/renderer/RenderBackend.cpp +++ b/neo/renderer/RenderBackend.cpp @@ -5564,6 +5564,7 @@ void idRenderBackend::ExecuteBackEndCommands( const emptyCommand_t* cmds ) // SRS - Save glConfig.timerQueryAvailable state so it can be disabled for RC_DRAW_VIEW_GUI then restored after it is finished const bool timerQueryAvailable = glConfig.timerQueryAvailable; + bool drawView3D_timestamps = false; for( ; cmds != NULL; cmds = ( const emptyCommand_t* )cmds->next ) { @@ -5573,22 +5574,30 @@ void idRenderBackend::ExecuteBackEndCommands( const emptyCommand_t* cmds ) break; case RC_DRAW_VIEW_GUI: - // SRS - Capture separate timestamps for GUI rendering - renderLog.OpenMainBlock( MRB_DRAW_GUI ); - renderLog.OpenBlock( "Render_DrawViewGUI", colorBlue ); - // SRS - Disable detailed timestamps during GUI rendering so they do not overwrite timestamps from 3D rendering - glConfig.timerQueryAvailable = false; + if( drawView3D_timestamps ) + { + // SRS - Capture separate timestamps for overlay GUI rendering when RC_DRAW_VIEW_3D timestamps are active + renderLog.OpenMainBlock( MRB_DRAW_GUI ); + renderLog.OpenBlock( "Render_DrawViewGUI", colorBlue ); + // SRS - Disable detailed timestamps during overlay GUI rendering so they do not overwrite timestamps from 3D rendering + glConfig.timerQueryAvailable = false; - DrawView( cmds, 0 ); - c_draw2d++; + DrawView( cmds, 0 ); - // SRS - Restore timestamp capture state after GUI rendering is finished - glConfig.timerQueryAvailable = timerQueryAvailable; - renderLog.CloseBlock(); - renderLog.CloseMainBlock(); + // SRS - Restore timestamp capture state after overlay GUI rendering is finished + glConfig.timerQueryAvailable = timerQueryAvailable; + renderLog.CloseBlock(); + renderLog.CloseMainBlock(); + } + else + { + DrawView( cmds, 0 ); + } + c_draw2d++; break; case RC_DRAW_VIEW_3D: + drawView3D_timestamps = true; DrawView( cmds, 0 ); c_draw3d++; break;