summaryrefslogtreecommitdiffstats
path: root/src/common/wall_clock.h
diff options
context:
space:
mode:
authorDavid <25727384+ogniK5377@users.noreply.github.com>2020-06-27 17:34:07 +0200
committerGitHub <noreply@github.com>2020-06-27 17:34:07 +0200
commit0ea4a8bcc4bca14bb7c65b248ed1899d2e7167cf (patch)
treea83acb1e779b98d31fa54389bae4be5669573a41 /src/common/wall_clock.h
parentMerge pull request #4097 from kevinxucs/kevinxucs/device-pixel-scaling-float (diff)
parentCommon: Fix non-conan build (diff)
downloadyuzu-0ea4a8bcc4bca14bb7c65b248ed1899d2e7167cf.tar
yuzu-0ea4a8bcc4bca14bb7c65b248ed1899d2e7167cf.tar.gz
yuzu-0ea4a8bcc4bca14bb7c65b248ed1899d2e7167cf.tar.bz2
yuzu-0ea4a8bcc4bca14bb7c65b248ed1899d2e7167cf.tar.lz
yuzu-0ea4a8bcc4bca14bb7c65b248ed1899d2e7167cf.tar.xz
yuzu-0ea4a8bcc4bca14bb7c65b248ed1899d2e7167cf.tar.zst
yuzu-0ea4a8bcc4bca14bb7c65b248ed1899d2e7167cf.zip
Diffstat (limited to '')
-rw-r--r--src/common/wall_clock.h51
1 files changed, 51 insertions, 0 deletions
diff --git a/src/common/wall_clock.h b/src/common/wall_clock.h
new file mode 100644
index 000000000..ed284cf50
--- /dev/null
+++ b/src/common/wall_clock.h
@@ -0,0 +1,51 @@
+// Copyright 2020 yuzu Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#pragma once
+
+#include <chrono>
+#include <memory>
+
+#include "common/common_types.h"
+
+namespace Common {
+
+class WallClock {
+public:
+ /// Returns current wall time in nanoseconds
+ virtual std::chrono::nanoseconds GetTimeNS() = 0;
+
+ /// Returns current wall time in microseconds
+ virtual std::chrono::microseconds GetTimeUS() = 0;
+
+ /// Returns current wall time in milliseconds
+ virtual std::chrono::milliseconds GetTimeMS() = 0;
+
+ /// Returns current wall time in emulated clock cycles
+ virtual u64 GetClockCycles() = 0;
+
+ /// Returns current wall time in emulated cpu cycles
+ virtual u64 GetCPUCycles() = 0;
+
+ /// Tells if the wall clock, uses the host CPU's hardware clock
+ bool IsNative() const {
+ return is_native;
+ }
+
+protected:
+ WallClock(u64 emulated_cpu_frequency, u64 emulated_clock_frequency, bool is_native)
+ : emulated_cpu_frequency{emulated_cpu_frequency},
+ emulated_clock_frequency{emulated_clock_frequency}, is_native{is_native} {}
+
+ u64 emulated_cpu_frequency;
+ u64 emulated_clock_frequency;
+
+private:
+ bool is_native;
+};
+
+std::unique_ptr<WallClock> CreateBestMatchingClock(u32 emulated_cpu_frequency,
+ u32 emulated_clock_frequency);
+
+} // namespace Common