extra vsync when reading back pixels in xbmc
Submitted by Pierre Ossman
Assigned to Default DRI bug account
Description
Something is causing an extra wait for vsync in xbmc when it needs to read back pixels. This seems to be specific to the radeon driver as I'm not seeing it with nouveau.
Test scenario:
- Configure xbmc to wait for vsync
- Install something that activates xbmc's capture code (e.g. xbmc's boblight plugin)
- Play a video whose framerate > screen refresh / 2
You'll see the frame rate reliably locked to screen refresh / 2 under these circumstances. A major problem as you generally want to run with a 24 Hz refresh rate for 24 Hz films.
I'm unable to pinpoint exactly the offending GL command as xbmc's rendering is quite complex. I hope you're more experienced in finding these things. :)
The rough sequence of events is:
1. xbmc renders the scene
2. Wait for vsync
3. Map PBO and memcpy data. (from previous frame)
4. Render small version of scene
5. glReadPixels into PBO