GNOME Triple Buffering May Need To Be Re-Engineered - Helping NVIDIA Performance
The long-in-development GNOME triple buffering support that is patched into the Ubuntu and Debian builds and available for years in patch form might need to undergo a redesign. That's to better accommodate the NVIDIA Linux driver and likely help other non-Mesa graphics drivers too.
Canonical engineer Daniel van Vugt who has long been leading the GNOME triple buffering work shared the need this week for its potential redesign... Unless NVIDIA comes out with a new Linux driver that overcomes some current limitations. Daniel shared in this week's Ubuntu desktop team update:
He added in a bug report:
For GNOME 48, Daniel van Vugt is hoping to separate meta_drm_buffer_gbm_new_lock_front and related code from the meta_onscreen_native_swap_buffers_with_damage function since the current code is only performing well on Mesa drivers that don't block within meta_drm_buffer_gbm_new_lock_front due to implicit synchronization.
We'll see what materializes during the GNOME 48 development cycle and if there is a new triple buffering implementation come Ubuntu 25.04 or whether the NVIDIA driver is better handled. As well as waiting to see if/when the triple buffering code is finally merged into upstream Mutter.
Canonical engineer Daniel van Vugt who has long been leading the GNOME triple buffering work shared the need this week for its potential redesign... Unless NVIDIA comes out with a new Linux driver that overcomes some current limitations. Daniel shared in this week's Ubuntu desktop team update:
"Finished profiling and triaging the Nvidia-Wayland performance issues, splitting them into multiple tasks. The main problem will require either a new Nvidia driver or a redesign of triple buffering in GNOME 48 to work around the current Nvidia behaviour. Though if that happens then other (particularly non-Mesa) drivers would get a performance improvement."
He added in a bug report:
"We've verified that most of the shell's performance problem comes down to an architectural difference between Mesa and Nvidia drivers. And while I thought triple buffering should work around that, it doesn't yet.
So is the main fix that the Nvidia driver needs (not counting subtle power saving/scaling differences between 550 and 560). And is a performance improvement to triple buffering that might be possible, and would work around the need for changes to the proprietary Nvidia driver."
For GNOME 48, Daniel van Vugt is hoping to separate meta_drm_buffer_gbm_new_lock_front and related code from the meta_onscreen_native_swap_buffers_with_damage function since the current code is only performing well on Mesa drivers that don't block within meta_drm_buffer_gbm_new_lock_front due to implicit synchronization.
We'll see what materializes during the GNOME 48 development cycle and if there is a new triple buffering implementation come Ubuntu 25.04 or whether the NVIDIA driver is better handled. As well as waiting to see if/when the triple buffering code is finally merged into upstream Mutter.
105 Comments