VR-Forces 5.0.2 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) 2021 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 
21 namespace osg
22 {
23  class RenderInfo;
24  class Camera;
25  class FrameStamp;
26  class Object;
27 }
28 
29 namespace osgDB
30 {
31  class DatabasePager;
32 }
33 
34 class DtDynamicLibrary;
35 
36 namespace makVrv
37 {
38  class DtOsgStatsHandler;
39  class DtProfileNode;
40 
44  {
45  public:
46 
48  {
49  ProfilerOverlayStates_OFF = 0,
50  ProfilerOverlayStates_FPS = 1,
51  ProfilerOverlayStates_FULL = 2
52  };
53 
54  const int NUM_PAGING_ENTRIES = 4;
55 
56  struct GPUData
57  {
59  : temp(0)
60  , shutdownTemp(0)
61  , slowdownTemp(0)
62  , maxTemp(0)
63  , clocksThrottleReasons(0)
64  , dllAvailable(-1)
65  , pState(0)
66  {
67  ;
68  }
69  unsigned int temp;
70  unsigned int shutdownTemp;
71  unsigned int slowdownTemp;
72  unsigned int maxTemp;
73  unsigned long long clocksThrottleReasons;
74  int pState;
76  };
77 
79  {
80  OsgObjectData(osg::Object* object);
81 
82  osg::Object* myObject;
83  std::string myClassName;
84  std::string myName;
86 
87  };
88 
91  {
98 
99  // osgEarth job arenas
103  };
104 
107  {
128  };
129 
130  static const int GRAPH_ENTRIES = 180;
131 
132  public:
135 
137  virtual ~DtImGuiLoaderStatsData();
138 
140  DtImGuiLoaderStatsData(const DtImGuiLoaderStatsData& rhs) = delete;
141 
143  DtImGuiLoaderStatsData& operator=(const DtImGuiLoaderStatsData& rhs) = delete;
144 
145  public:
146 
148  virtual void updateStats(DtDe& de, osg::Camera* camera, osg::FrameStamp* frameStamp, osgDB::DatabasePager* databasePager, int mipthreads);
149 
151  virtual void createUI(osg::RenderInfo& renderInfo, DtDe& de, unsigned int state);
152 
154  virtual int getNumberOf60HtzFrames();
155 
157  virtual float getGoodFrameDuration();
158 
160  virtual int getNumberOfBlownFrames();
161 
163  virtual float getBlownFrameDuration();
164 
166  virtual int getNumberOfVeryBlownFrames();
167 
169  virtual float getVeryBlownFrameDuration();
170 
172  virtual void reset();
173 
175  virtual void setStatsHandler(DtOsgStatsHandler* stats) { myStats = stats; }
176 
178  virtual void updateGpuStats(DtDe& de);
179 
182  virtual void addIntStat(const std::string& name, int value);
183 
186  virtual void addFloatStat(const std::string& name, float value);
187 
190  virtual void addIntStat(const std::string& subsystem, const std::string& name, int value);
191 
194  virtual void addFloatStat(const std::string& subsystem, const std::string& name, float value);
195 
197  float getLastCullTime();
198 
200  float getLastUpdateTime();
201 
203  float getLastDrawTime();
204 
206  float getLastGpuTime();
207 
208 
209  boost::signalslib::signal< void(unsigned int) > signal_addImguiTextureUI;
210 
211  protected:
212  // adds child nodes to tree
213  virtual int treeTraverse(DtProfileNode* node, int depth);
214 
216  virtual void printOsgTextures(void);
217 
219  virtual void printVrvTextures(void);
220 
222  virtual void printVrvResidentTextures(void);
223 
225  virtual void printVrvResidentBuffers(void);
226 
227  protected:
230  struct PagingTime
231  {
232  PagingTime() : myPagingTime(0.0f), myPagingFrameCount(0) { ; }
233  PagingTime(float pagingTime, int count) : myPagingTime(pagingTime), myPagingFrameCount(count) { ; }
236  };
237  std::deque<PagingTime> myPagingTimeArray;
238 
245  float myMaxYAxis;
249  float myHistogramData[25];
250  float myBlownHistogramData[5];
252  float myPhase;
253  float myFrameTimeArray[GRAPH_ENTRIES];
254  float myCullTimeArray[GRAPH_ENTRIES];
255  float myUpdateTimeArray[GRAPH_ENTRIES];
256  float myDrawTimeArray[GRAPH_ENTRIES];
257  float myGpuTimeArray[GRAPH_ENTRIES];
258  float my8ms[GRAPH_ENTRIES];
259  float my16ms[GRAPH_ENTRIES];
260  float my33ms[GRAPH_ENTRIES];
263 
264 
266  std::map<std::string, std::vector<OsgObjectData> > myObjectInfo;
267  std::map<std::string, std::vector<OsgObjectData> > myObjectInfoPrevious;
268  std::map<std::string, std::vector<OsgObjectData> > myObjectsInBoth;
270 
272 
273  typedef std::map<std::string, int> intStats;
274  typedef std::map<std::string, float> floatStats;
275  std::map<std::string, intStats> myIntStats;
276  std::map<std::string, floatStats> myFloatStats;
277 
279  std::map<std::string, std::string> myNvidiaSmiLog;
280  DtDynamicLibrary* myGpuPlugin;
281  typedef void(*addProc)(makVrv::DtImGuiLoaderStatsData::GPUData* gpu);
283 
285  };
286 }
Profile node class stores timing data for a profiled section.
Definition: DtProfileNode.h:22
int myStateGraphCount
Definition: DtImGuiLoaderStatsData.h:111
int myCurrentIndex
Definition: DtImGuiLoaderStatsData.h:251
DtDynamicLibrary * myGpuPlugin
Definition: DtImGuiLoaderStatsData.h:280
int myRequestCount
Definition: DtImGuiLoaderStatsData.h:97
std::map< std::string, float > floatStats
Definition: DtImGuiLoaderStatsData.h:274
int myLineCount
Definition: DtImGuiLoaderStatsData.h:119
Definition: DtImGuiLoaderStatsData.h:56
bool myEnableOsgCameraStats
Definition: DtImGuiLoaderStatsData.h:241
Structure for holding the stats from the osg camera rendering stats.
Definition: DtImGuiLoaderStatsData.h:106
GPUData myGpuState
Definition: DtImGuiLoaderStatsData.h:278
float myPagingTime
Definition: DtImGuiLoaderStatsData.h:234
#define DT_DLL_VRVOSG
Definition: vrvOsg.h:23
float myFrameRunningAverage
Definition: DtImGuiLoaderStatsData.h:247
float myTimeSpentUnresponsive
Definition: DtImGuiLoaderStatsData.h:229
std::map< std::string, std::string > myNvidiaSmiLog
Definition: DtImGuiLoaderStatsData.h:279
unsigned int slowdownTemp
Definition: DtImGuiLoaderStatsData.h:71
std::map< std::string, std::vector< OsgObjectData > > myObjectInfoPrevious
Definition: DtImGuiLoaderStatsData.h:267
DatabasePagerData myLastDatabasePagerData
Definition: DtImGuiLoaderStatsData.h:239
std::map< std::string, int > intStats
Definition: DtImGuiLoaderStatsData.h:273
OsgSceneGraphCameraStats myLastOsgCameraStats
Definition: DtImGuiLoaderStatsData.h:240
DtTimedSection myTimedSection
Definition: DtImGuiLoaderStatsData.h:228
std::map< std::string, std::vector< OsgObjectData > > myObjectInfo
Definition: DtImGuiLoaderStatsData.h:266
unsigned int shutdownTemp
Definition: DtImGuiLoaderStatsData.h:70
int myLightCount
Definition: DtImGuiLoaderStatsData.h:108
unsigned long long clocksThrottleReasons
Definition: DtImGuiLoaderStatsData.h:73
std::map< std::string, std::vector< OsgObjectData > > myObjectsInBoth
Definition: DtImGuiLoaderStatsData.h:268
unsigned int maxTemp
Definition: DtImGuiLoaderStatsData.h:72
int myQuadStripCount
Definition: DtImGuiLoaderStatsData.h:126
int myTriangleCount
Definition: DtImGuiLoaderStatsData.h:122
int myPolygonCount
Definition: DtImGuiLoaderStatsData.h:127
int myMaxPagedLods
Definition: DtImGuiLoaderStatsData.h:93
osg::Object * myObject
Definition: DtImGuiLoaderStatsData.h:82
int myVertexCount
Definition: DtImGuiLoaderStatsData.h:116
DtOsgStatsHandler * myStats
Definition: DtImGuiLoaderStatsData.h:262
class that gathers per frame stats and puts up UI
Definition: DtImGuiLoaderStatsData.h:43
int mySamples
Definition: DtImGuiLoaderStatsData.h:242
int myLineStripCount
Definition: DtImGuiLoaderStatsData.h:120
int myOsgEarthPendingJobs
Definition: DtImGuiLoaderStatsData.h:100
int myQuadCount
Definition: DtImGuiLoaderStatsData.h:125
int myTriFanCount
Definition: DtImGuiLoaderStatsData.h:124
float myMaxFrameTime
Definition: DtImGuiLoaderStatsData.h:246
DtDe & myDe
Definition: DtImGuiLoaderStatsData.h:284
float myMaxYAxis
Definition: DtImGuiLoaderStatsData.h:245
int myDepthCount
Definition: DtImGuiLoaderStatsData.h:110
boost::signalslib::signal< void(unsigned int) > signal_addImguiTextureUI
Definition: DtImGuiLoaderStatsData.h:209
int dllAvailable
Definition: DtImGuiLoaderStatsData.h:75
float myPhase
Definition: DtImGuiLoaderStatsData.h:252
int myPrimitiveSetCount
Definition: DtImGuiLoaderStatsData.h:117
int myOsgEarthRunningJobs
Definition: DtImGuiLoaderStatsData.h:101
bool myOnlyShowDifferentCounts
Definition: DtImGuiLoaderStatsData.h:269
int myBinCount
Definition: DtImGuiLoaderStatsData.h:109
bool myEnableObjectProfiling
Definition: DtImGuiLoaderStatsData.h:265
unsigned int temp
Definition: DtImGuiLoaderStatsData.h:69
int myTriStripCount
Definition: DtImGuiLoaderStatsData.h:123
int myActivePagedLods
Definition: DtImGuiLoaderStatsData.h:94
float myFrameDuration
Definition: DtImGuiLoaderStatsData.h:244
bool myAutoResetEnabled
Definition: DtImGuiLoaderStatsData.h:271
float myFrameRunningAverageMax
Definition: DtImGuiLoaderStatsData.h:248
int myToMergeCount
Definition: DtImGuiLoaderStatsData.h:95
GPUData()
Definition: DtImGuiLoaderStatsData.h:58
std::map< std::string, intStats > myIntStats
Definition: DtImGuiLoaderStatsData.h:275
PPP: 10/2021:
Definition: DtOsgStatsHandler.h:51
int myFastDrawableCount
Definition: DtImGuiLoaderStatsData.h:115
int myToCompileCount
Definition: DtImGuiLoaderStatsData.h:96
float myRefreshTime
Definition: DtImGuiLoaderStatsData.h:243
float myDDSThreads
Definition: DtImGuiLoaderStatsData.h:261
int myRefCount
Definition: DtImGuiLoaderStatsData.h:85
Definition: DtImGuiLoaderStatsData.h:230
Contains DLL export macros.
std::deque< PagingTime > myPagingTimeArray
Definition: DtImGuiLoaderStatsData.h:237
Structure for holding the stats from the osg database pager.
Definition: DtImGuiLoaderStatsData.h:90
Definition: DtImGuiLoaderStatsData.h:78
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:70
PagingTime(float pagingTime, int count)
Definition: DtImGuiLoaderStatsData.h:233
PagingTime()
Definition: DtImGuiLoaderStatsData.h:232
int myDrawableCount
Definition: DtImGuiLoaderStatsData.h:113
int myPointCount
Definition: DtImGuiLoaderStatsData.h:118
std::string myClassName
Definition: DtImGuiLoaderStatsData.h:83
int myImposterCount
Definition: DtImGuiLoaderStatsData.h:112
int myPagingFrameCount
Definition: DtImGuiLoaderStatsData.h:235
virtual void setStatsHandler(DtOsgStatsHandler *stats)
gui handler
Definition: DtImGuiLoaderStatsData.h:175
int myOsgEarthICOJobs
Definition: DtImGuiLoaderStatsData.h:102
int pState
Definition: DtImGuiLoaderStatsData.h:74
ProfilerOverlayStates
Definition: DtImGuiLoaderStatsData.h:47
int myLineLoopCount
Definition: DtImGuiLoaderStatsData.h:121
std::map< std::string, floatStats > myFloatStats
Definition: DtImGuiLoaderStatsData.h:276
int mySortedDrawableCount
Definition: DtImGuiLoaderStatsData.h:114
std::string myName
Definition: DtImGuiLoaderStatsData.h:84
int myPagingThreads
Definition: DtImGuiLoaderStatsData.h:92
addProc myAddGpuImguiUI
Definition: DtImGuiLoaderStatsData.h:282

Document ID: Generated on Sun Dec 4 20:22:03 EST 2022 from SVN revision 249613
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)