From 257556bbf587f312b6adb806ee004c2c448a6d3e Mon Sep 17 00:00:00 2001 From: kd-11 Date: Mon, 16 May 2022 22:20:40 +0300 Subject: [PATCH] rsx: Add eng lock before flagging memory unmap - This is much better than polling on atomics every cycle for something that happens a few times during gameplay --- rpcs3/Emu/RSX/RSXThread.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/rpcs3/Emu/RSX/RSXThread.cpp b/rpcs3/Emu/RSX/RSXThread.cpp index a479b2d83a..f0066f57dd 100644 --- a/rpcs3/Emu/RSX/RSXThread.cpp +++ b/rpcs3/Emu/RSX/RSXThread.cpp @@ -2945,6 +2945,9 @@ namespace rsx const bool existing_range_valid = m_invalidated_memory_range.valid(); const auto unmap_range = address_range::start_length(address, size); + // Pause RSX thread momentarily to handle unmapping + eng_lock elock(this); + if (existing_range_valid && m_invalidated_memory_range.touches(unmap_range)) { // Merge range-to-invalidate in case of consecutive unmaps