Browse Source

engine: upgrade benchmark

optimization
nillerusr 2 years ago
parent
commit
de873d3fc3
  1. 34
      engine/cbenchmark.cpp
  2. 8
      engine/cbenchmark.h
  3. 5
      engine/sv_main.cpp
  4. 3
      togl/linuxwin/dxabstract.cpp
  5. 3
      togles/linuxwin/dxabstract.cpp

34
engine/cbenchmark.cpp

@ -71,13 +71,16 @@ void CBenchmarkResults::StartBenchmark( const CCommand &args ) @@ -71,13 +71,16 @@ void CBenchmarkResults::StartBenchmark( const CCommand &args )
SetResultsFilename( pszFilename );
// set any necessary settings
host_framerate.SetValue( (float)(1.0f / host_state.interval_per_tick) );
//host_framerate.SetValue( (float)(1.0f / host_state.interval_per_tick) );
// get the current frame and time
m_iStartFrame = host_framecount;
m_flStartTime = realtime;
m_flNextSecondTime = realtime + 1.0f;
m_iNextSecondFrame = host_framecount;
}
//-----------------------------------------------------------------------------
// Purpose: writes out results to file
//-----------------------------------------------------------------------------
@ -86,7 +89,7 @@ void CBenchmarkResults::StopBenchmark() @@ -86,7 +89,7 @@ void CBenchmarkResults::StopBenchmark()
m_bIsTestRunning = false;
// reset
host_framerate.SetValue( 0 );
//host_framerate.SetValue( 0 );
// print out some stats
int numticks = host_framecount - m_iStartFrame;
@ -103,12 +106,23 @@ void CBenchmarkResults::StopBenchmark() @@ -103,12 +106,23 @@ void CBenchmarkResults::StopBenchmark()
kv->SetFloat( "framerate", framerate );
kv->SetInt( "build", build_number() );
CUtlString str;
for( int i = 0; i < m_FPSInfo.Count(); i++ )
{
str += m_FPSInfo[i];
if( i != m_FPSInfo.Count()-1 )
str += ',';
}
kv->SetString( "framerates", str );
// get material system info
GetMaterialSystemConfigForBenchmarkUpload( kv );
// save
kv->SaveToFile( g_pFileSystem, szFilename, "MOD" );
kv->deleteThis();
m_FPSInfo.Purge();
}
//-----------------------------------------------------------------------------
@ -152,6 +166,20 @@ void CBenchmarkResults::Upload() @@ -152,6 +166,20 @@ void CBenchmarkResults::Upload()
#endif
}
void CBenchmarkResults::Frame()
{
if( !m_bIsTestRunning )
return;
if( m_flNextSecondTime <= realtime )
{
m_FPSInfo.AddToTail( host_framecount-m_iNextSecondFrame );
m_flNextSecondTime += 1.0f;
m_iNextSecondFrame = host_framecount;
}
}
CON_COMMAND_F( bench_start, "Starts gathering of info. Arguments: filename to write results into", FCVAR_CHEAT )
{
GetBenchResultsMgr()->StartBenchmark( args );

8
engine/cbenchmark.h

@ -34,13 +34,19 @@ public: @@ -34,13 +34,19 @@ public:
void StopBenchmark();
void SetResultsFilename( const char *pFilename );
void Upload();
void Frame();
private:
bool m_bIsTestRunning;
char m_szFilename[256];
int m_flStartTime;
float m_flStartTime;
int m_iStartFrame;
float m_flNextSecondTime;
int m_iNextSecondFrame;
CUtlVector<int> m_FPSInfo;
};
inline CBenchmarkResults *GetBenchResultsMgr()

5
engine/sv_main.cpp

@ -72,6 +72,7 @@ @@ -72,6 +72,7 @@
#include "cl_rcon.h"
#include "host_state.h"
#include "voice.h"
#include "cbenchmark.h"
// memdbgon must be the last include file in a .cpp file!!!
#include "tier0/memdbgon.h"
@ -2845,6 +2846,9 @@ void SV_Think( bool bIsSimulating ) @@ -2845,6 +2846,9 @@ void SV_Think( bool bIsSimulating )
bIsSimulating = bIsSimulating && ( sv.IsMultiplayer() || cl.IsActive() );
g_pServerPluginHandler->GameFrame( bIsSimulating );
if( bIsSimulating )
GetBenchResultsMgr()->Frame();
}
//-----------------------------------------------------------------------------
@ -2920,6 +2924,7 @@ void SV_Frame( bool finalTick ) @@ -2920,6 +2924,7 @@ void SV_Frame( bool finalTick )
// unlock sting tables to allow changes, helps to find unwanted changes (bebug build only)
networkStringTableContainerServer->Lock( false );
// Run any commands from client and play client Think functions if it is time.
sv.RunFrame(); // read network input etc

3
togl/linuxwin/dxabstract.cpp

@ -6481,7 +6481,8 @@ HRESULT ID3DXMatrixStack::Create() @@ -6481,7 +6481,8 @@ HRESULT ID3DXMatrixStack::Create()
m_stack.EnsureCapacity( 16 ); // 1KB ish
m_stack.AddToTail();
m_stackTop = 0; // top of stack is at index 0 currently
m_mark = false;
LoadIdentity();
return S_OK;

3
togles/linuxwin/dxabstract.cpp

@ -6478,7 +6478,8 @@ HRESULT ID3DXMatrixStack::Create() @@ -6478,7 +6478,8 @@ HRESULT ID3DXMatrixStack::Create()
m_stack.EnsureCapacity( 16 ); // 1KB ish
m_stack.AddToTail();
m_stackTop = 0; // top of stack is at index 0 currently
m_mark = false;
LoadIdentity();
return S_OK;

Loading…
Cancel
Save