Use proper getters & setters for gameThread and renderSync times

This commit is contained in:
Stephen Saunders 2021-09-27 22:58:32 -04:00
parent 09e0a4c5c8
commit af08e7d414
3 changed files with 29 additions and 17 deletions

View file

@ -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

View file

@ -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 );
}

View file

@ -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;
}