rsx: Hotfix for semaphore timeout bug
- Add pending flip requests as a reason to invoke the RSX local task handler and release the vblank semaphore
This commit is contained in:
@@ -1865,7 +1865,8 @@ void GLGSRender::on_invalidate_memory_range(const utils::address_range &range, r
|
|||||||
|
|
||||||
void GLGSRender::on_semaphore_acquire_wait()
|
void GLGSRender::on_semaphore_acquire_wait()
|
||||||
{
|
{
|
||||||
if (!work_queue.empty())
|
if (!work_queue.empty() ||
|
||||||
|
(async_flip_requested & flip_request::emu_requested))
|
||||||
{
|
{
|
||||||
do_local_task(rsx::FIFO_state::lock_wait);
|
do_local_task(rsx::FIFO_state::lock_wait);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -741,7 +741,9 @@ void VKGSRender::on_invalidate_memory_range(const utils::address_range &range, r
|
|||||||
|
|
||||||
void VKGSRender::on_semaphore_acquire_wait()
|
void VKGSRender::on_semaphore_acquire_wait()
|
||||||
{
|
{
|
||||||
if (m_flush_requests.pending() || m_queue_status & flush_queue_state::deadlock)
|
if (m_flush_requests.pending() ||
|
||||||
|
(async_flip_requested & flip_request::emu_requested) ||
|
||||||
|
(m_queue_status & flush_queue_state::deadlock))
|
||||||
{
|
{
|
||||||
do_local_task(rsx::FIFO_state::lock_wait);
|
do_local_task(rsx::FIFO_state::lock_wait);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user