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,