VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtImGuiLoaderStatsData.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2025 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
9 
10 #pragma once
11 
12 #include <vrvOsg/vrvOsg.h>
13 
14 #include <vlutil/vlPerformanceStats.h>
15 
16 #include <vrvUtil/signalslib.h>
17 #include <map>
18 #include <string>
19 #include <deque>
20 #include <unordered_map>
21 
22 namespace osg
23 {
24  class RenderInfo;
25  class Camera;
26  class FrameStamp;
27  class Object;
28 }
29 
30 namespace osgDB
31 {
32  class DatabasePager;
33 }
34 
35 class DtDynamicLibrary;
36 
37 namespace makVrv
38 {
39  class DtOsgStatsHandler;
40  class DtProfileNode;
41 
45  {
46  public:
47 
49  {
50  ProfilerOverlayStates_OFF = 0,
51  ProfilerOverlayStates_FPS = 1,
52  ProfilerOverlayStates_FULL = 2
53  };
54 
55  const int NUM_PAGING_ENTRIES = 4;
56 
57  struct GPUData
58  {
60  : temp(0)
61  , shutdownTemp(0)
62  , slowdownTemp(0)
63  , maxTemp(0)
64  , clocksThrottleReasons(0)
65  , dllAvailable(-1)
66  , pState(0)
67  {
68  ;
69  }
70  unsigned int temp;
71  unsigned int shutdownTemp;
72  unsigned int slowdownTemp;
73  unsigned int maxTemp;
74  unsigned long long clocksThrottleReasons;
75  int pState;
77  };
78 
80  {
81  OsgObjectData(osg::Object* object);
82 
83  osg::Object* myObject;
84  std::string myClassName;
85  std::string myName;
87 
88  };
89 
92  {
99 
100  // osgEarth job arenas
105  };
106 
109  {
130  };
131 
132  static const int GRAPH_ENTRIES = 180;
133 
134  public:
137 
139  virtual ~DtImGuiLoaderStatsData();
140 
142  DtImGuiLoaderStatsData(const DtImGuiLoaderStatsData& rhs) = delete;
143 
145  DtImGuiLoaderStatsData& operator=(const DtImGuiLoaderStatsData& rhs) = delete;
146 
147  public:
148 
150  virtual void updateStats(DtDe& de, osg::Camera* camera, osg::FrameStamp* frameStamp, osgDB::DatabasePager* databasePager, int mipthreads);
151 
153  virtual void createUI(osg::RenderInfo& renderInfo, DtDe& de, unsigned int state);
154 
156  virtual int getNumberOf60HtzFrames();
157 
159  virtual float getGoodFrameDuration();
160 
162  virtual int getNumberOfBlownFrames();
163 
165  virtual float getBlownFrameDuration();
166 
168  virtual int getNumberOfVeryBlownFrames();
169 
171  virtual float getVeryBlownFrameDuration();
172 
174  virtual void reset();
175 
177  virtual void setStatsHandler(DtOsgStatsHandler* stats) { myStats = stats; }
178 
180  virtual void updateGpuStats(DtDe& de);
181 
184  virtual void addIntStat(const std::string& name, int value);
185 
188  virtual void addFloatStat(const std::string& name, float value);
189 
192  virtual void addIntStat(const std::string& subsystem, const std::string& name, int value);
193 
196  virtual void addFloatStat(const std::string& subsystem, const std::string& name, float value);
197 
199  float getLastCullTime();
200 
202  float getLastUpdateTime();
203 
205  float getLastDrawTime();
206 
208  float getLastGpuTime();
209 
210  protected:
211  // adds child nodes to tree
212  virtual int treeTraverse(DtProfileNode* node, int depth);
213 
215  virtual void printOsgTextures(void);
216 
218  void printOsgEarthGLMemory(void);
219 
221  virtual void printVrvTextures(void);
222 
224  virtual void printVrvBuffers(void);
225 
227  virtual void printTextureBreaksup(const std::unordered_map<unsigned int, int>& textures);
228 
230  virtual void updateVrvGpuArenaStats(DtDe& de);
231 
233  virtual void createVrvGpuArenaStats();
234 
235  protected:
236  DtTimedSection myTimedSection;
238  struct PagingTime
239  {
240  PagingTime() : myPagingTime(0.0f), myPagingFrameCount(0) { ; }
241  PagingTime(float pagingTime, int count) : myPagingTime(pagingTime), myPagingFrameCount(count) { ; }
244  };
245  std::deque<PagingTime> myPagingTimeArray;
246 
253  float myMaxYAxis;
257  float myHistogramData[25];
258  float myBlownHistogramData[5];
260  float myPhase;
261  float myFrameTimeArray[GRAPH_ENTRIES];
262  float myCullTimeArray[GRAPH_ENTRIES];
263  float myUpdateTimeArray[GRAPH_ENTRIES];
264  float myDrawTimeArray[GRAPH_ENTRIES];
265  float myGpuTimeArray[GRAPH_ENTRIES];
266  float my8ms[GRAPH_ENTRIES];
267  float my16ms[GRAPH_ENTRIES];
268  float my33ms[GRAPH_ENTRIES];
271 
272 
274  std::map<std::string, std::vector<OsgObjectData> > myObjectInfo;
275  std::map<std::string, std::vector<OsgObjectData> > myObjectInfoPrevious;
276  std::map<std::string, std::vector<OsgObjectData> > myObjectsInBoth;
278 
280 
281  typedef std::map<std::string, int> intStats;
282  typedef std::map<std::string, float> floatStats;
283  std::map<std::string, intStats> myIntStats;
284  std::map<std::string, floatStats> myFloatStats;
285 
287  std::map<std::string, std::string> myNvidiaSmiLog;
288  DtDynamicLibrary* myGpuPlugin;
289  typedef void(*addProc)(makVrv::DtImGuiLoaderStatsData::GPUData* gpu);
291 
295  };
296 }
Profile node class stores timing data for a profiled section.
Definition: DtProfileNode.h:22
int myStateGraphCount
Definition: DtImGuiLoaderStatsData.h:113
int myCurrentIndex
Definition: DtImGuiLoaderStatsData.h:259
DtDynamicLibrary * myGpuPlugin
Definition: DtImGuiLoaderStatsData.h:288
int myRequestCount
Definition: DtImGuiLoaderStatsData.h:98
std::map< std::string, float > floatStats
Definition: DtImGuiLoaderStatsData.h:282
int myLineCount
Definition: DtImGuiLoaderStatsData.h:121
Definition: DtImGuiLoaderStatsData.h:57
bool myEnableOsgCameraStats
Definition: DtImGuiLoaderStatsData.h:249
Structure for holding the stats from the osg camera rendering stats.
Definition: DtImGuiLoaderStatsData.h:108
GPUData myGpuState
Definition: DtImGuiLoaderStatsData.h:286
float myPagingTime
Definition: DtImGuiLoaderStatsData.h:242
#define DT_DLL_VRVOSG
Definition: vrvOsg.h:23
float myFrameRunningAverage
Definition: DtImGuiLoaderStatsData.h:255
float myTimeSpentUnresponsive
Definition: DtImGuiLoaderStatsData.h:237
std::map< std::string, std::string > myNvidiaSmiLog
Definition: DtImGuiLoaderStatsData.h:287
unsigned int slowdownTemp
Definition: DtImGuiLoaderStatsData.h:72
std::map< std::string, std::vector< OsgObjectData > > myObjectInfoPrevious
Definition: DtImGuiLoaderStatsData.h:275
DatabasePagerData myLastDatabasePagerData
Definition: DtImGuiLoaderStatsData.h:247
std::map< std::string, int > intStats
Definition: DtImGuiLoaderStatsData.h:281
OsgSceneGraphCameraStats myLastOsgCameraStats
Definition: DtImGuiLoaderStatsData.h:248
DtTimedSection myTimedSection
Definition: DtImGuiLoaderStatsData.h:236
std::map< std::string, std::vector< OsgObjectData > > myObjectInfo
Definition: DtImGuiLoaderStatsData.h:274
unsigned int shutdownTemp
Definition: DtImGuiLoaderStatsData.h:71
int myLightCount
Definition: DtImGuiLoaderStatsData.h:110
unsigned long long clocksThrottleReasons
Definition: DtImGuiLoaderStatsData.h:74
std::map< std::string, std::vector< OsgObjectData > > myObjectsInBoth
Definition: DtImGuiLoaderStatsData.h:276
unsigned int maxTemp
Definition: DtImGuiLoaderStatsData.h:73
int myQuadStripCount
Definition: DtImGuiLoaderStatsData.h:128
int myTriangleCount
Definition: DtImGuiLoaderStatsData.h:124
int myPolygonCount
Definition: DtImGuiLoaderStatsData.h:129
int myMaxPagedLods
Definition: DtImGuiLoaderStatsData.h:94
osg::Object * myObject
Definition: DtImGuiLoaderStatsData.h:83
int myVertexCount
Definition: DtImGuiLoaderStatsData.h:118
DtOsgStatsHandler * myStats
Definition: DtImGuiLoaderStatsData.h:270
class that gathers per frame stats and puts up UI
Definition: DtImGuiLoaderStatsData.h:44
int mySamples
Definition: DtImGuiLoaderStatsData.h:250
int myLineStripCount
Definition: DtImGuiLoaderStatsData.h:122
int myOsgEarthPendingJobs
Definition: DtImGuiLoaderStatsData.h:101
int myQuadCount
Definition: DtImGuiLoaderStatsData.h:127
int myTriFanCount
Definition: DtImGuiLoaderStatsData.h:126
float myMaxFrameTime
Definition: DtImGuiLoaderStatsData.h:254
int myDDSThreads
Definition: DtImGuiLoaderStatsData.h:269
DtDe & myDe
Definition: DtImGuiLoaderStatsData.h:292
float myMaxYAxis
Definition: DtImGuiLoaderStatsData.h:253
int myDepthCount
Definition: DtImGuiLoaderStatsData.h:112
int dllAvailable
Definition: DtImGuiLoaderStatsData.h:76
float myPhase
Definition: DtImGuiLoaderStatsData.h:260
int myPrimitiveSetCount
Definition: DtImGuiLoaderStatsData.h:119
int myOsgEarthRunningJobs
Definition: DtImGuiLoaderStatsData.h:102
bool myOnlyShowDifferentCounts
Definition: DtImGuiLoaderStatsData.h:277
int myBinCount
Definition: DtImGuiLoaderStatsData.h:111
bool myEnableObjectProfiling
Definition: DtImGuiLoaderStatsData.h:273
unsigned int temp
Definition: DtImGuiLoaderStatsData.h:70
int myTriStripCount
Definition: DtImGuiLoaderStatsData.h:125
int myActivePagedLods
Definition: DtImGuiLoaderStatsData.h:95
float myFrameDuration
Definition: DtImGuiLoaderStatsData.h:252
bool myAutoResetEnabled
Definition: DtImGuiLoaderStatsData.h:279
int myIndirectGpuOneTimeOpsRemaining
Definition: DtImGuiLoaderStatsData.h:293
float myFrameRunningAverageMax
Definition: DtImGuiLoaderStatsData.h:256
int myToMergeCount
Definition: DtImGuiLoaderStatsData.h:96
GPUData()
Definition: DtImGuiLoaderStatsData.h:59
std::map< std::string, intStats > myIntStats
Definition: DtImGuiLoaderStatsData.h:283
PPP: 10/2021:
Definition: DtOsgStatsHandler.h:51
int myFastDrawableCount
Definition: DtImGuiLoaderStatsData.h:117
int myToCompileCount
Definition: DtImGuiLoaderStatsData.h:97
float myRefreshTime
Definition: DtImGuiLoaderStatsData.h:251
int myRefCount
Definition: DtImGuiLoaderStatsData.h:86
Definition: DtImGuiLoaderStatsData.h:238
Contains DLL export macros.
std::deque< PagingTime > myPagingTimeArray
Definition: DtImGuiLoaderStatsData.h:245
Structure for holding the stats from the osg database pager.
Definition: DtImGuiLoaderStatsData.h:91
Definition: DtImGuiLoaderStatsData.h:79
The DtDe is the core component of any VR-Vantage application. It owns a DtRenderer, DtDeCommunicator, as well as a DtDisplay and other things.
Definition: DtDe.h:76
PagingTime(float pagingTime, int count)
Definition: DtImGuiLoaderStatsData.h:241
PagingTime()
Definition: DtImGuiLoaderStatsData.h:240
int myDrawableCount
Definition: DtImGuiLoaderStatsData.h:115
int myPointCount
Definition: DtImGuiLoaderStatsData.h:120
std::string myClassName
Definition: DtImGuiLoaderStatsData.h:84
int mySensorizedObjectsPending
Definition: DtImGuiLoaderStatsData.h:104
int myImposterCount
Definition: DtImGuiLoaderStatsData.h:114
int myPagingFrameCount
Definition: DtImGuiLoaderStatsData.h:243
virtual void setStatsHandler(DtOsgStatsHandler *stats)
gui handler
Definition: DtImGuiLoaderStatsData.h:177
int myOsgEarthICOJobs
Definition: DtImGuiLoaderStatsData.h:103
int pState
Definition: DtImGuiLoaderStatsData.h:75
ProfilerOverlayStates
Definition: DtImGuiLoaderStatsData.h:48
int myLineLoopCount
Definition: DtImGuiLoaderStatsData.h:123
std::map< std::string, floatStats > myFloatStats
Definition: DtImGuiLoaderStatsData.h:284
int mySortedDrawableCount
Definition: DtImGuiLoaderStatsData.h:116
int myIndirectGpuBufferUpdatesRemaining
Definition: DtImGuiLoaderStatsData.h:294
std::string myName
Definition: DtImGuiLoaderStatsData.h:85
int myPagingThreads
Definition: DtImGuiLoaderStatsData.h:93
addProc myAddGpuImguiUI
Definition: DtImGuiLoaderStatsData.h:290

Document ID: Generated on Thu Oct 23 22:29:17 EDT 2025 from SVN revision 280951
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)