mrbrown
Joined: 17 Jan 2004 Posts: 1536
|
Posted: Wed Dec 07, 2005 12:43 pm Post subject: |
|
|
I don't think the code in pspgl_ge_init() is the same as Holger's original version. In your implementation, you set the registers which are "lazy", so they aren't written until all pending changes are flushed. For starters, you don't set the ge_reg_touched bitmap for the registers in the init table, so it seems like only registers that are updated elsewhere in the API will ever be sent during a flush. I tried doing this, and it still didn't work. I think the problem here was that some of the registers used during init were either being overwritten by other OGL calls or they weren't being sent in the correct order. Holger's version of pspgl_ge_init.c just queued the entire init list as sceGuInit() does.
Here's a fix: | Code: | Index: pspgl_ge_init.c
===================================================================
--- pspgl_ge_init.c (revision 1527)
+++ pspgl_ge_init.c (working copy)
@@ -94,7 +94,7 @@
for (i=0; i<sizeof(ge_init_state)/sizeof(ge_init_state[0]); i++) {
unsigned long cmd = ge_init_state[i];
- c->ge_reg[cmd >> 24] = cmd;
+ __pspgl_dlist_enqueue_cmd(c->dlist_current, cmd);
}
glScissor(0, 0, c->draw->width, c->draw->height);
|
I've checked it in... I would've rather just sent the list all at once, but there didn't seem to be a non-trivial way to do it :). |
|