summaryrefslogtreecommitdiff
path: root/src/common/arm64/native_clock.h
diff options
context:
space:
mode:
authorGravatar Fernando S2023-10-10 11:48:06 +0200
committerGravatar GitHub2023-10-10 11:48:06 +0200
commitb28b05e2aafc2ee3fff67eee8d81ecf56267f2a3 (patch)
tree9e456a3b5837af571240a500b8960f65f7d5a73a /src/common/arm64/native_clock.h
parentMerge pull request #11650 from german77/lle_album (diff)
parentcommon: add arm64 native clock (diff)
downloadyuzu-b28b05e2aafc2ee3fff67eee8d81ecf56267f2a3.tar.gz
yuzu-b28b05e2aafc2ee3fff67eee8d81ecf56267f2a3.tar.xz
yuzu-b28b05e2aafc2ee3fff67eee8d81ecf56267f2a3.zip
Merge pull request #11718 from liamwhite/arm64-native-clock
common: add arm64 native clock
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 @@
1// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
2// SPDX-License-Identifier: GPL-2.0-or-later
3
4#pragma once
5
6#include "common/wall_clock.h"
7
8namespace Common::Arm64 {
9
10class NativeClock final : public WallClock {
11public:
12 explicit NativeClock();
13
14 std::chrono::nanoseconds GetTimeNS() const override;
15
16 std::chrono::microseconds GetTimeUS() const override;
17
18 std::chrono::milliseconds GetTimeMS() const override;
19
20 u64 GetCNTPCT() const override;
21
22 u64 GetGPUTick() const override;
23
24 u64 GetHostTicksNow() const override;
25
26 u64 GetHostTicksElapsed() const override;
27
28 bool IsNative() const override;
29
30 static u64 GetHostCNTFRQ();
31
32public:
33 using FactorType = unsigned __int128;
34
35 FactorType GetGuestCNTFRQFactor() const {
36 return guest_cntfrq_factor;
37 }
38
39private:
40 FactorType ns_cntfrq_factor;
41 FactorType us_cntfrq_factor;
42 FactorType ms_cntfrq_factor;
43 FactorType guest_cntfrq_factor;
44 FactorType gputick_cntfrq_factor;
45};
46
47} // namespace Common::Arm64