Pioneer
Stats.h
Go to the documentation of this file.
1 // Copyright © 2008-2023 Pioneer Developers. See AUTHORS.txt for details
2 // Licensed under the terms of the GPL v3. See licenses/GPL-3.txt
3 
4 #ifndef _STATS_H
5 #define _STATS_H
6 
7 #include "PerfStats.h"
8 
9 #include "SDL_stdinc.h"
10 #include <utility>
11 #include <vector>
12 
13 namespace Graphics {
14 
19  class Stats : protected Perf::Stats {
20  public:
21  static const Uint32 MAX_FRAMES_STORE = 30U;
22  enum StatType {
23  // renderer entries
28 
29  // buffers
37 
41 
42  // objects
53 
54  // scenegraph entries
56 
57  // resource utilization stats
64 
65  MAX_STAT
66  };
67 
68  struct TFrameData {
69  uint32_t m_stats[MAX_STAT];
70  };
71 
72  Stats();
73  ~Stats() {}
74 
75  void AddToStatCount(const StatType type, const uint32_t count) const
76  {
77  CounterAdd(m_counterRefs.at(type), count);
78  }
79 
80  void DecStatCount(const StatType type, const uint32_t count) const
81  {
82  CounterDec(m_counterRefs.at(type), count);
83  }
84 
85  void SetStatCount(const StatType type, const uint32_t count) const
86  {
87  CounterSet(m_counterRefs.at(type), count);
88  }
89 
90  void NextFrame();
91 
92  const TFrameData &FrameStatsPrevious() const;
93  const FrameInfo &GetFullStats() const { return GetFrameStats(); }
94 
95  private:
96  TFrameData m_frameStats[MAX_FRAMES_STORE];
97  Uint32 m_currentFrame;
98 
99  std::vector<Perf::Stats::CounterRef> m_counterRefs;
100  };
101 
102 } // namespace Graphics
103 
104 #endif
Definition: Stats.h:19
StatType
Definition: Stats.h:22
@ STAT_DRAW_UNIFORM_BUFFER_ALLOCS
Definition: Stats.h:34
@ STAT_NUM_SHADER_PROGRAMS
Definition: Stats.h:39
@ STAT_DESTROY_BUFFER
Definition: Stats.h:31
@ MAX_STAT
Definition: Stats.h:65
@ STAT_NUM_POINTS
Definition: Stats.h:25
@ STAT_NUM_RENDER_STATES
Definition: Stats.h:38
@ STAT_NUM_TRIS
Definition: Stats.h:27
@ STAT_NUM_TEXTURECUBE
Definition: Stats.h:60
@ STAT_DYNAMIC_DRAW_BUFFER_CREATED
Definition: Stats.h:36
@ STAT_MEM_TEXTUREARRAY2D
Definition: Stats.h:63
@ STAT_BUILDINGS
Definition: Stats.h:43
@ STAT_SHIPS
Definition: Stats.h:52
@ STAT_BUFFER_INUSE
Definition: Stats.h:32
@ STAT_PLANETS
Definition: Stats.h:49
@ STAT_CREATE_BUFFER
Definition: Stats.h:30
@ STAT_NUM_TEXTUREARRAY2D
Definition: Stats.h:62
@ STAT_MEM_TEXTURE2D
Definition: Stats.h:59
@ STAT_DYNAMIC_DRAW_BUFFER_INUSE
Definition: Stats.h:35
@ STAT_BILLBOARD
Definition: Stats.h:55
@ STAT_SPACESTATIONS
Definition: Stats.h:46
@ STAT_CITIES
Definition: Stats.h:44
@ STAT_STARS
Definition: Stats.h:51
@ STAT_DRAW_UNIFORM_BUFFER_INUSE
Definition: Stats.h:33
@ STAT_GASGIANTS
Definition: Stats.h:50
@ STAT_PATCHES
Definition: Stats.h:48
@ STAT_NUM_LINES
Definition: Stats.h:26
@ STAT_MEM_TEXTURECUBE
Definition: Stats.h:61
@ STAT_DRAWCALL
Definition: Stats.h:24
@ STAT_NUM_CMDLIST_FLUSHES
Definition: Stats.h:40
@ STAT_NUM_TEXTURE2D
Definition: Stats.h:58
@ STAT_GROUNDSTATIONS
Definition: Stats.h:45
@ STAT_ATMOSPHERES
Definition: Stats.h:47
~Stats()
Definition: Stats.h:73
const FrameInfo & GetFullStats() const
Definition: Stats.h:93
void NextFrame()
Definition: Stats.cpp:56
void SetStatCount(const StatType type, const uint32_t count) const
Definition: Stats.h:85
void AddToStatCount(const StatType type, const uint32_t count) const
Definition: Stats.h:75
void DecStatCount(const StatType type, const uint32_t count) const
Definition: Stats.h:80
Stats()
Definition: Stats.cpp:10
const TFrameData & FrameStatsPrevious() const
Definition: Stats.cpp:71
static const Uint32 MAX_FRAMES_STORE
Definition: Stats.h:21
Definition: PerfStats.h:24
void CounterAdd(CounterRef ref, uint32_t amount=1) const
Definition: PerfStats.h:43
void CounterDec(CounterRef ref, uint32_t amount=1) const
Definition: PerfStats.h:49
void CounterSet(CounterRef ref, uint32_t value) const
Definition: PerfStats.h:55
std::map< std::string, uint32_t > FrameInfo
Definition: PerfStats.h:26
const FrameInfo & GetFrameStats() const
Definition: PerfStats.h:69
Definition: Background.h:14
Definition: Stats.h:68
uint32_t m_stats[MAX_STAT]
Definition: Stats.h:69