diff options
| author | ayuanx <ayuanx@gmail.com> | 2010-01-07 20:01:41 +0000 |
|---|---|---|
| committer | ayuanx <ayuanx@gmail.com> | 2010-01-07 20:01:41 +0000 |
| commit | 9cbd50818100df4b6dabeeb294206d8cb9ab3fc7 (patch) | |
| tree | 4cdf40b416dde01ffbcc33fd295c839260764c09 /Source/Core/VideoCommon/Src/CommandProcessor.cpp | |
| parent | 64167bcb604ff20f88abd40ab28b715400b0b112 (diff) | |
1. This should fix Issue 1625 (Bizarre Auto Frame Limit)
Now the frame limiter yields on CPU thread, not as before on GPU thread mistakenly
2. Fixed clear of VI interrupts
I guess VI interrupts are not used at all, because they were never cleared before
3. Made GPU thread 0% processor usage when paused whatever your active config is.
I tried the event approach but somehow the thread resume latency is excessively long (Who can tell me why?)
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@4790 8ced0084-cf51-0410-be5f-012b33b47a6e
Diffstat (limited to 'Source/Core/VideoCommon/Src/CommandProcessor.cpp')
| -rw-r--r-- | Source/Core/VideoCommon/Src/CommandProcessor.cpp | 9 |
1 files changed, 1 insertions, 8 deletions
diff --git a/Source/Core/VideoCommon/Src/CommandProcessor.cpp b/Source/Core/VideoCommon/Src/CommandProcessor.cpp index bf88c57e57..27a5b0ea27 100644 --- a/Source/Core/VideoCommon/Src/CommandProcessor.cpp +++ b/Source/Core/VideoCommon/Src/CommandProcessor.cpp @@ -383,7 +383,6 @@ 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)))
{
- Fifo_RunLoop();
s_fifoIdleEvent.MsgWait();
}
}
@@ -414,8 +413,6 @@ void Write16(const u16 _Value, const u32 _Address) Common::AtomicStore(fifo.bFF_Breakpoint, 0);
}
- Fifo_RunLoop();
-
DEBUG_LOG(COMMANDPROCESSOR,"\t write to CTRL_REGISTER : %04x", _Value);
DEBUG_LOG(COMMANDPROCESSOR, "\t GPREAD %s | LINK %s | BP %s || Init %s | OvF %s | UndF %s"
, fifo.bFF_GPReadEnable ? "ON" : "OFF"
@@ -572,10 +569,9 @@ void WaitForFrameFinish() {
while ((fake_GPWatchdogLastToken == fifo.Fake_GPWDToken) && fifo.bFF_GPReadEnable && ((!fifo.bFF_BPEnable && fifo.CPReadWriteDistance) || (fifo.bFF_BPEnable && !fifo.bFF_Breakpoint)));
{
- Fifo_RunLoop();
s_fifoIdleEvent.MsgWait();
}
-
+
fake_GPWatchdogLastToken = fifo.Fake_GPWDToken;
}
@@ -594,7 +590,6 @@ void STACKALIGN GatherPipeBursted() fifo.CPWritePointer += GATHER_PIPE_SIZE;
Common::AtomicAdd(fifo.CPReadWriteDistance, GATHER_PIPE_SIZE);
- Fifo_RunLoop();
// High watermark overflow handling (hacked way)
if (fifo.CPReadWriteDistance > fifo.CPHiWatermark)
@@ -619,7 +614,6 @@ 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)))
{
- Fifo_RunLoop();
s_fifoIdleEvent.MsgWait();
}
}
@@ -725,7 +719,6 @@ void UpdateFifoRegister() dist = (wp - fifo.CPBase) + ((fifo.CPEnd + GATHER_PIPE_SIZE) - rp);
Common::AtomicStore(fifo.CPReadWriteDistance, dist);
- Fifo_RunLoop();
if (!g_VideoInitialize.bOnThread)
CatchUpGPU();
|
