diff options
| author | 2022-01-30 12:36:56 -0500 | |
|---|---|---|
| committer | 2022-01-30 12:36:56 -0500 | |
| commit | 4e766280c4481d23a64a1c80c0ec40d7cf1ff378 (patch) | |
| tree | 85f078d686978b4b27fc44c7cf0b95a90a6cc4bf | |
| parent | Merge pull request #7791 from german77/wall_clock (diff) | |
| download | yuzu-4e766280c4481d23a64a1c80c0ec40d7cf1ff378.tar.gz yuzu-4e766280c4481d23a64a1c80c0ec40d7cf1ff378.tar.xz yuzu-4e766280c4481d23a64a1c80c0ec40d7cf1ff378.zip | |
common: wall_clock: Utilize constants for ms, us, and ns ratios
| -rw-r--r-- | src/common/wall_clock.cpp | 4 | ||||
| -rw-r--r-- | src/common/wall_clock.h | 4 | ||||
| -rw-r--r-- | src/common/x64/native_clock.cpp | 6 |
3 files changed, 9 insertions, 5 deletions
diff --git a/src/common/wall_clock.cpp b/src/common/wall_clock.cpp index ffa282e88..081e0562f 100644 --- a/src/common/wall_clock.cpp +++ b/src/common/wall_clock.cpp | |||
| @@ -73,8 +73,8 @@ std::unique_ptr<WallClock> CreateBestMatchingClock(u32 emulated_cpu_frequency, | |||
| 73 | rtsc_frequency = EstimateRDTSCFrequency(); | 73 | rtsc_frequency = EstimateRDTSCFrequency(); |
| 74 | } | 74 | } |
| 75 | 75 | ||
| 76 | // Fallback to StandardWallClock if rtsc period is higher than a nano second | 76 | // Fallback to StandardWallClock if the hardware TSC does not have nanosecond precision. |
| 77 | if (rtsc_frequency <= 1000000000) { | 77 | if (rtsc_frequency <= WallClock::NS_RATIO) { |
| 78 | return std::make_unique<StandardWallClock>(emulated_cpu_frequency, | 78 | return std::make_unique<StandardWallClock>(emulated_cpu_frequency, |
| 79 | emulated_clock_frequency); | 79 | emulated_clock_frequency); |
| 80 | } else { | 80 | } else { |
diff --git a/src/common/wall_clock.h b/src/common/wall_clock.h index cef3e9499..4d132c531 100644 --- a/src/common/wall_clock.h +++ b/src/common/wall_clock.h | |||
| @@ -13,6 +13,10 @@ namespace Common { | |||
| 13 | 13 | ||
| 14 | class WallClock { | 14 | class WallClock { |
| 15 | public: | 15 | public: |
| 16 | static constexpr u64 NS_RATIO = 1'000'000'000; | ||
| 17 | static constexpr u64 US_RATIO = 1'000'000; | ||
| 18 | static constexpr u64 MS_RATIO = 1'000; | ||
| 19 | |||
| 16 | virtual ~WallClock() = default; | 20 | virtual ~WallClock() = default; |
| 17 | 21 | ||
| 18 | /// Returns current wall time in nanoseconds | 22 | /// Returns current wall time in nanoseconds |
diff --git a/src/common/x64/native_clock.cpp b/src/common/x64/native_clock.cpp index 82ee2c8a1..91b842829 100644 --- a/src/common/x64/native_clock.cpp +++ b/src/common/x64/native_clock.cpp | |||
| @@ -47,9 +47,9 @@ NativeClock::NativeClock(u64 emulated_cpu_frequency_, u64 emulated_clock_frequen | |||
| 47 | _mm_mfence(); | 47 | _mm_mfence(); |
| 48 | time_point.inner.last_measure = __rdtsc(); | 48 | time_point.inner.last_measure = __rdtsc(); |
| 49 | time_point.inner.accumulated_ticks = 0U; | 49 | time_point.inner.accumulated_ticks = 0U; |
| 50 | ns_rtsc_factor = GetFixedPoint64Factor(1000000000, rtsc_frequency); | 50 | ns_rtsc_factor = GetFixedPoint64Factor(NS_RATIO, rtsc_frequency); |
| 51 | us_rtsc_factor = GetFixedPoint64Factor(1000000, rtsc_frequency); | 51 | us_rtsc_factor = GetFixedPoint64Factor(US_RATIO, rtsc_frequency); |
| 52 | ms_rtsc_factor = GetFixedPoint64Factor(1000, rtsc_frequency); | 52 | ms_rtsc_factor = GetFixedPoint64Factor(MS_RATIO, rtsc_frequency); |
| 53 | clock_rtsc_factor = GetFixedPoint64Factor(emulated_clock_frequency, rtsc_frequency); | 53 | clock_rtsc_factor = GetFixedPoint64Factor(emulated_clock_frequency, rtsc_frequency); |
| 54 | cpu_rtsc_factor = GetFixedPoint64Factor(emulated_cpu_frequency, rtsc_frequency); | 54 | cpu_rtsc_factor = GetFixedPoint64Factor(emulated_cpu_frequency, rtsc_frequency); |
| 55 | } | 55 | } |