mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-22 05:40:01 -06:00
This could alleviate the suffering of dual core synchronization a bit.
But I doubt you would notice it in most cases. git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@4830 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
@ -105,7 +105,7 @@ int m_bboxbottom;
|
||||
u16 m_tokenReg;
|
||||
|
||||
static u32 fake_GPWatchdogLastToken = 0;
|
||||
static Common::Event s_fifoIdleEvent;
|
||||
static Common::EventEx s_fifoIdleEvent;
|
||||
static Common::CriticalSection sFifoCritical;
|
||||
|
||||
void FifoCriticalEnter()
|
||||
@ -381,7 +381,7 @@ void Write16(const u16 _Value, const u32 _Address)
|
||||
// Touching that game is a no-go so I don't want to take the risk :p
|
||||
while (fifo.bFF_GPReadEnable && ((!fifo.bFF_BPEnable && fifo.CPReadWriteDistance) || (fifo.bFF_BPEnable && !fifo.bFF_Breakpoint)))
|
||||
{
|
||||
s_fifoIdleEvent.MsgWait();
|
||||
s_fifoIdleEvent.Wait();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -573,7 +573,7 @@ void WaitForFrameFinish()
|
||||
{
|
||||
while ((fake_GPWatchdogLastToken == fifo.Fake_GPWDToken) && fifo.bFF_GPReadEnable && ((!fifo.bFF_BPEnable && fifo.CPReadWriteDistance) || (fifo.bFF_BPEnable && !fifo.bFF_Breakpoint)));
|
||||
{
|
||||
s_fifoIdleEvent.MsgWait();
|
||||
s_fifoIdleEvent.Wait();
|
||||
}
|
||||
|
||||
fake_GPWatchdogLastToken = fifo.Fake_GPWDToken;
|
||||
@ -618,7 +618,7 @@ void STACKALIGN GatherPipeBursted()
|
||||
// Wait for GPU to catch up
|
||||
while (fifo.CPReadWriteDistance > fifo.CPLoWatermark && fifo.bFF_GPReadEnable && (!fifo.bFF_BPEnable || (fifo.bFF_BPEnable && !fifo.bFF_Breakpoint)))
|
||||
{
|
||||
s_fifoIdleEvent.MsgWait();
|
||||
s_fifoIdleEvent.Wait();
|
||||
}
|
||||
}
|
||||
// check if we are in sync
|
||||
|
@ -36,7 +36,7 @@ namespace
|
||||
static volatile bool fifoStateRun = false;
|
||||
static volatile bool EmuRunning = false;
|
||||
static u8 *videoBuffer;
|
||||
static Common::Event fifo_run_event;
|
||||
static Common::EventEx fifo_run_event;
|
||||
// STATE_TO_SAVE
|
||||
static int size = 0;
|
||||
} // namespace
|
||||
@ -170,6 +170,7 @@ void Fifo_EnterLoop(const SVideoInitialize &video_initialize)
|
||||
{
|
||||
Common::AtomicStore(_fifo.bFF_Breakpoint, 1);
|
||||
CommandProcessor::UpdateInterruptsFromVideoPlugin(true);
|
||||
CommandProcessor::FifoCriticalLeave();
|
||||
break;
|
||||
}
|
||||
distToSend = 32;
|
||||
@ -208,10 +209,7 @@ void Fifo_EnterLoop(const SVideoInitialize &video_initialize)
|
||||
// leading the CPU thread to wait in Video_BeginField or Video_AccessEFB thus slowing things down.
|
||||
VideoFifo_CheckEFBAccess();
|
||||
VideoFifo_CheckSwapRequest();
|
||||
|
||||
CommandProcessor::SetFifoIdleFromVideoPlugin();
|
||||
}
|
||||
|
||||
CommandProcessor::SetFifoIdleFromVideoPlugin();
|
||||
if (EmuRunning)
|
||||
Common::YieldCPU();
|
||||
|
Reference in New Issue
Block a user