GNOME Developers New Code Takes On Cursor Stutters
It's been one year since Canonical desktop engineer Daniel van Vugt, who is known for his upstream GNOME contributions, touched his patch-set implementing dynamic deadline evasion support. But this week brought the long-awaited third iteration of the patches that aim to eliminate cursor stutters from the Mutter compositor's KMS thread.
In addition to continuing to battle triple buffering support for GNOME, HDR-related work, and other GNOME enhancements to benefit the Ubuntu Linux desktop, Daniel van Vugt has found the time to update the proposed dynamic deadline evasion code. This moves Mutter's deadline evasion code into the device so that it can be dynamically adjusted whenever there is a missed frame. This code has been successfully tested with modern atomic KMS kernel graphics drivers.
The code aims to address issues reported with GNOME such as heavy cursor stutter in some conditions, like cursor stuttering if nothing else is animated on the desktop at that moment.
This draft merge request opened last week has the latest dynamic deadline evasion code. But then as an alternative, Michel Dänzer came up with a different approach to track the KMS update duration within the crtc_frame_deadline_dispatch code so it's taken into account within the existing deadline evasion function.
That alternative implementation by Dänzer has been tested to fix the cursor stuttering he's experienced, so we'll see what implementation goes ahead. With the later merge request, it won't work though for the NVIDIA driver due to lacking necessary KMS timestamps. With GNOME 47 due out in mid-September and already hitting the freezes, we'll see if any cursor stuttering fixes make it still for that release as a "fix" or is diverted to GNOME 48 next year.
In addition to continuing to battle triple buffering support for GNOME, HDR-related work, and other GNOME enhancements to benefit the Ubuntu Linux desktop, Daniel van Vugt has found the time to update the proposed dynamic deadline evasion code. This moves Mutter's deadline evasion code into the device so that it can be dynamically adjusted whenever there is a missed frame. This code has been successfully tested with modern atomic KMS kernel graphics drivers.
The code aims to address issues reported with GNOME such as heavy cursor stutter in some conditions, like cursor stuttering if nothing else is animated on the desktop at that moment.
This draft merge request opened last week has the latest dynamic deadline evasion code. But then as an alternative, Michel Dänzer came up with a different approach to track the KMS update duration within the crtc_frame_deadline_dispatch code so it's taken into account within the existing deadline evasion function.
That alternative implementation by Dänzer has been tested to fix the cursor stuttering he's experienced, so we'll see what implementation goes ahead. With the later merge request, it won't work though for the NVIDIA driver due to lacking necessary KMS timestamps. With GNOME 47 due out in mid-September and already hitting the freezes, we'll see if any cursor stuttering fixes make it still for that release as a "fix" or is diverted to GNOME 48 next year.
43 Comments