From 6a926daee721dc530793331ba8e5c0632ba6d482 Mon Sep 17 00:00:00 2001 From: Eladash Date: Thu, 12 Dec 2019 14:38:56 +0200 Subject: [PATCH] rsx: Delay FIFO recovery point creation if is in in_begin_end scope (#7080) --- rpcs3/Emu/RSX/RSXThread.cpp | 2 +- rpcs3/Emu/RSX/rsx_methods.cpp | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/rpcs3/Emu/RSX/RSXThread.cpp b/rpcs3/Emu/RSX/RSXThread.cpp index 9b05a23b89..b8ebba05c1 100644 --- a/rpcs3/Emu/RSX/RSXThread.cpp +++ b/rpcs3/Emu/RSX/RSXThread.cpp @@ -566,7 +566,7 @@ namespace rsx } // Note a possible rollback address - if (sync_point_request) + if (sync_point_request && !in_begin_end) { restore_point = ctrl->get; saved_fifo_ret = fifo_ret_addr; diff --git a/rpcs3/Emu/RSX/rsx_methods.cpp b/rpcs3/Emu/RSX/rsx_methods.cpp index da3c1162a7..4b302afbe0 100644 --- a/rpcs3/Emu/RSX/rsx_methods.cpp +++ b/rpcs3/Emu/RSX/rsx_methods.cpp @@ -70,7 +70,7 @@ namespace rsx void semaphore_acquire(thread* rsx, u32 /*_reg*/, u32 arg) { - if (!rsx->in_begin_end) rsx->sync_point_request = true; + rsx->sync_point_request = true; const u32 addr = get_address(method_registers.semaphore_offset_406e(), method_registers.semaphore_context_dma_406e()); const auto& sema = vm::_ref>(addr); @@ -126,7 +126,7 @@ namespace rsx // By avoiding doing this on flip's semaphore release // We allow last gcm's registers reset to occur in case of a crash if (const bool is_flip_sema = (offset == 0x10 && ctxt == CELL_GCM_CONTEXT_DMA_SEMAPHORE_R); - !is_flip_sema && !rsx->in_begin_end) + !is_flip_sema) { rsx->sync_point_request = true; }