Atomicity, interlaced mode, buffered ordering tables
Posted: May 5th, 2014, 5:58 am
I've decided I'm going to base my work exclusively around interlaced mode. Obviously that means that I have only one video buffer. So as I understand it the normal arrangement is:
I can't seem to find any mention of mutexs or condition locks or any of the other standard concurrency devices in the PlayStation documentation. It'd also be nice if there were some properly safe approach so that I could pass timing information back from the vsync callback and adjust my gameplay rate accordingly — i.e. I want to start doing more than just pushing one 32-bit value in one direction.
- use multiple ordering tables for buffering rather than multiple video buffers — you're buffering geometry you will draw, not pixels;
- install a VSyncCallback and within it (i) cancel any ongoing GPU activity; (ii) set the interlace flag appropriately; (iii) request a draw of the ordering table intended for the next frame;
- meanwhile the CPU and GTE tick over filling some other ordering table for a future frame.
I can't seem to find any mention of mutexs or condition locks or any of the other standard concurrency devices in the PlayStation documentation. It'd also be nice if there were some properly safe approach so that I could pass timing information back from the vsync callback and adjust my gameplay rate accordingly — i.e. I want to start doing more than just pushing one 32-bit value in one direction.