summaryrefslogtreecommitdiff
path: root/src/core/perf_stats.h
diff options
context:
space:
mode:
authorGravatar Yuri Kunde Schlesner2017-02-19 14:34:47 -0800
committerGravatar Yuri Kunde Schlesner2017-02-26 17:22:03 -0800
commitc75ae6c585f651a1b7c162c2e1ecccd22a1c587d (patch)
tree30d51f39c6b57244e1ede29820c3f5d98ca38451 /src/core/perf_stats.h
parentSynchronizedWrapper: Add Lock convenience method (diff)
downloadyuzu-c75ae6c585f651a1b7c162c2e1ecccd22a1c587d.tar.gz
yuzu-c75ae6c585f651a1b7c162c2e1ecccd22a1c587d.tar.xz
yuzu-c75ae6c585f651a1b7c162c2e1ecccd22a1c587d.zip
Add performance statistics to status bar
Diffstat (limited to 'src/core/perf_stats.h')
-rw-r--r--src/core/perf_stats.h43
1 files changed, 43 insertions, 0 deletions
diff --git a/src/core/perf_stats.h b/src/core/perf_stats.h
new file mode 100644
index 000000000..566a1419a
--- /dev/null
+++ b/src/core/perf_stats.h
@@ -0,0 +1,43 @@
1// Copyright 2017 Citra Emulator Project
2// Licensed under GPLv2 or any later version
3// Refer to the license.txt file included.
4
5#pragma once
6
7#include <chrono>
8#include "common/common_types.h"
9
10namespace Core {
11
12class PerfStats {
13public:
14 using Clock = std::chrono::high_resolution_clock;
15
16 struct Results {
17 /// System FPS (LCD VBlanks) in Hz
18 double system_fps;
19 /// Game FPS (GSP frame submissions) in Hz
20 double game_fps;
21 /// Walltime per system frame, in seconds, excluding any waits
22 double frametime;
23 /// Ratio of walltime / emulated time elapsed
24 double emulation_speed;
25 };
26
27 void BeginSystemFrame();
28 void EndSystemFrame();
29 void EndGameFrame();
30
31 Results GetAndResetStats(u64 current_system_time_us);
32
33private:
34 Clock::time_point reset_point = Clock::now();
35
36 Clock::time_point frame_begin;
37 Clock::duration accumulated_frametime = Clock::duration::zero();
38 u64 reset_point_system_us = 0;
39 u32 system_frames = 0;
40 u32 game_frames = 0;
41};
42
43} // namespace Core