ProcessorInterface: sync GPU just before PI_FIFO_RESET
GXAbortFrame() is problematic for Dolphin because it first writes PI_FIFO_RESET (for which we discard our internal fifo), then disables CP reads (for which we execute pending commands in the GP fifo in emulated memory). I don't know whether there is a race condition on hardware, but there is one for us. Avoid this by also doing a GPU sync here.
This commit is contained in:
parent
4b0b9799a9
commit
fbce737415
|
@ -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,
|
||||
|
|
Loading…
Reference in New Issue