diff options
Diffstat (limited to 'src/common/x64')
| -rw-r--r-- | src/common/x64/native_clock.cpp | 26 | ||||
| -rw-r--r-- | src/common/x64/native_clock.h | 9 | 
2 files changed, 14 insertions, 21 deletions
| diff --git a/src/common/x64/native_clock.cpp b/src/common/x64/native_clock.cpp index 7d2a26bd9..d2d27fafe 100644 --- a/src/common/x64/native_clock.cpp +++ b/src/common/x64/native_clock.cpp @@ -8,39 +8,35 @@  namespace Common::X64 {  NativeClock::NativeClock(u64 rdtsc_frequency_) -    : start_ticks{FencedRDTSC()}, rdtsc_frequency{rdtsc_frequency_}, -      ns_rdtsc_factor{GetFixedPoint64Factor(NsRatio::den, rdtsc_frequency)}, +    : rdtsc_frequency{rdtsc_frequency_}, ns_rdtsc_factor{GetFixedPoint64Factor(NsRatio::den, +                                                                               rdtsc_frequency)},        us_rdtsc_factor{GetFixedPoint64Factor(UsRatio::den, rdtsc_frequency)},        ms_rdtsc_factor{GetFixedPoint64Factor(MsRatio::den, rdtsc_frequency)},        cntpct_rdtsc_factor{GetFixedPoint64Factor(CNTFRQ, rdtsc_frequency)},        gputick_rdtsc_factor{GetFixedPoint64Factor(GPUTickFreq, rdtsc_frequency)} {}  std::chrono::nanoseconds NativeClock::GetTimeNS() const { -    return std::chrono::nanoseconds{MultiplyHigh(GetHostTicksElapsed(), ns_rdtsc_factor)}; +    return std::chrono::nanoseconds{MultiplyHigh(GetUptime(), ns_rdtsc_factor)};  }  std::chrono::microseconds NativeClock::GetTimeUS() const { -    return std::chrono::microseconds{MultiplyHigh(GetHostTicksElapsed(), us_rdtsc_factor)}; +    return std::chrono::microseconds{MultiplyHigh(GetUptime(), us_rdtsc_factor)};  }  std::chrono::milliseconds NativeClock::GetTimeMS() const { -    return std::chrono::milliseconds{MultiplyHigh(GetHostTicksElapsed(), ms_rdtsc_factor)}; +    return std::chrono::milliseconds{MultiplyHigh(GetUptime(), ms_rdtsc_factor)};  } -u64 NativeClock::GetCNTPCT() const { -    return MultiplyHigh(GetHostTicksElapsed(), cntpct_rdtsc_factor); +s64 NativeClock::GetCNTPCT() const { +    return MultiplyHigh(GetUptime(), cntpct_rdtsc_factor);  } -u64 NativeClock::GetGPUTick() const { -    return MultiplyHigh(GetHostTicksElapsed(), gputick_rdtsc_factor); +s64 NativeClock::GetGPUTick() const { +    return MultiplyHigh(GetUptime(), gputick_rdtsc_factor);  } -u64 NativeClock::GetHostTicksNow() const { -    return FencedRDTSC(); -} - -u64 NativeClock::GetHostTicksElapsed() const { -    return FencedRDTSC() - start_ticks; +s64 NativeClock::GetUptime() const { +    return static_cast<s64>(FencedRDTSC());  }  bool NativeClock::IsNative() const { diff --git a/src/common/x64/native_clock.h b/src/common/x64/native_clock.h index 334415eff..b2629b031 100644 --- a/src/common/x64/native_clock.h +++ b/src/common/x64/native_clock.h @@ -17,18 +17,15 @@ public:      std::chrono::milliseconds GetTimeMS() const override; -    u64 GetCNTPCT() const override; +    s64 GetCNTPCT() const override; -    u64 GetGPUTick() const override; +    s64 GetGPUTick() const override; -    u64 GetHostTicksNow() const override; - -    u64 GetHostTicksElapsed() const override; +    s64 GetUptime() const override;      bool IsNative() const override;  private: -    u64 start_ticks;      u64 rdtsc_frequency;      u64 ns_rdtsc_factor; | 
