X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=basic_stats.h;h=bff788129fb6306a0a1ce7627c5048ff21531bab;hb=a5746714e6ca1e665bf9e74344e67712443f947a;hp=800d6e60f59f52b9fdf9c63458a785eb34f4c119;hpb=868450678563ed2c9fd5240dca704d87371d1478;p=nageru diff --git a/basic_stats.h b/basic_stats.h index 800d6e6..bff7881 100644 --- a/basic_stats.h +++ b/basic_stats.h @@ -7,17 +7,21 @@ #include #include +#include extern bool uses_mlock; +class GPUMemoryStats; + class BasicStats { public: - BasicStats(bool verbose); + BasicStats(bool verbose, bool use_opengl); void update(int frame_num, int stats_dropped_frames); private: std::chrono::steady_clock::time_point start; bool verbose; + std::unique_ptr gpu_memory_stats; // Metrics. std::atomic metric_frames_output_total{0}; @@ -27,4 +31,23 @@ private: std::atomic metrics_memory_locked_limit_bytes{0.0 / 0.0}; }; +// Holds some metrics for GPU memory usage. Currently only exposed for NVIDIA cards +// (no-op on all other platforms). + +class GPUMemoryStats { +public: + GPUMemoryStats(bool verbose); + void update(); + +private: + bool verbose, supported; + + // Metrics. + std::atomic metric_memory_gpu_total_bytes{0}; + std::atomic metric_memory_gpu_dedicated_bytes{0}; + std::atomic metric_memory_gpu_used_bytes{0}; + std::atomic metric_memory_gpu_evicted_bytes{0}; + std::atomic metric_memory_gpu_evictions{0}; +}; + #endif // !defined(_BASIC_STATS_H)