mirror of
https://github.com/RPCSX/rpcsx.git
synced 2026-04-20 22:05:12 +00:00
rsx: FIFO wake-up pause control
This commit is contained in:
parent
2984300385
commit
85695c8bac
5 changed files with 85 additions and 12 deletions
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue