50 lines
1.2 KiB
C++
50 lines
1.2 KiB
C++
|
//========= Copyright <20> 1996-2005, Valve Corporation, All rights reserved. ============//
|
|||
|
//
|
|||
|
// Purpose:
|
|||
|
//
|
|||
|
// $NoKeywords: $
|
|||
|
//=============================================================================//
|
|||
|
|
|||
|
#include "pch_tier0.h"
|
|||
|
|
|||
|
#include "tier0/perfstats.h"
|
|||
|
|
|||
|
CPerfStatsData g_PerfStats;
|
|||
|
|
|||
|
CPerfStatsData::CPerfStatsData()
|
|||
|
{
|
|||
|
Reset();
|
|||
|
}
|
|||
|
|
|||
|
void CPerfStatsData::Tick()
|
|||
|
{
|
|||
|
if ( m_nFrames != 0 )
|
|||
|
{
|
|||
|
CPerfStatsSlotData* pMainSlot = &m_Slots[PERF_STATS_SLOT_MAINTHREAD];
|
|||
|
pMainSlot->EndTimer();
|
|||
|
|
|||
|
CPerfStatsSlotData* pMainNoWaitSlot = &m_Slots[PERF_STATS_SLOT_MAINTHREAD_NOWAIT];
|
|||
|
pMainNoWaitSlot->m_pszName = "MainThreadNoWait";
|
|||
|
CCycleCount::Sub(pMainSlot->m_CurrFrameTime, m_Slots[PERF_STATS_SLOT_END_FRAME].m_CurrFrameTime, pMainNoWaitSlot->m_CurrFrameTime);
|
|||
|
pMainNoWaitSlot->m_AccTotalTime += pMainNoWaitSlot->m_CurrFrameTime;
|
|||
|
}
|
|||
|
|
|||
|
++m_nFrames;
|
|||
|
for ( int iSlot = 0; iSlot < PERF_STATS_SLOT_MAX; ++iSlot )
|
|||
|
{
|
|||
|
m_Slots[iSlot].m_PrevFrameTime = m_Slots[iSlot].m_CurrFrameTime;
|
|||
|
m_Slots[iSlot].ResetFrameStats();
|
|||
|
}
|
|||
|
|
|||
|
m_Slots[PERF_STATS_SLOT_MAINTHREAD].StartTimer("MainThread");
|
|||
|
}
|
|||
|
|
|||
|
void CPerfStatsData::Reset()
|
|||
|
{
|
|||
|
m_nFrames = 0;
|
|||
|
|
|||
|
for ( int iSlot = 0; iSlot < PERF_STATS_SLOT_MAX; ++iSlot )
|
|||
|
{
|
|||
|
m_Slots[iSlot].Reset();
|
|||
|
}
|
|||
|
}
|