Repository navigation
android: A33 lifts the startup blind on the first commit newer than the override's binding (GL guests with a dormant Vulkan swapchain) - #32
Conversation
…he override's binding; README: the guest libGL beside glamor's Mesa
4d9064e to
e17f4a2
Compare
…Pipetto's dri-options hack
RP6 result (2026-11-04, payload 20261104.1 + this gamescope from CI run 41841088388 + mesa#58 libGL)Tomb Raider I-III Remastered under gamescope: renders, 60 fps (HUD FPS 60.0, CPU 32 %, GPU 20 %). Blank at map, lifted 16 ms later on the first commit newer than the binding (the game's first XShmPutImage frame). Before this change the same session logged Dave the Diver (DXVK) startup transition, same binary: Utkarsh's call: no further DXVK validation needed (the exit path and reaper blank are untouched). |
…ame) + guest libGL extra_libs-20261104 (32-bit colour on Xwayland) (#2344) * gamescope: payload 20261104.2 (A33 blind lifts on the game's first frame) and guest libGL extra_libs-20261104 (32-bit colour on Xwayland) Tomb Raider I-III Remastered (OpenGL) under gamescope: crashed 3 s after its window mapped, then (once past that) sat black with audio playing. - extra_libs-20261104.tzst: the guest libGL (Mesa xlib GLX on zink, the same file on X11 and gamescope) reported GLX_BUFFER_SIZE as the X visual's depth, 24 on Xwayland against 32 on the in-app X server; the game's wglChoosePixelFormatARB needs 32 and got no format. GameNative/mesa#58 counts the emulated alpha channel. Same archive otherwise; the manifest entry's file name changes because the app caches archives by name. - payload 20261104.2: gamescope A33's startup blind lifted only on a commit from the Vulkan override surface; a GL guest's frames arrive on the X window's own surface, and this game also binds an override it never presents on, so the blind never lifted. GameNative/gamescope#32: the blind lifts on the first commit newer than the override's binding. Only bin/gamescope differs from 20261104.1. RP6 verified: title screen at 60 fps under gamescope, blind on at map and off 16 ms later. * legacy: bundle the extra_libs-20261104 archive (the legacy flavor extracts graphics_driver/extra_libs.tzst from the APK, not the manifest) --------- Co-authored-by: Utkarsh Dalal <utkarsh.dalal@toptal.com>
Symptom
Tomb Raider I-III Remastered (OpenGL) under gamescope on the RP6: audio plays, the panel stays black for the whole session, HUD FPS 0.0, while the game draws (verified with
WINEDEBUG=+opengl: ~200 swaps/s) and Xwayland receives its frames over MIT-SHM. (Reached only once the guest libGL fix GameNative/mesa#58 is in place; before it the game crashed at window map.)The blind's one-shot log says it all:
session-blank: blank=1 reaper=0 window=present override_bound=1 saw_game_window=1right after the window maps, never followed byblank=0. Dave the Diver (DXVK) on the same device logsblank=1thenblank=0143 ms later; SteamWorld Dig 2 (GL, no Vulkan) never binds an override and is never blanked.Cause
A33 judges "is the game's content on screen" by the surface of the window's newest done commit: a commit from the window's own surface was taken to be wine's desktop. A GL guest hands its frames to Xwayland (the xlib libGL's XShmPutImage), so they arrive on the window's own surface, and this game also loads dxgi/d3d11, so the WSI shim binds an override surface for a swapchain that never presents. Judged by surface, every frame looks like the desktop.
Change
A33 is corrected in place (the A28 precedent), not re-issued as a new patch. What tells the desktop from content is time, not surface: the window's newest done commit id is stamped when the override is first seen bound, and the startup blind holds until a done commit newer than that arrives, from either surface. The exit case (override gone after having been bound) and the reaper blank are unchanged. The blind's log line now also states
bound_commitandlast_done_commit.Expected: DXVK guests keep the startup blank until their first presented frame (their desktop commit precedes the swapchain). GL guests with a dormant Vulkan swapchain unblank on their first XShmPutImage frame.
android/README.mdgains a section on the guest libGL beside glamor's Mesa: what it is, that it is the same file on both display servers, where it comes from and how it is built. That is where the stack is documented, so the note lives here and not on the Mesa branch.Testing