KWin-LowLatency: An Effort To Yield Less Stutter & Lower Latency With The KDE Desktop
The kwin-lowlatency project is an independent fork of the KWin window manager / compositor aiming to deliver less stutter and a more responsive KDE desktop experience.
In seeking to address reported "heavy" stuttering and up to 50ms latency problems, KWin-lowlatency has been in development. The work isn't just fixes to be trivially upstreamed but rather a refactoring of the internal code for how KWin paints the screen. KWin currently relies upon a timer that isn't necessarily synchronized with the vblank interval of the display(s) and there are various workarounds to provide a better experience, but those workarounds can introduce input lag.
The kwin-lowlatency code reworks this core KWin code to utilize glXWaitVideoSync for accessing the vblank interval directly and bypass the existing KWin timer. Though admittedly this solution is also less than ideal since it only works on X11 with GLX and not EGL (thus no OpenGL ES) and also no Wayland support. But for those running KWin on X11 with OpenGL, this has the potential of delivering a better experience.
Due to the explicit GLX usage and not yet receiving enough testing, the work isn't aiming for upstream KWin at the moment.Additionally, the developer is planning to merge the unredirected windows branch and that is code the upstream developers have said they didn't want to mege upstream.
Those wanting to learn more or get involved with the KWin-Lowlatency project to try to help enhance the KDE desktop experience can learn more via the GitHub project site.
In seeking to address reported "heavy" stuttering and up to 50ms latency problems, KWin-lowlatency has been in development. The work isn't just fixes to be trivially upstreamed but rather a refactoring of the internal code for how KWin paints the screen. KWin currently relies upon a timer that isn't necessarily synchronized with the vblank interval of the display(s) and there are various workarounds to provide a better experience, but those workarounds can introduce input lag.
The kwin-lowlatency code reworks this core KWin code to utilize glXWaitVideoSync for accessing the vblank interval directly and bypass the existing KWin timer. Though admittedly this solution is also less than ideal since it only works on X11 with GLX and not EGL (thus no OpenGL ES) and also no Wayland support. But for those running KWin on X11 with OpenGL, this has the potential of delivering a better experience.
Due to the explicit GLX usage and not yet receiving enough testing, the work isn't aiming for upstream KWin at the moment.Additionally, the developer is planning to merge the unredirected windows branch and that is code the upstream developers have said they didn't want to mege upstream.
Those wanting to learn more or get involved with the KWin-Lowlatency project to try to help enhance the KDE desktop experience can learn more via the GitHub project site.
109 Comments