Skip to content

Commit

Permalink
Dump additional xrXRC statistics.
Browse files Browse the repository at this point in the history
  • Loading branch information
nitrocaster committed Dec 5, 2015
1 parent d6fb874 commit cc13f31
Show file tree
Hide file tree
Showing 14 changed files with 50 additions and 41 deletions.
4 changes: 2 additions & 2 deletions src/Layers/xrRender/DetailManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -73,8 +73,8 @@ void CDetailManager::SSwingValue::lerp(const SSwingValue& A, const SSwingValue&
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CDetailManager::CDetailManager ()
// XXX stats: add to statistics
CDetailManager::CDetailManager () : xrc("detail manager")
{
dtFS = 0;
dtSlots = 0;
Expand Down
3 changes: 2 additions & 1 deletion src/Layers/xrRender/HOM.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ void __stdcall CHOM::MT_RENDER()
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CHOM::CHOM()
CHOM::CHOM() : xrc("HOM")
{
bEnabled = FALSE;
m_pModel = 0;
Expand Down Expand Up @@ -341,6 +341,7 @@ void CHOM::DumpStatistics(IGameFont &font, IPerformanceAlert *alert)
font.OutNext("- frustum: %u", stats.FrustumTriangleCount);
font.OutNext("- total: %d", m_pModel ? m_pModel->get_tris_count() : 0);
stats.FrameStart();
xrc.DumpStatistics(font, alert);
}

#ifdef DEBUG
Expand Down
5 changes: 3 additions & 2 deletions src/Layers/xrRender/WallmarksEngine.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -45,10 +45,11 @@ CWallmarksEngine::wm_slot* CWallmarksEngine::AppendSlot (ref_shader shader)
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CWallmarksEngine::CWallmarksEngine ()
CWallmarksEngine::CWallmarksEngine () :
#ifdef CONFIG_PROFILE_LOCKS
:lock(MUTEX_PROFILE_ID(CWallmarksEngine))
lock(MUTEX_PROFILE_ID(CWallmarksEngine)),
#endif // CONFIG_PROFILE_LOCKS
xrc("wallmarks") // XXX stats: add to statistics
{
static_pool.reserve (256);
marks.reserve (256);
Expand Down
3 changes: 2 additions & 1 deletion src/Layers/xrRenderPC_R1/FStaticRender.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -317,7 +317,7 @@ IC void gm_SetNearer (BOOL bNearer)
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CRender::CRender ()
:m_bFirstFrameAfterReset(false)
:m_bFirstFrameAfterReset(false), Sectors_xrc("render")
{
}

Expand Down Expand Up @@ -655,6 +655,7 @@ void CRender::DumpStatistics(IGameFont &font, IPerformanceAlert *alert)
{
D3DXRenderBase::DumpStatistics(font, alert);
HOM.DumpStatistics(font, alert);
Sectors_xrc.DumpStatistics(font, alert);
}

#pragma comment(lib,"d3dx9.lib")
Expand Down
4 changes: 2 additions & 2 deletions src/Layers/xrRenderPC_R1/LightPPA.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -333,8 +333,8 @@ void CLightR_Manager::add (light* L)
}
VERIFY (L->spatial.sector);
}

CLightR_Manager::CLightR_Manager ()
// XXX stats: add to statistics
CLightR_Manager::CLightR_Manager () : xrc("LightR_Manager")
{
}

Expand Down
4 changes: 2 additions & 2 deletions src/Layers/xrRenderPC_R1/LightShadows.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,8 @@ const u32 cache_old = 30*1000; // 30 secs
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CLightShadows::CLightShadows()
// XXX: add to statistics
CLightShadows::CLightShadows() : xrc("LightShadows")
{
current = 0;
RT = 0;
Expand Down
3 changes: 2 additions & 1 deletion src/Layers/xrRenderPC_R2/r2.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -515,7 +515,7 @@ void CRender::rmNormal ()
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CRender::CRender()
:m_bFirstFrameAfterReset(false)
:m_bFirstFrameAfterReset(false), Sectors_xrc("render")
{
init_cacades();
}
Expand Down Expand Up @@ -543,6 +543,7 @@ void CRender::DumpStatistics(IGameFont &font, IPerformanceAlert *alert)
font.OutNext("- culled: %u", Stats.ic_culled);
Stats.FrameStart();
HOM.DumpStatistics(font, alert);
Sectors_xrc.DumpStatistics(font, alert);
}

/////////
Expand Down
3 changes: 2 additions & 1 deletion src/Layers/xrRenderPC_R3/r3.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -648,7 +648,7 @@ void CRender::rmNormal ()
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CRender::CRender()
:m_bFirstFrameAfterReset(false)
:m_bFirstFrameAfterReset(false), Sectors_xrc("render")
{
init_cacades();
}
Expand Down Expand Up @@ -676,6 +676,7 @@ void CRender::DumpStatistics(IGameFont &font, IPerformanceAlert *alert)
font.OutNext("- culled: %u", Stats.ic_culled);
Stats.FrameStart();
HOM.DumpStatistics(font, alert);
Sectors_xrc.DumpStatistics(font, alert);
}

