Graphical Glitches in Fullscreen Games with Different Resolutions
Affected Version
OS and Version: Fedora 39
Mesa Version: 23.3.1
Session Type: Issue appears in both XOrg and Wayland sessions
GPU: AMD Radeon™ RX 6700 XT
Bug Summary
Mesa 23.2.1: Graphical glitches in fullscreen Proton/Wine games when the game's resolution differs from the screen's native resolution. The issue is temporarily resolved when showing the workspace or taking a screenshot and is permanently resolved when using the GNOME extension "Disable unredirect fullscreen windows." This issue is consistent across different screens and primarily affects older games that don't support modern display resolutions.
Mesa 23.3.1: Since the update to Mesa 23.3.1 the issue seems to appear in any resolution and completly breaks Hardware Acceleration in Chrome, so it's only got worse.
Steps to Reproduce
Run any game via Proton on GNOME with a resolution different from the native screen resolution. Observe graphical glitches, specifically black squares at the bottom of the screen. Engage GNOME's "Show Workspace" feature or take a screenshot to temporarily fix the issue. Enable the "Disable unredirect fullscreen windows" GNOME extension, which permanently resolves the issue for the session.
What Happened
There appears to be an issue with how Mesa handles the rendering of fullscreen windows in Proton/Wine games with a resolution different from the screen's native resolution. These glitches, manifesting as black squares, are particularly noticeable in older games. The issue is mitigated when fullscreen windows are composited, suggesting a potential problem in the interaction between Mesa's rendering and the window manager's handling of fullscreen windows.
What Did You Expect to Happen
The expectation was for Mesa to facilitate the rendering of fullscreen applications run through Proton/Wine without graphical glitches, irrespective of the resolution difference between the game and the screen.
Relevant Logs, Screenshots, Screencasts etc.
I attempted to record the issue using GNOME's native recording method; however, the recording did not capture the bug, although it was visible on the screen. Therefore, I have recorded it with my smartphone. Please find the attached video for reference.