1
0
mirror of https://github.com/RPCS3/rpcs3.git synced 2025-03-15 04:21:01 +00:00

Fixup HW thread switch delay condition for performance

This commit is contained in:
Eladash 2024-02-11 22:01:14 +02:00 committed by Elad.Ash
parent 148edc005a
commit 94239f5526

@ -1725,13 +1725,17 @@ bool lv2_obj::awake_unlocked(cpu_thread* cpu, s32 prio)
{
if (current_ppu->prio.load().prio > lowest_new_priority)
{
if (!current_ppu->state.test_and_set(cpu_flag::yield) || current_ppu->hw_sleep_time != 0)
// When not being set to All timers - activate only for sys_ppu_thread_start
if (current_ppu->gpr[11] == 0x35 || g_cfg.core.sleep_timers_accuracy == sleep_timers_accuracy_level::_all_timers)
{
current_ppu->hw_sleep_time += 35; // Seems like 35us after extensive testing
}
else
{
current_ppu->hw_sleep_time = 30000; // In addition to another flag's use (TODO: Refactor and clean this)
if (!current_ppu->state.test_and_set(cpu_flag::yield) || current_ppu->hw_sleep_time != 0)
{
current_ppu->hw_sleep_time += 35; // Seems like 35us after extensive testing
}
else
{
current_ppu->hw_sleep_time = 30000; // In addition to another flag's use (TODO: Refactor and clean this)
}
}
}
}