From 1a9e06d3c66621f66bccf05962b6d5c29587c206 Mon Sep 17 00:00:00 2001 From: Malcolm Jestadt Date: Mon, 14 Oct 2019 13:04:47 -0400 Subject: [PATCH] Linux: Change default Sleep Timers accuracy to host - This doesn't change existing configs - Also sets the host_min_quantum to the true value - Restores lost TODO: comment --- rpcs3/Emu/Cell/lv2/sys_sync.h | 3 ++- rpcs3/Emu/System.h | 7 ++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/rpcs3/Emu/Cell/lv2/sys_sync.h b/rpcs3/Emu/Cell/lv2/sys_sync.h index f7f16f441f..53c47b08f4 100644 --- a/rpcs3/Emu/Cell/lv2/sys_sync.h +++ b/rpcs3/Emu/Cell/lv2/sys_sync.h @@ -252,12 +252,13 @@ public: remaining = usec - passed; #ifdef __linux__ // NOTE: Assumption that timer initialization has succeeded - u64 host_min_quantum = is_usleep && remaining <= 1000 ? 16 : 50; + u64 host_min_quantum = is_usleep && remaining <= 1000 ? 10 : 50; #else // Host scheduler quantum for windows (worst case) // NOTE: On ps3 this function has very high accuracy constexpr u64 host_min_quantum = 500; #endif + // TODO: Tune for other non windows operating sytems if (g_cfg.core.sleep_timers_accuracy < (is_usleep ? sleep_timers_accuracy_level::_usleep : sleep_timers_accuracy_level::_all_timers)) { diff --git a/rpcs3/Emu/System.h b/rpcs3/Emu/System.h index 27ea007793..8252d5f0ae 100644 --- a/rpcs3/Emu/System.h +++ b/rpcs3/Emu/System.h @@ -419,7 +419,12 @@ struct cfg_root : cfg::node cfg::_bool hle_lwmutex{this, "HLE lwmutex"}; // Force alternative lwmutex/lwcond implementation cfg::_int<10, 1000> clocks_scale{this, "Clocks scale", 100}; // Changing this from 100 (percentage) may affect game speed in unexpected ways - cfg::_enum sleep_timers_accuracy{this, "Sleep Timers Accuracy", sleep_timers_accuracy_level::_usleep}; + cfg::_enum sleep_timers_accuracy{this, "Sleep Timers Accuracy", +#ifdef __linux__ + sleep_timers_accuracy_level::_as_host}; +#else + sleep_timers_accuracy_level::_usleep}; +#endif } core{this}; struct node_vfs : cfg::node