New in Media Center 33 is a new presentation mode for JRVR, which presents a frame for every VSYNC, which should improve timing and rendering stability.
The new mode is not on by default in Media Center 33 yet, but can be enabled in the JRVR Advanced settings, where you can also control the length of the presentation queue.
On a technical level, this swaps around the timing of frames to be entirely VSYNC driven, rather then driven by the frame itself.
Some technical details below, to describe the difference, and why it is better.
Old/Legacy Mode
- JRVR receives a video frame, and looks at its timestamp
- Then sleeps an appropriate amount of time until the frame should be shown
- And shows it
New Mode
- JRVR looks at when the next VSYNC will occur, and checks the list of available frames which would be the best fit
- Then renders the frame immediately, as the GPU is responsible for showing it on the VSYNC
- Repeat for the next VSYNC
The new mode lacks the "sleep" portion, which makes it more accurate - as sleeps are not necessarily guaranteed to wake up at the right time.
Instead, we submit multiple frames for the next few VSYNCs to the GPU, and let it show them on the VSYNC interrupt, giving all the responsibility of perfect timing to the GPU instead.
As a consequence of this, when using a refresh rate higher then the video frame rate (eg. personally I run 120Hz for 24p and 30p content), individual frames need to be presented multiple times. For this we're leveraging separate render and output queues, as the JRVR OSD will indicate, which avoids completely re-rendering the frames multiple times, instead the final present output stage only blends overlays onto the final image, and dithers it. Any other rendering is only performed once.
Please let us know how this mode fares for you. In my testing the timing stability has been improved, and some issues with fluctuating VSYNC measurements eliminated.