diff options
Diffstat (limited to 'src/core/perf_stats.cpp')
| -rw-r--r-- | src/core/perf_stats.cpp | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/src/core/perf_stats.cpp b/src/core/perf_stats.cpp index b185a3884..c42c437b7 100644 --- a/src/core/perf_stats.cpp +++ b/src/core/perf_stats.cpp | |||
| @@ -69,9 +69,7 @@ void PerfStats::EndSystemFrame() { | |||
| 69 | } | 69 | } |
| 70 | 70 | ||
| 71 | void PerfStats::EndGameFrame() { | 71 | void PerfStats::EndGameFrame() { |
| 72 | std::lock_guard lock{object_mutex}; | 72 | game_frames.fetch_add(1, std::memory_order_relaxed); |
| 73 | |||
| 74 | game_frames += 1; | ||
| 75 | } | 73 | } |
| 76 | 74 | ||
| 77 | double PerfStats::GetMeanFrametime() const { | 75 | double PerfStats::GetMeanFrametime() const { |
| @@ -94,10 +92,11 @@ PerfStatsResults PerfStats::GetAndResetStats(microseconds current_system_time_us | |||
| 94 | const auto interval = duration_cast<DoubleSecs>(now - reset_point).count(); | 92 | const auto interval = duration_cast<DoubleSecs>(now - reset_point).count(); |
| 95 | 93 | ||
| 96 | const auto system_us_per_second = (current_system_time_us - reset_point_system_us) / interval; | 94 | const auto system_us_per_second = (current_system_time_us - reset_point_system_us) / interval; |
| 97 | 95 | const auto current_frames = static_cast<double>(game_frames.load(std::memory_order_relaxed)); | |
| 96 | const auto current_fps = current_frames / interval; | ||
| 98 | const PerfStatsResults results{ | 97 | const PerfStatsResults results{ |
| 99 | .system_fps = static_cast<double>(system_frames) / interval, | 98 | .system_fps = static_cast<double>(system_frames) / interval, |
| 100 | .game_fps = static_cast<double>(game_frames) / interval, | 99 | .average_game_fps = (current_fps + previous_fps) / 2.0, |
| 101 | .frametime = duration_cast<DoubleSecs>(accumulated_frametime).count() / | 100 | .frametime = duration_cast<DoubleSecs>(accumulated_frametime).count() / |
| 102 | static_cast<double>(system_frames), | 101 | static_cast<double>(system_frames), |
| 103 | .emulation_speed = system_us_per_second.count() / 1'000'000.0, | 102 | .emulation_speed = system_us_per_second.count() / 1'000'000.0, |
| @@ -108,7 +107,8 @@ PerfStatsResults PerfStats::GetAndResetStats(microseconds current_system_time_us | |||
| 108 | reset_point_system_us = current_system_time_us; | 107 | reset_point_system_us = current_system_time_us; |
| 109 | accumulated_frametime = Clock::duration::zero(); | 108 | accumulated_frametime = Clock::duration::zero(); |
| 110 | system_frames = 0; | 109 | system_frames = 0; |
| 111 | game_frames = 0; | 110 | game_frames.store(0, std::memory_order_relaxed); |
| 111 | previous_fps = current_fps; | ||
| 112 | 112 | ||
| 113 | return results; | 113 | return results; |
| 114 | } | 114 | } |