diff --git a/neo/framework/Common_local.h b/neo/framework/Common_local.h index 2690c858..e7c06d56 100644 --- a/neo/framework/Common_local.h +++ b/neo/framework/Common_local.h @@ -368,6 +368,18 @@ public: return stats_backend.gpuPostProcessingMicroSec; } // RB end + + // SRS start + uint64 GetRendererStartFrameSyncMicroseconds() const + { + return mainFrameTiming.finishSyncTime - mainFrameTiming.startSyncTime; + } + + uint64 GetRendererEndFrameSyncMicroseconds() const + { + return mainFrameTiming.finishSyncTime_EndFrame - mainFrameTiming.startRenderTime; + } + // SRS end // foresthale 2014-05-30: a special binarize pacifier has to be shown in // some cases, which includes filename and ETA information, note that diff --git a/neo/framework/Console.cpp b/neo/framework/Console.cpp index c17d4d35..50a720bb 100644 --- a/neo/framework/Console.cpp +++ b/neo/framework/Console.cpp @@ -270,13 +270,13 @@ float idConsoleLocal::DrawFPS( float y ) } // DG end - //const uint64 gameThreadTotalTime = commonLocal.GetGameThreadTotalTime(); - //const uint64 gameThreadGameTime = commonLocal.GetGameThreadGameTime(); - //const uint64 gameThreadRenderTime = commonLocal.GetGameThreadRenderTime(); + const uint64 gameThreadTotalTime = commonLocal.GetGameThreadTotalTime(); + const uint64 gameThreadGameTime = commonLocal.GetGameThreadGameTime(); + const uint64 gameThreadRenderTime = commonLocal.GetGameThreadRenderTime(); - const uint64 gameThreadTotalTime = commonLocal.mainFrameTiming.finishDrawTime - commonLocal.mainFrameTiming.startGameTime; - const uint64 gameThreadGameTime = commonLocal.mainFrameTiming.finishGameTime - commonLocal.mainFrameTiming.startGameTime; - const uint64 gameThreadRenderTime = commonLocal.mainFrameTiming.finishDrawTime - commonLocal.mainFrameTiming.finishGameTime; + //const uint64 gameThreadTotalTime = commonLocal.mainFrameTiming.finishDrawTime - commonLocal.mainFrameTiming.startGameTime; + //const uint64 gameThreadGameTime = commonLocal.mainFrameTiming.finishGameTime - commonLocal.mainFrameTiming.startGameTime; + //const uint64 gameThreadRenderTime = commonLocal.mainFrameTiming.finishDrawTime - commonLocal.mainFrameTiming.finishGameTime; const uint64 rendererBackEndTime = commonLocal.GetRendererBackEndMicroseconds(); const uint64 rendererShadowsTime = commonLocal.GetRendererShadowsMicroseconds(); @@ -292,13 +292,13 @@ float idConsoleLocal::DrawFPS( float y ) const uint64 rendererGPUPostProcessingTime = commonLocal.GetRendererGpuPostProcessingMicroseconds(); const int maxTime = int( 1000 / com_engineHz_latched ) * 1000; - // SRS - Calculate time waiting for GPU to sync at the start of a frame (com_smp = 1 or 0) and at the end of a frame (com_smp = -1) - const uint64 rendererSyncTime_StartFrame = commonLocal.mainFrameTiming.finishSyncTime - commonLocal.mainFrameTiming.startSyncTime; - const uint64 rendererSyncTime_EndFrame = commonLocal.mainFrameTiming.finishSyncTime_EndFrame - commonLocal.mainFrameTiming.startRenderTime; + // SRS - Get GPU sync time at the start of a frame (com_smp = 1 or 0) and at the end of a frame (com_smp = -1) + const uint64 rendererStartFrameSyncTime = commonLocal.GetRendererStartFrameSyncMicroseconds(); + const uint64 rendererEndFrameSyncTime = commonLocal.GetRendererEndFrameSyncMicroseconds(); // SRS - Total CPU and Frame time calculations depend on whether game is operating in smp mode or not const uint64 totalCPUTime = ( com_smp.GetInteger() > 0 && com_editors == 0 ? std::max( gameThreadTotalTime, rendererBackEndTime ) : gameThreadTotalTime + rendererBackEndTime ); - const uint64 totalFrameTime = ( com_smp.GetInteger() > 0 && com_editors == 0 ? std::max( gameThreadTotalTime, rendererSyncTime_EndFrame ) : gameThreadTotalTime + rendererSyncTime_EndFrame ) + rendererSyncTime_StartFrame; + const uint64 totalFrameTime = ( com_smp.GetInteger() > 0 && com_editors == 0 ? std::max( gameThreadTotalTime, rendererEndFrameSyncTime ) : gameThreadTotalTime + rendererEndFrameSyncTime ) + rendererStartFrameSyncTime; #if 1 @@ -377,7 +377,7 @@ float idConsoleLocal::DrawFPS( float y ) if( com_showFPS.GetInteger() > 2 ) { - ImGui::TextColored( colorLtGrey, "DYNAMIC: callback:%2i md5:%i dfrmVerts:%i dfrmTris:%i tangTris:%i guis:%i", + ImGui::TextColored( colorLtGrey, "DYNAMIC: callback:%-2i md5:%i dfrmVerts:%i dfrmTris:%i tangTris:%i guis:%i", commonLocal.stats_frontend.c_entityDefCallbacks, commonLocal.stats_frontend.c_generateMd5, commonLocal.stats_frontend.c_deformedVerts, @@ -389,16 +389,16 @@ float idConsoleLocal::DrawFPS( float y ) //ImGui::Text( "Cull: %i box in %i box out\n", // commonLocal.stats_frontend.c_box_cull_in, commonLocal.stats_frontend.c_box_cull_out ); - ImGui::TextColored( colorLtGrey, "ADDMODEL: callback:%2i createInteractions:%i createShadowVolumes:%i", + ImGui::TextColored( colorLtGrey, "ADDMODEL: callback:%-2i createInteractions:%i createShadowVolumes:%i", commonLocal.stats_frontend.c_entityDefCallbacks, commonLocal.stats_frontend.c_createInteractions, commonLocal.stats_frontend.c_createShadowVolumes ); - ImGui::TextColored( colorLtGrey, "viewEntities:%2i shadowEntities:%i viewLights:%i\n", commonLocal.stats_frontend.c_visibleViewEntities, + ImGui::TextColored( colorLtGrey, "viewEntities:%-3i shadowEntities:%-3i viewLights:%i\n", commonLocal.stats_frontend.c_visibleViewEntities, commonLocal.stats_frontend.c_shadowViewEntities, commonLocal.stats_frontend.c_viewLights ); - ImGui::TextColored( colorLtGrey, "UPDATES: entityUpdates:%2i entityRefs:%2i lightUpdates:%i lightRefs:%i\n", + ImGui::TextColored( colorLtGrey, "UPDATES: entityUpdates:%-3i entityRefs:%-3i lightUpdates:%-2i lightRefs:%i\n", commonLocal.stats_frontend.c_entityUpdates, commonLocal.stats_frontend.c_entityReferences, commonLocal.stats_frontend.c_lightUpdates, commonLocal.stats_frontend.c_lightReferences ); } diff --git a/neo/framework/common_frame.cpp b/neo/framework/common_frame.cpp index aeddf302..fd458dbe 100644 --- a/neo/framework/common_frame.cpp +++ b/neo/framework/common_frame.cpp @@ -155,7 +155,7 @@ int idGameThread::Run() commonLocal.frameTiming.finishGameTime = Sys_Microseconds(); - SetThreadGameTime( ( commonLocal.frameTiming.finishGameTime - commonLocal.frameTiming.startGameTime ) / 1000 ); + SetThreadGameTime( commonLocal.frameTiming.finishGameTime - commonLocal.frameTiming.startGameTime ); // build render commands and geometry { @@ -165,9 +165,9 @@ int idGameThread::Run() commonLocal.frameTiming.finishDrawTime = Sys_Microseconds(); - SetThreadRenderTime( ( commonLocal.frameTiming.finishDrawTime - commonLocal.frameTiming.finishGameTime ) / 1000 ); + SetThreadRenderTime( commonLocal.frameTiming.finishDrawTime - commonLocal.frameTiming.finishGameTime ); - SetThreadTotalTime( ( commonLocal.frameTiming.finishDrawTime - commonLocal.frameTiming.startGameTime ) / 1000 ); + SetThreadTotalTime( commonLocal.frameTiming.finishDrawTime - commonLocal.frameTiming.startGameTime ); return 0; }