Three things kept Valve's mangoapp from drawing the overlay in a session:
- GLFW 3.4 takes XDG_SESSION_TYPE=wayland with WAYLAND_DISPLAY set as
Wayland-only, and mangoapp needs gamescope's X server; the wrapper sets
XDG_SESSION_TYPE=x11.
- On a Qualcomm display driver it opens a tracefs instance for the GPU memory
total and aborts when that fails, which it always does for an Android app.
The session preload now places the instance in an empty directory of its own
when the real one cannot be made.
- gamescope sends it each frame's timings through a System V message queue,
and Android kernels have no System V IPC. sysv.c now emulates the queue
operations gamescope and mangoapp use, beside its semaphores and shared
memory.
The QAM offers Performance Overlay levels but nothing drew them: the
runtime has no mangoapp. CI now fetches Valve's mangohud-20260902.1 and
the five libraries mangoapp needs that the runtime lacks, at the versions
it was built against (fmt 10.2.0, spdlog 1.13.0, glfw 3.4, libtraceevent
1.8.2, libtracefs 1.8.0 from Valve's mash-20240705.2 snapshot), each
pinned by sha256 in tools/mangoapp/packages.txt. They are staged under
usr/local/lib/mangoapp with a wrapper on PATH; the runtime image is not
touched.