[Base] Don't use raw clock where unsupported
This commit is contained in:
parent
7aeac37eb6
commit
f91b895c9a
|
@ -109,18 +109,20 @@ inline uint64_t QueryGuestSystemTimeOffset() {
|
||||||
}
|
}
|
||||||
|
|
||||||
uint64_t Clock::QueryHostTickFrequency() {
|
uint64_t Clock::QueryHostTickFrequency() {
|
||||||
|
#if XE_CLOCK_RAW_AVAILABLE
|
||||||
if (cvars::clock_source_raw) {
|
if (cvars::clock_source_raw) {
|
||||||
return host_tick_frequency_raw();
|
return host_tick_frequency_raw();
|
||||||
} else {
|
|
||||||
return host_tick_frequency_platform();
|
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
return host_tick_frequency_platform();
|
||||||
}
|
}
|
||||||
uint64_t Clock::QueryHostTickCount() {
|
uint64_t Clock::QueryHostTickCount() {
|
||||||
|
#if XE_CLOCK_RAW_AVAILABLE
|
||||||
if (cvars::clock_source_raw) {
|
if (cvars::clock_source_raw) {
|
||||||
return host_tick_count_raw();
|
return host_tick_count_raw();
|
||||||
} else {
|
|
||||||
return host_tick_count_platform();
|
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
return host_tick_count_platform();
|
||||||
}
|
}
|
||||||
|
|
||||||
double Clock::guest_time_scalar() { return guest_time_scalar_; }
|
double Clock::guest_time_scalar() { return guest_time_scalar_; }
|
||||||
|
|
|
@ -13,6 +13,11 @@
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
|
|
||||||
#include "xenia/base/cvar.h"
|
#include "xenia/base/cvar.h"
|
||||||
|
#include "xenia/base/platform.h"
|
||||||
|
|
||||||
|
#if XE_ARCH_AMD64
|
||||||
|
#define XE_CLOCK_RAW_AVAILABLE 1
|
||||||
|
#endif
|
||||||
|
|
||||||
DECLARE_bool(clock_no_scaling);
|
DECLARE_bool(clock_no_scaling);
|
||||||
DECLARE_bool(clock_source_raw);
|
DECLARE_bool(clock_source_raw);
|
||||||
|
@ -24,10 +29,14 @@ class Clock {
|
||||||
// Host ticks-per-second. Generally QueryHostTickFrequency should be used.
|
// Host ticks-per-second. Generally QueryHostTickFrequency should be used.
|
||||||
// Either from platform suplied time source or from hardware directly.
|
// Either from platform suplied time source or from hardware directly.
|
||||||
static uint64_t host_tick_frequency_platform();
|
static uint64_t host_tick_frequency_platform();
|
||||||
|
#if XE_CLOCK_RAW_AVAILABLE
|
||||||
static uint64_t host_tick_frequency_raw();
|
static uint64_t host_tick_frequency_raw();
|
||||||
|
#endif
|
||||||
// Host tick count. Generally QueryHostTickCount() should be used.
|
// Host tick count. Generally QueryHostTickCount() should be used.
|
||||||
static uint64_t host_tick_count_platform();
|
static uint64_t host_tick_count_platform();
|
||||||
|
#if XE_CLOCK_RAW_AVAILABLE
|
||||||
static uint64_t host_tick_count_raw();
|
static uint64_t host_tick_count_raw();
|
||||||
|
#endif
|
||||||
|
|
||||||
// Queries the host tick frequency.
|
// Queries the host tick frequency.
|
||||||
static uint64_t QueryHostTickFrequency();
|
static uint64_t QueryHostTickFrequency();
|
||||||
|
|
|
@ -7,11 +7,11 @@
|
||||||
******************************************************************************
|
******************************************************************************
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "xenia/base/clock.h"
|
||||||
#include "xenia/base/platform.h"
|
#include "xenia/base/platform.h"
|
||||||
|
|
||||||
#if XE_ARCH_AMD64
|
#if XE_ARCH_AMD64 && XE_CLOCK_RAW_AVAILABLE
|
||||||
|
|
||||||
#include "xenia/base/clock.h"
|
|
||||||
#include "xenia/base/logging.h"
|
#include "xenia/base/logging.h"
|
||||||
|
|
||||||
// Wrap all these different cpu compiler intrinsics.
|
// Wrap all these different cpu compiler intrinsics.
|
||||||
|
|
Loading…
Reference in New Issue