(08-07-2011, 07:58 PM)gid15 Wrote:(08-05-2011, 05:30 PM)Orphis Wrote: I think the heavy functions in the OpenGL pipeline are the PRIM, BEZIER, SPLINE and the frame buffer transfer command (XKICK if I remember correctly). The other ones aren't very time consuming.Yes, PRIM, BEZIER and SPLINE can be skipped, but TRXKICK should not: it is used by some games to copy parts of the display list.
Also, bounding boxes can probably be skipped as well: skip BBOX and always take the jump in BJUMP.
overgamer Wrote:Also I don't know if it is possible to use a profiler to check where exactly is the heavy rendering part, it would help a lot.Statistics (e.g. duration of each VideoEngine command) can be activated by setting jpcsp.util.DurationStatistics.collectStatistics to true. Statistics are then displayed in the log file when Jpcsp exits.
In your draft implementation, you were actually not skipping any frame rendering: the GE list was still enqueued in the VideoEngine, the list processing was just delayed (probably to the next VSYNC). This would probably only cause the application to run slower, but not skip any frame.
The approach proposed by Orphis is much more promising.
Thanks gid15 for theses precisions! I'm still looking at the code at the moment, and I'll start to disable these commands one after the other to see if it dosen't break anything. As I said, It's the very first time I deal with an emulator's source code, and I didn't knew how the rendering process was achieved. I am slowly starting to see how it seems to work now. I'll post if I ever get some results, but I'm highly motivated! Also if there is anything else that is special about the rendering part, feel free to tell me =')
Edit: okay, when PRIM, BEZIER, SPLINE, and BBOX are all ommited (and always jumping on BJUMP) we do get some great improvments on fps (depending on how many frames we skip), but it's very messy in term of display. The display is not stable. What I mean is that it turns black with some randoms colors very quickly and flickers much more. It also break fluid videos (eg opening of 3th birthday) with some heavy flickering because of that. Do you know what can possibly turn the screen black like that and not keeping the previous frame displayed?