GNOME’s Mutter Gets a Merge Request to Survive GPU Resets Without Losing the Session

A Google Summer of Code project lets Mutter rebuild its graphics state after a GPU reset and restore windows, cursors and the background instantly. GNOME Shell UI recovery is still unfinished.
GNOME’s Mutter Gets a Merge Request to Survive GPU Resets Without Losing the Session
GNOME’s Mutter Gets a Merge Request to Survive GPU Resets Without Losing the Session

When a GPU hangs and the driver resets it, GNOME users have usually lost their whole session. A Google Summer of Code project aims to end that, and the code is now up for review as a merge request to Mutter, GNOME’s compositor.

Student developer Toluwaleke Ogundipe opened the merge request, titled “Recover from GPU resets,” on Aug. 17 and summed up the project in a GSoC wrap-up post on Friday. A GPU reset invalidates the EGL context and wipes all GPU memory, and until now Mutter had no way to come back from that. With his changes, “Mutter recovers successfully and is back to normal operation instantly. Everything is restored, from the background to windows and cursors,” he wrote. His demo triggers a reset every second while the session stays responsive.

What changed since July

When Phoronix first covered the work in early July, Mutter could survive a reset, but the display stayed blank until something forced a new framebuffer, and the desktop background came back with garbled textures. Both problems are now fixed. The display returns on its own with a pause Ogundipe calls “virtually unnoticeable,” though monitors on the reset GPU may briefly go dark.

Recovery now covers much more of the desktop. Wayland surfaces come back showing their last rendered frame, Xcursor and Wayland client cursors restore, blur and other offscreen effects rebuild their pipelines, and PipeWire screencast and remote-desktop streams stop and restart cleanly.

Under the hood, Ogundipe replaced a fragile approach that relied on GLib signal ordering with a dedicated ClutterGraphicsRecoveryContext, which emits recovery signals in a fixed, documented sequence so each part of Cogl, Clutter and Meta knows when to tear down and rebuild its GPU state. Only the context-recreation step can fail, and if it does, recovery stops and reports the failure. Because the Cogl context can now be recreated, objects that used to hold bare pointers to it had to take real references to avoid use-after-free crashes.

What’s left

GNOME Shell’s UI and background-image recovery aren’t complete yet. Background image loading recently moved out of Mutter, so reloading the image after a reset now falls to downstream consumers like Shell. The merge request still needs upstream review, and users will only see the feature once it lands in a Mutter release and their distribution ships it.

Subscribe for Updates

DevNews Newsletter

The DevNews Email Newsletter is essential for software developers, web developers, programmers, and tech decision-makers. Perfect for professionals driving innovation and building the future of tech.

By signing up for our newsletter you agree to receive content related to ientry.com / webpronews.com and our affiliate partners. For additional information refer to our terms of service.

Notice an error?

Help us improve our content by reporting any issues you find.

Get the WebProNews newsletter delivered to your inbox

Get the free daily newsletter read by decision makers

Subscribe
Advertise with Us

Ready to get started?

Get our media kit

Advertise with Us