]> git.sesse.net Git - nageru/blobdiff - basic_stats.h
Release Nageru 1.7.2.
[nageru] / basic_stats.h
index 800d6e60f59f52b9fdf9c63458a785eb34f4c119..bff788129fb6306a0a1ce7627c5048ff21531bab 100644 (file)
@@ -7,17 +7,21 @@
 
 #include <atomic>
 #include <chrono>
+#include <memory>
 
 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<GPUMemoryStats> gpu_memory_stats;
 
        // Metrics.
        std::atomic<int64_t> metric_frames_output_total{0};
@@ -27,4 +31,23 @@ private:
        std::atomic<double> 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<int64_t> metric_memory_gpu_total_bytes{0};
+       std::atomic<int64_t> metric_memory_gpu_dedicated_bytes{0};
+       std::atomic<int64_t> metric_memory_gpu_used_bytes{0};
+       std::atomic<int64_t> metric_memory_gpu_evicted_bytes{0};
+       std::atomic<int64_t> metric_memory_gpu_evictions{0};
+};
+
 #endif  // !defined(_BASIC_STATS_H)