static inline bool match_shader_id ( LPCSTR const debug_shader_id, LPCSTR const full_shader_id, FS_FileSet const& file_set, string_path& result );
Expand Down
3 changes: 2 additions & 1 deletion src/Layers/xrRenderPC_R4/r4.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -662,7 +662,7 @@ void CRender::rmNormal ()
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CRender::CRender()
:m_bFirstFrameAfterReset(false)
:m_bFirstFrameAfterReset(false), Sectors_xrc("render")
{
init_cacades();
}
Expand Down Expand Up @@ -690,6 +690,7 @@ void CRender::DumpStatistics(IGameFont &font, IPerformanceAlert *alert)
font.OutNext("- culled: %u", Stats.ic_culled);
Stats.FrameStart();
HOM.DumpStatistics(font, alert);
Sectors_xrc.DumpStatistics(font, alert);
}

/////////
Expand Down
18 changes: 10 additions & 8 deletions src/xrCDB/xrXRC.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,17 @@

#include "stdafx.h"
#include "xrXRC.h"
#include "xrEngine/IGameFont.hpp"
#include "xrEngine/IPerformanceAlert.hpp"

XRCDB_API xrXRC XRC;
XRCDB_API xrXRC XRC("global");

xrXRC::xrXRC()
void xrXRC::DumpStatistics(IGameFont &font, IPerformanceAlert *alert)
{

}

xrXRC::~xrXRC()
{

Stats.FrameEnd();
font.OutNext("XRC (%s):", name);
font.OutNext("- ray: %2.2fms, %d, %2.0fK", Stats.RayQuery.result, Stats.RayQuery.count, Stats.RayPs);
font.OutNext("- box: %2.2fms, %d, %2.0fK", Stats.BoxQuery.result, Stats.BoxQuery.count, Stats.BoxPs);
font.OutNext("- frustum: %2.2fms, %d", Stats.FrustumQuery.result, Stats.FrustumQuery.count);
Stats.FrameStart();
}
18 changes: 16 additions & 2 deletions src/xrCDB/xrXRC.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,21 @@
//#pragma once

#include "xrCDB.h"
class IGameFont;
class IPerformanceAlert;

class XRCDB_API xrXRC
{
CDB::COLLIDER CL;
const char *name;
public:
struct ColliderStatistics
{
CStatTimer RayQuery; // total: ray-testing
CStatTimer BoxQuery; // total: box query
CStatTimer FrustumQuery; // total: frustum query
float RayPs = 0;
float BoxPs = 0;

ColliderStatistics() { FrameStart(); }

Expand All @@ -32,6 +37,14 @@ class XRCDB_API xrXRC
RayQuery.FrameEnd();
BoxQuery.FrameEnd();
FrustumQuery.FrameEnd();
float newRayPs = RayQuery.count/RayQuery.result;
if (std::isnan(newRayPs))
newRayPs = 0;
RayPs = 0.99f*RayPs + 0.01f*newRayPs;
float newBoxPs = BoxQuery.count/BoxQuery.result;
if (std::isnan(newBoxPs))
newBoxPs = 0;
BoxPs = 0.99f*BoxPs + 0.01f*newBoxPs;
}
};
ColliderStatistics Stats;
Expand Down Expand Up @@ -76,8 +89,9 @@ class XRCDB_API xrXRC
IC void r_clear () { CL.r_clear(); };
IC void r_clear_compact () { CL.r_clear_compact(); };

