summaryrefslogtreecommitdiff
path: root/Source/Core/VideoCommon/CommandProcessor.cpp
diff options
context:
space:
mode:
authordegasus <wickmarkus@web.de>2015-03-05 21:14:46 +0100
committerdegasus <wickmarkus@web.de>2015-04-06 12:35:35 +0200
commitb020ae1c5db4e2e198d1beea91c75219a251a167 (patch)
treed9f7b069ffde368ecc0d47a5c2b0820f18bc2c80 /Source/Core/VideoCommon/CommandProcessor.cpp
parent9bdaa00e2dc18c06dcb9882d7f0caf372ed5990d (diff)
Fifo: rewrite sync on idle skipping hack
Now it's done without a busy loop
Diffstat (limited to 'Source/Core/VideoCommon/CommandProcessor.cpp')
-rw-r--r--Source/Core/VideoCommon/CommandProcessor.cpp17
1 files changed, 2 insertions, 15 deletions
diff --git a/Source/Core/VideoCommon/CommandProcessor.cpp b/Source/Core/VideoCommon/CommandProcessor.cpp
index 21ef0be2a9..162e3a2d53 100644
--- a/Source/Core/VideoCommon/CommandProcessor.cpp
+++ b/Source/Core/VideoCommon/CommandProcessor.cpp
@@ -40,7 +40,6 @@ static u16 m_bboxright;
static u16 m_bboxbottom;
static u16 m_tokenReg;
-volatile bool isPossibleWaitingSetDrawDone = false;
volatile bool interruptSet= false;
volatile bool interruptWaiting= false;
volatile bool interruptTokenWaiting = false;
@@ -70,7 +69,6 @@ void DoState(PointerWrap &p)
p.Do(m_tokenReg);
p.Do(fifo);
- p.Do(isPossibleWaitingSetDrawDone);
p.Do(interruptSet);
p.Do(interruptWaiting);
p.Do(interruptTokenWaiting);
@@ -123,8 +121,6 @@ void Init()
interruptFinishWaiting = false;
interruptTokenWaiting = false;
- isPossibleWaitingSetDrawDone = false;
-
et_UpdateInterrupts = CoreTiming::RegisterEvent("CPInterrupt", UpdateInterrupts_Wrapper);
}
@@ -319,7 +315,7 @@ void GatherPipeBursted()
(ProcessorInterface::Fifo_CPUBase == fifo.CPBase) &&
fifo.CPReadWriteDistance > 0)
{
- ProcessFifoAllDistance();
+ FlushGpu();
}
}
RunGpu();
@@ -468,15 +464,6 @@ void SetCPStatusFromCPU()
}
}
-void ProcessFifoAllDistance()
-{
- if (IsOnThread())
- {
- while (!interruptWaiting && fifo.bFF_GPReadEnable && fifo.CPReadWriteDistance && !AtBreakpoint())
- Common::YieldCPU();
- }
-}
-
void ProcessFifoEvents()
{
if (IsOnThread() && (interruptWaiting || interruptFinishWaiting || interruptTokenWaiting))
@@ -518,7 +505,7 @@ void SetCpControlRegister()
if (fifo.bFF_GPReadEnable && !m_CPCtrlReg.GPReadEnable)
{
fifo.bFF_GPReadEnable = m_CPCtrlReg.GPReadEnable;
- while (fifo.isGpuReadingData) Common::YieldCPU();
+ FlushGpu();
}
else
{