DRI2 Sync + Swap Extensions Near Reality
When running a modern Linux graphics driver stack in a composited environment there is a lot less tearing -- particularly with regard to video playback, but OpenGL applications too -- now than there was in the past, but there is still room for improvement. One of the ways to improve this is by properly controlling the display of buffers with how often the swaps occur and to sync them with the monitor's refresh rate or the rate at which the compositor is running. Unfortunately, the X Server and open-source graphics stack have lacked such functionality even though some OpenGL/GLX extensions for this support have been around for years. Intel's Jesse Barnes though has been working on proper DRI2 support for synchronization and swapping.
Jesse has added support to Mesa and the X Server that will allow for the appropriate OpenGL/GLX extensions that expose syncing and frame counting capabilities (SGI_swap_control, SGI_video_sync, SGIX_swap_barrier, etc). This code though is currently housed in his personal Git repositories as the patches await review and feedback (mailing list message). This DRI2 synchronization and buffer swaps code is also dependent upon revisions to dri2proto and libdrm along with the latest DRM code that will eventually be pushed into the Linux 2.6.33 kernel due to its vblank event support.
Besides cutting down on tearing and other visual defects, proper synchronization of swaps can provide a smoother experience with a consistent frame-rate and can enhance the performance of some applications. More information on the technical end of this support can be found on the composite swaps Wiki page. This support isn't yet living in Git master, but it's surely on its way, which will benefit Linux desktop users.
Jesse has added support to Mesa and the X Server that will allow for the appropriate OpenGL/GLX extensions that expose syncing and frame counting capabilities (SGI_swap_control, SGI_video_sync, SGIX_swap_barrier, etc). This code though is currently housed in his personal Git repositories as the patches await review and feedback (mailing list message). This DRI2 synchronization and buffer swaps code is also dependent upon revisions to dri2proto and libdrm along with the latest DRM code that will eventually be pushed into the Linux 2.6.33 kernel due to its vblank event support.
Besides cutting down on tearing and other visual defects, proper synchronization of swaps can provide a smoother experience with a consistent frame-rate and can enhance the performance of some applications. More information on the technical end of this support can be found on the composite swaps Wiki page. This support isn't yet living in Git master, but it's surely on its way, which will benefit Linux desktop users.
17 Comments