summaryrefslogtreecommitdiffstats
path: root/src/common/arm64/native_clock.h
diff options
context:
space:
mode:
authorLiam <byteslice@airmail.cc>2023-10-08 17:32:32 +0200
committerLiam <byteslice@airmail.cc>2023-10-08 18:54:23 +0200
commit21bc2c14bc7408427a8b4851a7a3f15251f2afa8 (patch)
tree69597208c660a1af323b7e6dc5ff8e804e555682 /src/common/arm64/native_clock.h
parentMerge pull request #11656 from liamwhite/recreate-surface-automatically (diff)
downloadyuzu-21bc2c14bc7408427a8b4851a7a3f15251f2afa8.tar
yuzu-21bc2c14bc7408427a8b4851a7a3f15251f2afa8.tar.gz
yuzu-21bc2c14bc7408427a8b4851a7a3f15251f2afa8.tar.bz2
yuzu-21bc2c14bc7408427a8b4851a7a3f15251f2afa8.tar.lz
yuzu-21bc2c14bc7408427a8b4851a7a3f15251f2afa8.tar.xz
yuzu-21bc2c14bc7408427a8b4851a7a3f15251f2afa8.tar.zst
yuzu-21bc2c14bc7408427a8b4851a7a3f15251f2afa8.zip
Diffstat (limited to 'src/common/arm64/native_clock.h')
-rw-r--r--src/common/arm64/native_clock.h47
1 files changed, 47 insertions, 0 deletions
diff --git a/src/common/arm64/native_clock.h b/src/common/arm64/native_clock.h
new file mode 100644
index 000000000..a28b419f2
--- /dev/null
+++ b/src/common/arm64/native_clock.h
@@ -0,0 +1,47 @@
+// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "common/wall_clock.h"
+
+namespace Common::Arm64 {
+
+class NativeClock final : public WallClock {
+public:
+ explicit NativeClock();
+
+ std::chrono::nanoseconds GetTimeNS() const override;
+
+ std::chrono::microseconds GetTimeUS() const override;
+
+ std::chrono::milliseconds GetTimeMS() const override;
+
+ u64 GetCNTPCT() const override;
+
+ u64 GetGPUTick() const override;
+
+ u64 GetHostTicksNow() const override;
+
+ u64 GetHostTicksElapsed() const override;
+
+ bool IsNative() const override;
+
+ static u64 GetHostCNTFRQ();
+
+public:
+ using FactorType = unsigned __int128;
+
+ FactorType GetGuestCNTFRQFactor() const {
+ return guest_cntfrq_factor;
+ }
+
+private:
+ FactorType ns_cntfrq_factor;
+ FactorType us_cntfrq_factor;
+ FactorType ms_cntfrq_factor;
+ FactorType guest_cntfrq_factor;
+ FactorType gputick_cntfrq_factor;
+};
+
+} // namespace Common::Arm64