summaryrefslogtreecommitdiff
path: root/Source/Core
diff options
context:
space:
mode:
authorJMC47 <JMC4789@gmail.com>2024-11-11 00:38:26 -0500
committerGitHub <noreply@github.com>2024-11-11 00:38:26 -0500
commit80ea68b13c06ae3fa57775de39c902ed9c3c8e84 (patch)
treeebd875a423605e3c77e8e6a3982c10904f67a201 /Source/Core
parent375a990e411cc4739c5370276457e88d4f995d8f (diff)
parentfbce7374155cdd2df8a8bed2298f5c104ad2b946 (diff)
Merge pull request #13183 from Tilka/sync_on_fifo_reset
ProcessorInterface: sync GPU just before PI_FIFO_RESET
Diffstat (limited to 'Source/Core')
-rw-r--r--Source/Core/Core/HW/ProcessorInterface.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/Source/Core/Core/HW/ProcessorInterface.cpp b/Source/Core/Core/HW/ProcessorInterface.cpp
index fc26896a54..3eddfd5ed5 100644
--- a/Source/Core/Core/HW/ProcessorInterface.cpp
+++ b/Source/Core/Core/HW/ProcessorInterface.cpp
@@ -98,6 +98,10 @@ void ProcessorInterfaceManager::RegisterMMIO(MMIO::Mapping* mmio, u32 base)
{
system.GetGPFifo().ResetGatherPipe();
+ // Assume that all bytes that made it into the GPU fifo did in fact execute
+ // before this MMIO write takes effect.
+ system.GetFifo().SyncGPUForRegisterAccess();
+
// Call Fifo::ResetVideoBuffer() from the video thread. Since that function
// resets various pointers used by the video thread, we can't call it directly
// from the CPU thread, so queue a task to do it instead. In single-core mode,