Merge pull request #3904 from unknownbrackets/ge-minor

Actually apply restored ge contexts
This commit is contained in:
Henrik Rydgård 2013-09-24 01:00:30 -07:00
commit 79853f3a5b

View File

@ -653,6 +653,9 @@ void GPUCommon::ProcessDLQueueInternal() {
cyclesExecuted = 0;
UpdateTickEstimate(std::max(busyTicks, startingTicks + cyclesExecuted));
// Game might've written new texture data.
gstate_c.textureChanged = true;
// Seems to be correct behaviour to process the list anyway?
if (startingTicks < busyTicks) {
DEBUG_LOG(G3D, "Can't execute a list yet, still busy for %lld ticks", busyTicks - startingTicks);
@ -893,6 +896,7 @@ void GPUCommon::ExecuteOp(u32 op, u32 diff) {
__GeTriggerSync(WAITTYPE_GELISTSYNC, currentList->id, currentList->waitTicks);
if (currentList->started && currentList->context != NULL) {
gstate.Restore(currentList->context);
ReapplyGfxStateInternal();
}
}
break;
@ -952,6 +956,7 @@ void GPUCommon::InterruptEnd(int listid) {
if (dl.state == PSP_GE_DL_STATE_COMPLETED || dl.state == PSP_GE_DL_STATE_NONE) {
if (dl.started && dl.context != NULL) {
gstate.Restore(dl.context);
ReapplyGfxState();
}
dl.waitTicks = 0;
__GeTriggerWait(WAITTYPE_GELISTSYNC, listid);