Skip to content

icd_shim, daemon: drop the shim's game-window report; clear the splash on the note - #12

Merged
utkarshdalal merged 2 commits into
masterfrom
drop-shim-game-window-report
Oct 23, 2026
Merged

utkarshdalal merged 2 commits into
masterfrom
drop-shim-game-window-report

Conversation

@utkarshdalal

@utkarshdalal utkarshdalal commented Oct 23, 2026 •

Copy link
Copy Markdown
Contributor

With GameNative/gamescope#6 the compositor sends the game-window note itself on the first top-level X map, the same rule the X11 display server uses, so the shim's own reporting is dead weight: the present-path check every 120 presents, the X tree walk with the game-child predicate, the give-up after 240 walks, and the note sender in scanout.rs. All of it goes, along with the x11.rs helpers nothing else used. The GNW1 wire format in gndrm-uapi is unchanged.

The daemon no longer waits for the next published frame after the note: the first transition of the latch clears the splash directly from the scan-out thread, through the same permanent-attach upcall the commit worker uses for onFramePublished. The note now arrives at explorer's first map, before any game frame, and the app paints a black desktop for game sessions, so an immediate clear shows black either way. The per-presenter splash_cleared latch and its log line are removed with it. The daemon library ships in the app's jniLibs; the shim ships in the gamescope payload (20261023.4, built, not uploaded yet).

Verified on a Poco F6 with the app carrying this daemon and the payload carrying this shim: | Game (gamescope) | xwm: first top-level map | Splash hidden | Gap | First game frame |
|---|---|---|---|---|
| Balatro | +20.62 s | +20.64 s | black | +28 s |
| Blazing Chrome | +12.69 s | +12.72 s | black | +26 s |
| L.A. Noire | +21.71 s | +21.72 s | black | +52 s |

The hide now follows the first note within 20 ms; on the previous daemon it waited for the next published frame and in two runs for the once-a-second resend (1.9 to 3.2 s later). No gn-vkshim: x11 game-window predicate line appears any more, no blue frame, no taskbar, every game renders at its usual fps.

gamescope now sends the GNW1 note itself on the first top-level X map,
so the shim no longer walks the X tree every 120 presents to find the
game's window. This removes the walk, its cadence and give-up limits,
the shim's note sender, and the x11 predicate that only it used.
The note now comes from gamescope on the first top-level X map, the
same rule the X11 path uses, and the game-session desktop is black.
Waiting for the next published frame no longer hides anything, so the
scan-out reader clears the splash on the note's first arrival in the
session and the presenter's latch goes away.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant