rsx: FIFO wake-up pause control

This commit is contained in:
Eladash 2020-01-07 22:22:30 +02:00 committed by kd-11
parent 2984300385
commit 85695c8bac
5 changed files with 85 additions and 12 deletions

View file

@ -76,9 +76,23 @@ namespace rsx
const auto& sema = vm::_ref<atomic_be_t<u32>>(addr);
// TODO: Remove vblank semaphore hack
if (sema == arg || addr == rsx->device_addr + 0x30) return;
if (addr == rsx->device_addr + 0x30) return;
rsx->flush_fifo();
if (sema == arg)
{
// Flip semaphore doesnt need wake-up delay
if (addr != rsx->label_addr + 0x10)
{
rsx->flush_fifo();
rsx->fifo_wake_delay(2);
}
return;
}
else
{
rsx->flush_fifo();
}
u64 start = get_system_time();
while (sema != arg)
@ -113,6 +127,7 @@ namespace rsx
std::this_thread::yield();
}
rsx->fifo_wake_delay();
rsx->performance_counters.idle_time += (get_system_time() - start);
}