The rendering is asynchronous, and also buffered. At any given time, there are three scenes in the video hardware. One being displayed, one being rendered, and one being generated. pvr_scene_finish simply finishes the scene being generated, and (when the rendering of the previous scene finishes, if it hasn't already) rendering begins on that scene. While a scene is being rendered, you can do whatever you like on the SH-4 (including send another scene).
pvr_wait_ready has to wait for a vblank, because the PVRs rendering buffers are flipped during a vblank. During a vblank, KOS handles buffer flipping, and sending the next frame out. If you don't use pvr_wait_ready, you're going to be trying to send a fourth scene to the hardware, and it can't deal with that.
I'm not 100% sure if it's a limitation of the hardware, or a limitation of KOS. I suspect that the PVR could render as fast as it's able to if you programmed it correctly, but that would involve removing the vblank wait for a page flip as well.
Bookmarks