From 3317e13b6451329509854578dd80dcf9db14c73b Mon Sep 17 00:00:00 2001 From: kd-11 Date: Mon, 26 Aug 2019 21:41:37 +0300 Subject: [PATCH] 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 --- rpcs3/Emu/RSX/GL/GLGSRender.cpp | 3 ++- rpcs3/Emu/RSX/VK/VKGSRender.cpp | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/rpcs3/Emu/RSX/GL/GLGSRender.cpp b/rpcs3/Emu/RSX/GL/GLGSRender.cpp index 4a9492042c..6215b58532 100644 --- a/rpcs3/Emu/RSX/GL/GLGSRender.cpp +++ b/rpcs3/Emu/RSX/GL/GLGSRender.cpp @@ -1865,7 +1865,8 @@ void GLGSRender::on_invalidate_memory_range(const utils::address_range &range, r 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); } diff --git a/rpcs3/Emu/RSX/VK/VKGSRender.cpp b/rpcs3/Emu/RSX/VK/VKGSRender.cpp index 531d6ec518..70d0d5343f 100644 --- a/rpcs3/Emu/RSX/VK/VKGSRender.cpp +++ b/rpcs3/Emu/RSX/VK/VKGSRender.cpp @@ -741,7 +741,9 @@ void VKGSRender::on_invalidate_memory_range(const utils::address_range &range, r 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); }