From a3ea9e298501f97e5fdc5751a5a9917965aea606 Mon Sep 17 00:00:00 2001 From: kd-11 Date: Sun, 15 May 2022 12:06:00 +0300 Subject: [PATCH] rsx/zcull: Less aggressive disabling of optimizations --- rpcs3/Emu/RSX/RSXZCULL.cpp | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/rpcs3/Emu/RSX/RSXZCULL.cpp b/rpcs3/Emu/RSX/RSXZCULL.cpp index 296c3bee7a..3e9f88dc29 100644 --- a/rpcs3/Emu/RSX/RSXZCULL.cpp +++ b/rpcs3/Emu/RSX/RSXZCULL.cpp @@ -821,16 +821,6 @@ namespace rsx ensure(page.has_refs()); page.release(); - - if (!page.has_refs() && location != CELL_GCM_LOCATION_LOCAL) - { - if (page.prot != utils::protection::rw) - { - utils::memory_protect(vm::base(page_address), 4096, utils::protection::rw); - } - - m_locked_pages[location].erase(page_address); - } } } @@ -898,7 +888,18 @@ namespace rsx auto& fault_page = m_locked_pages[location][page_address]; if (fault_page.prot != utils::protection::rw) { - disable_optimizations(rsx::get_current_renderer(), location); + if (fault_page.has_refs()) + { + // R/W to active block + disable_optimizations(rsx::get_current_renderer(), location); + } + else + { + // R/W to stale block, unload it and move on + utils::memory_protect(vm::base(page_address), 4096, utils::protection::rw); + m_locked_pages[location].erase(page_address); + } + return true; } }