summaryrefslogtreecommitdiff
path: root/src/common/wall_clock.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/common/wall_clock.cpp')
-rw-r--r--src/common/wall_clock.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/common/wall_clock.cpp b/src/common/wall_clock.cpp
index ad8db06b0..dc0dcbd68 100644
--- a/src/common/wall_clock.cpp
+++ b/src/common/wall_clock.cpp
@@ -32,6 +32,10 @@ public:
32 return GetHostTicksElapsed() * NsToCNTPCTRatio::num / NsToCNTPCTRatio::den; 32 return GetHostTicksElapsed() * NsToCNTPCTRatio::num / NsToCNTPCTRatio::den;
33 } 33 }
34 34
35 u64 GetGPUTick() const override {
36 return GetHostTicksElapsed() * NsToGPUTickRatio::num / NsToGPUTickRatio::den;
37 }
38
35 u64 GetHostTicksNow() const override { 39 u64 GetHostTicksNow() const override {
36 return static_cast<u64>(SteadyClock::Now().time_since_epoch().count()); 40 return static_cast<u64>(SteadyClock::Now().time_since_epoch().count());
37 } 41 }
@@ -52,12 +56,12 @@ std::unique_ptr<WallClock> CreateOptimalClock() {
52#ifdef ARCHITECTURE_x86_64 56#ifdef ARCHITECTURE_x86_64
53 const auto& caps = GetCPUCaps(); 57 const auto& caps = GetCPUCaps();
54 58
55 if (caps.invariant_tsc && caps.tsc_frequency >= WallClock::CNTFRQ) { 59 if (caps.invariant_tsc && caps.tsc_frequency >= WallClock::GPUTickFreq) {
56 return std::make_unique<X64::NativeClock>(caps.tsc_frequency); 60 return std::make_unique<X64::NativeClock>(caps.tsc_frequency);
57 } else { 61 } else {
58 // Fallback to StandardWallClock if the hardware TSC 62 // Fallback to StandardWallClock if the hardware TSC
59 // - Is not invariant 63 // - Is not invariant
60 // - Is not more precise than CNTFRQ 64 // - Is not more precise than GPUTickFreq
61 return std::make_unique<StandardWallClock>(); 65 return std::make_unique<StandardWallClock>();
62 } 66 }
63#else 67#else