summaryrefslogtreecommitdiff
path: root/src/core/perf_stats.h
diff options
context:
space:
mode:
authorGravatar bunnei2021-05-18 19:56:29 -0700
committerGravatar GitHub2021-05-18 19:56:29 -0700
commit7d86a6ff02e0778aa69ec52ef5c0eb0d26200818 (patch)
treeec9657e464e62c444ee2062cb0110b7e710d9788 /src/core/perf_stats.h
parentMerge pull request #6337 from Morph1984/transfer-mem-size (diff)
parentperf_stats: Rework FPS counter to be more accurate (diff)
downloadyuzu-7d86a6ff02e0778aa69ec52ef5c0eb0d26200818.tar.gz
yuzu-7d86a6ff02e0778aa69ec52ef5c0eb0d26200818.tar.xz
yuzu-7d86a6ff02e0778aa69ec52ef5c0eb0d26200818.zip
Merge pull request #6317 from ameerj/fps-fix
perf_stats: Rework FPS counter to be more accurate
Diffstat (limited to 'src/core/perf_stats.h')
-rw-r--r--src/core/perf_stats.h9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/core/perf_stats.h b/src/core/perf_stats.h
index ae4698696..e5d603717 100644
--- a/src/core/perf_stats.h
+++ b/src/core/perf_stats.h
@@ -5,6 +5,7 @@
5#pragma once 5#pragma once
6 6
7#include <array> 7#include <array>
8#include <atomic>
8#include <chrono> 9#include <chrono>
9#include <cstddef> 10#include <cstddef>
10#include <mutex> 11#include <mutex>
@@ -15,8 +16,8 @@ namespace Core {
15struct PerfStatsResults { 16struct PerfStatsResults {
16 /// System FPS (LCD VBlanks) in Hz 17 /// System FPS (LCD VBlanks) in Hz
17 double system_fps; 18 double system_fps;
18 /// Game FPS (GSP frame submissions) in Hz 19 /// Average game FPS (GPU frame renders) in Hz
19 double game_fps; 20 double average_game_fps;
20 /// Walltime per system frame, in seconds, excluding any waits 21 /// Walltime per system frame, in seconds, excluding any waits
21 double frametime; 22 double frametime;
22 /// Ratio of walltime / emulated time elapsed 23 /// Ratio of walltime / emulated time elapsed
@@ -72,7 +73,7 @@ private:
72 /// Cumulative number of system frames (LCD VBlanks) presented since last reset 73 /// Cumulative number of system frames (LCD VBlanks) presented since last reset
73 u32 system_frames = 0; 74 u32 system_frames = 0;
74 /// Cumulative number of game frames (GSP frame submissions) since last reset 75 /// Cumulative number of game frames (GSP frame submissions) since last reset
75 u32 game_frames = 0; 76 std::atomic<u32> game_frames = 0;
76 77
77 /// Point when the previous system frame ended 78 /// Point when the previous system frame ended
78 Clock::time_point previous_frame_end = reset_point; 79 Clock::time_point previous_frame_end = reset_point;
@@ -80,6 +81,8 @@ private:
80 Clock::time_point frame_begin = reset_point; 81 Clock::time_point frame_begin = reset_point;
81 /// Total visible duration (including frame-limiting, etc.) of the previous system frame 82 /// Total visible duration (including frame-limiting, etc.) of the previous system frame
82 Clock::duration previous_frame_length = Clock::duration::zero(); 83 Clock::duration previous_frame_length = Clock::duration::zero();
84 /// Previously computed fps
85 double previous_fps = 0;
83}; 86};
84 87
85class FrameLimiter { 88class FrameLimiter {