Ge Callbacks seem to be working now.

This commit is contained in:
Henrik Rydgard 2012-11-06 18:14:09 +01:00
parent 1ae7528de1
commit 8a082f91cc
9 changed files with 99 additions and 83 deletions

View file

@ -130,6 +130,11 @@ void GLES_GPU::UpdateStall(int listid, u32 newstall)
ProcessDLQueue();
}
void GLES_GPU::DrawSync(int mode)
{
}
// Just to get something on the screen, we'll just not subdivide correctly.
void drawBezier(int ucount, int vcount)
{
@ -338,21 +343,13 @@ void GLES_GPU::ExecuteOp(u32 op, u32 diff)
break;
case GE_CMD_SIGNAL:
ERROR_LOG(G3D, "DL GE_CMD_SIGNAL %08x", data & 0xFFFFFF);
{
// int behaviour = (data >> 16) & 0xFF;
// int signal = data & 0xFFFF;
ERROR_LOG(G3D, "DL GE_CMD_SIGNAL %08x", data & 0xFFFFFF);
int behaviour = (data >> 16) & 0xFF;
int signal = data & 0xFFFF;
__TriggerInterruptWithArg(PSP_GE_INTR, PSP_GE_SUBINTR_SIGNAL, signal);
}
// This should generate a GE Interrupt
// __TriggerInterrupt(PSP_GE_INTR);
// Apparently, these callbacks should be done in a special interrupt way.
//for (size_t i = 0; i < signalCallbacks.size(); i++)
//{
// __KernelNotifyCallback(-1, signalCallbacks[i].first, signal);
//}
break;
case GE_CMD_BJUMP:
@ -385,18 +382,9 @@ void GLES_GPU::ExecuteOp(u32 op, u32 diff)
// offsetAddr = data<<8;
break;
case GE_CMD_FINISH:
DEBUG_LOG(G3D,"DL CMD FINISH");
// Trigger the finish callbacks
{
// Apparently, these callbacks should be done in a special interrupt way.
//for (size_t i = 0; i < finishCallbacks.size(); i++)
//{
// __KernelNotifyCallback(-1, finishCallbacks[i].first, 0);
//}
}
__TriggerInterruptWithArg(PSP_GE_INTR, PSP_GE_SUBINTR_FINISH, 0);
break;
case GE_CMD_END: