Use proper draw sequence in PPGeDraw

This commit is contained in:
Florent Castelli 2013-02-04 00:42:52 +01:00
parent 0d54048efd
commit c37566d3bc
2 changed files with 7 additions and 3 deletions

View File

@ -44,5 +44,9 @@ void __GeShutdown();
// Export functions for use by Util/PPGe
u32 sceGeRestoreContext(u32 ctxAddr);
u32 sceGeSaveContext(u32 ctxAddr);
int sceGeBreak(u32 mode);
int sceGeContinue();
int sceGeListSync(u32 displayListID, u32 mode);
u32 sceGeListEnQueue(u32 listAddress, u32 stallAddress, int callbackId, u32 optParamAddr);
u32 sceGeListEnQueueHead(u32 listAddress, u32 stallAddress, int callbackId, u32 optParamAddr);

View File

@ -229,15 +229,15 @@ void PPGeEnd()
WriteCmd(GE_CMD_END, 0);
if (dataWritePtr > dataPtr) {
sceGeBreak(0);
sceGeSaveContext(savedContextPtr);
gpu->EnableInterrupts(false);
// We actually drew something
u32 list = sceGeListEnQueue(dlPtr, dlWritePtr, 0, 0);
u32 list = sceGeListEnQueueHead(dlPtr, dlWritePtr, -1, 0);
DEBUG_LOG(HLE, "PPGe enqueued display list %i", list);
// TODO: Might need to call some internal trickery function when this is actually synchronous.
// sceGeListSync(u32 displayListID, 1); //0 : wait for completion 1:check and return
gpu->EnableInterrupts(true);
sceGeContinue();
sceGeRestoreContext(savedContextPtr);
}
}