xrXRC();
~xrXRC();
void DumpStatistics(IGameFont &font, IPerformanceAlert *alert);

xrXRC(const char *name = "<unknown>") : name(name) {}
};
XRCDB_API extern xrXRC XRC;

Expand Down
5 changes: 4 additions & 1 deletion src/xrCDB/xr_area.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ using namespace collide;
// Purpose : stores space slots
//----------------------------------------------------------------------
CObjectSpace::CObjectSpace ( ):
xrc()
xrc("object space")
#ifdef CONFIG_PROFILE_LOCKS
,Lock(MUTEX_PROFILE_ID(CObjectSpace::Lock))
#endif // CONFIG_PROFILE_LOCKS
Expand Down Expand Up @@ -166,3 +166,6 @@ void CObjectSpace::dbgRender()
}
*/
#endif
// XXX stats: add to statistics
void CObjectSpace::DumpStatistics(IGameFont &font, IPerformanceAlert *alert)
{ xrc.DumpStatistics(font, alert); }
1 change: 1 addition & 0 deletions src/xrCDB/xr_area.h
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@ class XRCDB_API CObjectSpace
void dbgRender ();
//ref_shader dbgGetShader () { return sh_debug; }
#endif
void DumpStatistics(IGameFont &font, IPerformanceAlert *alert);
};


Expand Down
17 changes: 0 additions & 17 deletions src/xrEngine/Stats.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,6 @@ CStats::~CStats()
xr_delete(statsFont);
}


static void DumpSpatialStatistics(IGameFont &font, IPerformanceAlert *alert, ISpatial_DB &db, float engineTotal)
{
#ifdef DEBUG
Expand All @@ -87,21 +86,6 @@ static void DumpSpatialStatistics(IGameFont &font, IPerformanceAlert *alert, ISp
#endif
}

static void DumpColliderStatistics(IGameFont &font, IPerformanceAlert *alert)
{
auto &stats = XRC.Stats;
stats.FrameEnd();
static float rayPs = 0;
static float boxPs = 0;
rayPs = 0.99f*rayPs + 0.01f*(stats.RayQuery.count/stats.RayQuery.result);
boxPs = 0.99f*boxPs + 0.01f*(stats.BoxQuery.count/stats.BoxQuery.result);
font.OutNext("XRC:");
font.OutNext("- ray: %2.2fms, %d, %2.0fK", stats.RayQuery.result, stats.RayQuery.count, rayPs);
font.OutNext("- box: %2.2fms, %d, %2.0fK", stats.BoxQuery.result, stats.BoxQuery.count, boxPs);
font.OutNext("- frustum: %2.2fms, %d", stats.FrustumQuery.result, stats.FrustumQuery.count);
stats.FrameStart();
}

void CStats::Show()
{
float memCalls = float(Memory.stat_calls);
Expand Down Expand Up @@ -142,7 +126,6 @@ void CStats::Show()
g_pGamePersistent->DumpStatistics(font, alertPtr);
DumpSpatialStatistics(font, alertPtr, *g_SpatialSpace, engineTotal);
DumpSpatialStatistics(font, alertPtr, *g_SpatialSpacePhysic, engineTotal);
DumpColliderStatistics(font, alertPtr);
if (physics_world())
physics_world()->DumpStatistics(font, alertPtr);
font.OutSet(200, 0);
Expand Down

0 comments on commit cc13f31

Please sign in to comment.