Disabled thread synchronization check so the speed should be back, and theoretically should be even faster than r4698.
Hope it is safe to do so. git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@4701 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
parent
84e6070e61
commit
b0ef811786
|
@ -484,9 +484,11 @@ void Write16(const u16 _Value, const u32 _Address)
|
||||||
// TODO(mb2): better. Check if it help: avoid CPReadPointer overwrites when stupidly done like in Super Monkey Ball
|
// TODO(mb2): better. Check if it help: avoid CPReadPointer overwrites when stupidly done like in Super Monkey Ball
|
||||||
if ((!fifo.bFF_GPReadEnable && fifo.CPReadIdle) || !g_VideoInitialize.bOnThread) // TOCHECK(mb2): check again if thread safe?
|
if ((!fifo.bFF_GPReadEnable && fifo.CPReadIdle) || !g_VideoInitialize.bOnThread) // TOCHECK(mb2): check again if thread safe?
|
||||||
{
|
{
|
||||||
if (g_VideoInitialize.bOnThread) FifoCriticalEnter(); // This may not be necessary, just for safety
|
// Disabling this thread synchronization check does boost the speed
|
||||||
|
// Hope it is safe to skip this check
|
||||||
|
// if (g_VideoInitialize.bOnThread) FifoCriticalEnter(); // This may not be necessary, just for safety
|
||||||
UpdateFifoRegister();
|
UpdateFifoRegister();
|
||||||
if (g_VideoInitialize.bOnThread) FifoCriticalLeave();
|
// if (g_VideoInitialize.bOnThread) FifoCriticalLeave();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -536,9 +538,7 @@ void STACKALIGN GatherPipeBursted()
|
||||||
else
|
else
|
||||||
fifo.CPWritePointer += GATHER_PIPE_SIZE;
|
fifo.CPWritePointer += GATHER_PIPE_SIZE;
|
||||||
|
|
||||||
FifoCriticalEnter(); // This may not be necessary, just for safety
|
|
||||||
Common::AtomicAdd(fifo.CPReadWriteDistance, GATHER_PIPE_SIZE);
|
Common::AtomicAdd(fifo.CPReadWriteDistance, GATHER_PIPE_SIZE);
|
||||||
FifoCriticalLeave();
|
|
||||||
|
|
||||||
// High watermark overflow handling (hacked way)
|
// High watermark overflow handling (hacked way)
|
||||||
if (fifo.CPReadWriteDistance > fifo.CPHiWatermark)
|
if (fifo.CPReadWriteDistance > fifo.CPHiWatermark)
|
||||||
|
|
|
@ -137,8 +137,6 @@ void Fifo_EnterLoop(const SVideoInitialize &video_initialize)
|
||||||
VideoFifo_CheckEFBAccess();
|
VideoFifo_CheckEFBAccess();
|
||||||
VideoFifo_CheckSwapRequest();
|
VideoFifo_CheckSwapRequest();
|
||||||
|
|
||||||
CommandProcessor::FifoCriticalEnter();
|
|
||||||
|
|
||||||
// check if we are able to run this buffer
|
// check if we are able to run this buffer
|
||||||
if (_fifo.bFF_GPReadEnable && _fifo.CPReadWriteDistance && !_fifo.bFF_Breakpoint)
|
if (_fifo.bFF_GPReadEnable && _fifo.CPReadWriteDistance && !_fifo.bFF_Breakpoint)
|
||||||
{
|
{
|
||||||
|
@ -153,6 +151,8 @@ void Fifo_EnterLoop(const SVideoInitialize &video_initialize)
|
||||||
u32 readPtr = _fifo.CPReadPointer;
|
u32 readPtr = _fifo.CPReadPointer;
|
||||||
u8 *uData = video_initialize.pGetMemoryPointer(readPtr);
|
u8 *uData = video_initialize.pGetMemoryPointer(readPtr);
|
||||||
|
|
||||||
|
CommandProcessor::FifoCriticalEnter();
|
||||||
|
|
||||||
// It looks like even in BP mode, we still can send all the chunks we have
|
// It looks like even in BP mode, we still can send all the chunks we have
|
||||||
/*
|
/*
|
||||||
// if we are on BP mode we must send 32B chunks to Video plugin for BP checking
|
// if we are on BP mode we must send 32B chunks to Video plugin for BP checking
|
||||||
|
@ -194,6 +194,9 @@ void Fifo_EnterLoop(const SVideoInitialize &video_initialize)
|
||||||
|
|
||||||
Common::AtomicStore(_fifo.CPReadPointer, readPtr);
|
Common::AtomicStore(_fifo.CPReadPointer, readPtr);
|
||||||
Common::AtomicAdd(_fifo.CPReadWriteDistance, -distToSend);
|
Common::AtomicAdd(_fifo.CPReadWriteDistance, -distToSend);
|
||||||
|
|
||||||
|
CommandProcessor::FifoCriticalLeave();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
video_initialize.pPeekMessages();
|
video_initialize.pPeekMessages();
|
||||||
if (g_ActiveConfig.bEFBAccessEnable)
|
if (g_ActiveConfig.bEFBAccessEnable)
|
||||||
|
@ -208,8 +211,6 @@ void Fifo_EnterLoop(const SVideoInitialize &video_initialize)
|
||||||
{
|
{
|
||||||
Common::YieldCPU();
|
Common::YieldCPU();
|
||||||
}
|
}
|
||||||
|
|
||||||
CommandProcessor::FifoCriticalLeave();
|
|
||||||
}
|
}
|
||||||
fifo_exit_event.Set();
|
fifo_exit_event.Set();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue