A new XWayland API has been proposed for helping the X.Org drivers implement the ScheduleSwap event and for providing an efficient implementation of async swaps. The new interfaces for XWayland can avoid copies and thus provide real-world performance improvements.
Axel Davy has proposed the new extensions to the XWayland code in the X.Org Server, which adds nearly 500 lines of new code. The new XWayland interfaces allow for manipulating frame/release events and to modify the buffers that are visible to the Wayland compositor. With the new code, it's possible to do an efficient implementation of async swapping and the ScheduleSwap and AsyncSwap support was tested on the GLAMOR-based Wayland DDX X.Org driver
Axel shared that for Intel HD 4000 "Ivy Bridge" graphics with GLMark2 in one benchmark he saw the frame-rate go from 49 to 53 FPS after applying the patch. In another OpenGL benchmark the performance went from 397 to 645 frames per second by being able to avoid an additional copy of the buffer. The AsyncSwap code is also able to suppress tearing.
The new XWayland API can be found for now on the wayland-devel mailing list
. Hopefully the XWayland support will still end up being merged for X.Org Server 1.15
, which is due for release at year's end