libliftoff version bump in Gamescope causes visual artifacting on Steam Deck OLED
Bear with me for a bit as this has been an adventure to get to the point of filing an issue specifically in libliftoff for this...
A couple days ago, I noticed that there was visual artifacting introduced (usually triggered by either the Mangohud/Steam overlay, the cursor, or by toggling the quick menus) between recent gamescope builds of mine on my Steam Deck OLED. I've taken a a couple short clips as an example of what this artifacting looks like on both my normal Fedora setup and also on SteamOS Main, which I reproed the artifacting on:
My steps for a 100% repro on SteamOS Main and Fedora were as follows:
- Launch into gamescope-session
- Press A or touch a game to load that game's Steam library entry
- Press B to leave that library entry and return to the Steam library screen
- Open the right quick menu and toggle through the various performance overlay options
You should start to see some artifacts on the screen while flipping overlays a few seconds into Step 4. Using --disable-layers
has no effect.
Since I have been testing gamescope pretty regularly and build versions after every new batch of commits, it was a very simple bisect. It led me to these two commits:
https://github.com/ValveSoftware/gamescope/commit/93a90d19a19ea414a165e2f3297c76d9dc9dc062 https://github.com/ValveSoftware/gamescope/commit/a9199c2097ffc9d7f96ccf1eb8a04004b1f643de
This seemed odd to me and didn't make much sense after reading up on what libliftoff does, but I decided to keep digging anyway. Next I approached this from a new angle: what happens if I start by reverting set timeout_ns to max
and drm: disable use of IN_FENCE_FD if it fails
in gamescope since they use some of the new libliftoff commits, and then try reverting libliftoff commits individually?
After reverting libliftoff commits one by one and retesting, one of these three commits (or all three perhaps, I can't really test them individually) seems to have introduced my visual artifacting issue within gamescope-session:
35c06e89, c857632c, and ec867357
This is where I've landed: currently, I am able to build Gamescope from the HEAD of master with this gamescope-libliftoff-revert.patch to revert set timeout_ns to max
and one tiny part of drm: disable use of IN_FENCE_FD if it fails
, which references one of the reverted libliftoff portions. If I apply this .patch, cd subprojects/libliftoff
and then git revert
those three aforementioned libliftoff commits, my gamescope-session is now entirely free of visual artifacting once again. Reverting the entire libliftoff version bump in gamescope also works. I've confirmed the same binary and layers from my Fedora build also fix SteamOS' issues.
I'm more than happy to provide logs (although nothing I saw looked particularly useful) or conduct further testing if that would be helpful. As far as I can tell, this is an issue that primarily affects the Steam Deck OLED and it has been easy for me to repro throughout several fresh installs.
Edit: I've confirmed this happens on my Steam Deck LCD as well following the exact same steps as outlined above.