diff options
author | Fernando Sahmkow <fsahmkow27@gmail.com> | 2020-03-21 17:23:13 +0100 |
---|---|---|
committer | Fernando Sahmkow <fsahmkow27@gmail.com> | 2020-06-27 17:35:55 +0200 |
commit | 534466754f381e90f5f6475a0c02031242a5c256 (patch) | |
tree | bac4629fa909493aec359051c76fcb4600bcc934 /src/common/x64 | |
parent | ARM/WaitTree: Better track the CallStack for each thread. (diff) | |
download | yuzu-534466754f381e90f5f6475a0c02031242a5c256.tar yuzu-534466754f381e90f5f6475a0c02031242a5c256.tar.gz yuzu-534466754f381e90f5f6475a0c02031242a5c256.tar.bz2 yuzu-534466754f381e90f5f6475a0c02031242a5c256.tar.lz yuzu-534466754f381e90f5f6475a0c02031242a5c256.tar.xz yuzu-534466754f381e90f5f6475a0c02031242a5c256.tar.zst yuzu-534466754f381e90f5f6475a0c02031242a5c256.zip |
Diffstat (limited to 'src/common/x64')
-rw-r--r-- | src/common/x64/native_clock.cpp | 3 | ||||
-rw-r--r-- | src/common/x64/native_clock.h | 5 |
2 files changed, 7 insertions, 1 deletions
diff --git a/src/common/x64/native_clock.cpp b/src/common/x64/native_clock.cpp index 926f92ff8..f1bc60fd2 100644 --- a/src/common/x64/native_clock.cpp +++ b/src/common/x64/native_clock.cpp @@ -62,7 +62,8 @@ u64 NativeClock::GetRTSC() { } accumulated_ticks += diff; rtsc_serialize.unlock(); - return accumulated_ticks; + /// The clock cannot be more precise than the guest timer, remove the lower bits + return accumulated_ticks & inaccuracy_mask; } void NativeClock::Pause(bool is_paused) { diff --git a/src/common/x64/native_clock.h b/src/common/x64/native_clock.h index 3851f8fc2..e853094d2 100644 --- a/src/common/x64/native_clock.h +++ b/src/common/x64/native_clock.h @@ -31,6 +31,11 @@ public: private: u64 GetRTSC(); + /// value used to reduce the native clocks accuracy as some apss rely on + /// undefined behavior where the level of accuracy in the clock shouldn't + /// be higher. + static constexpr u64 inaccuracy_mask = ~(0x100 - 1); + SpinLock rtsc_serialize{}; u64 last_measure{}; u64 accumulated_ticks{}; |