Black screen with fullscreen applications after suspend with VRR enabled on Wayland

I am reporting a reproducible issue on GNOME Wayland where all fullscreen applications (video players, games, vkcube) display a black screen after the system resumes from a suspend cycle. It only happens when VRR is enabled. If VRR is disabled, the issue does not occur. If I use a GNOME extension to disable unredirection (forcing the compositor to stay active), the screen does not blank. I was not able to reproduce the issue on Windows.

When the blanking occurs, the monitor does not report “No Signal.” It stays active but shows pure black, suggesting the display is successfully outputting some kind of signal. The audio carried by DisplayPort also goes out but the video keeps playing and can be heard via other outputs.

Aside from disabling VRR and unredirection, forcing a full modeset (e.g., changing resolution or refresh rate and then reverting) fixes the issue until the next suspend. This is the only workaround I found and it’s also mentioned in this post from last year describing the same issue.

I have compared /sys/kernel/debug/dri/2/state dumps between working and broken states using the Gnome video player (Showtime) as the fullscreen application. I have attached them in addition to the standard nvidia-bug-report, hoping they might help. The dumps are from six distinct states:

  • Pre-suspend, Gnome is compositing: desktop is at 00106e20 and is visible.
  • Pre-suspend, Gnome is unredirecting: video player is fullscreen at 00104e20 and is visible.
  • Post-suspend, Gnome is compositing: desktop is now at 00104e20 and is visible.
  • Post-suspend, Gnome is unredirecting: video player is fullscreen at 00106e20 and is not visible, the screen is blank.
  • Post-workaround, Gnome is compositing: desktop is at 00105c20 and is visible.
  • Post-workaround, Gnome is unredirecting: video player is fullscreen at 00107c60 and is visible.

I did multiple captures and noticed no pattern. After suspension, the video player is sometimes assigned a new address, sometimes the address previously used by the desktop. Regardless, the result is a black screen when unredirection occurs, despite reporting the plane as active=1.

System:

  • GPU: RTX 3090
  • Driver: 590.48.01
  • GSP Firmware: Enabled
  • Distribution: ArchLinux
  • Desktop: GNOME 49 Wayland
  • Monitor: AMZFast AMZG27F6Q connected via DisplayPort
  • Resolution: 2560x1440 at 200Hz

dri-dumps.tar.gz (1.3 KB)

nvidia-bug-report.log.gz (2.0 MB)