GNOME's Window Rendering Culling Was Broken Leading To Wasted Performance
Written by Michael Larabel in GNOME on 22 June 2020 at 07:03 AM EDT. 59 Comments
GNOME --
It turns out for the GNOME 3.34 and 3.36 series, Mutter's window rendering culling code was broken and that led to extra rendering of windows not even visible... A fix is in the works and can lead to the performance doubling or more.

As part of wanting to improve the GNOME performance at 4K with Intel graphics, Canonical's Daniel van Vugt has been profiling various desktop issues and looking to address them for GNOME 3.38 / Ubuntu 20.10.

One of his recent discoveries is that the Mutter windows culling code in general was broken and given the greater number of pixels to handle at 4K becomes more pronounced there. Even windows not being presented at all were not being culled and that leads to a huge waste especially at high resolutions. When dragging a small terminal window over eight maximized window terminals, fixing the issue led to a frame rate from 30 to 60 FPS. Or when running a maximized glxgears window over eight maximized terminal windows, the frame-rate went from 15 to 60 FPS.

This lack of culling also jives with recent bug reports such as the MPV video player dropping frames as more maximized windows appear behind the MPV window.

This broken culling was a regression for v3.34 but a fix is currently being evaluated. Hopefully it will be picked up soon and back-ported as well given its importance.
Related News
About The Author
Author picture

Michael Larabel is the principal author of Phoronix.com and founded the site in 2004 with a focus on enriching the Linux hardware experience. Michael has written more than 20,000 articles covering the state of Linux hardware support, Linux performance, graphics drivers, and other topics. Michael is also the lead developer of the Phoronix Test Suite, Phoromatic, and OpenBenchmarking.org automated benchmarking software. He can be followed via Twitter or contacted via MichaelLarabel.com.

Popular News This Week