| With the display/decode stack clean, the remaining jank is app-shaped – GJS GC in Maps, main-thread layout in WebKit 2.48, init CPU in browser launches |
finding |
device:google-taimen |
proven |
| The panel corruption and degraded phosh were one GPU reset’s wreckage – not display tearing, and not the rd_ptr patch |
finding |
device:google-taimen |
proven |
| There may be no 30 fps lock at all – the panel runs at 60 and ph-framprobe reports ~31 whether the screen is on or OFF |
finding |
device:google-taimen |
proven |
| The whole session is back to 30 fps on 7.2 – the commit pipelining IS present, and the missing CTL_START patch is NOT why (msm8998 has no such interrupt) |
finding |
device:google-taimen |
proven |
| The blank/unblank corruption is BELOW the compositor – grim captures a clean frame while the glass shows garbage |
finding |
device:google-taimen |
proven |
| The waylandsink 5 fps cap was two upstream policies colliding – wlroots hides LINEAR from v3 clients, GStreamer refuses INVALID |
finding |
device:google-taimen |
proven |
| waylandsink delivers 5 fps where glimagesink and gtk4paintablesink do 60 – and WebKit’s compositor is the browser’s ceiling, not venus |
finding |
device:google-taimen |
proven |
| wlroots does DRM output layers only through libliftoff |
finding |
generic |
proven |
| Playbook: display |
technique |
generic |
proven |
| With the phosh app grid open, a launched app goes straight to recents – and every measurement of it is void |
trap |
generic |
proven |
| An injected touch does not wake a blanked screen, and every gesture arm then measures a still image |
trap |
generic |
proven |
| On, unlocked and showing your app are three different things – an injected gesture drives whatever is actually on top, and every frame statistic then describes that |
trap |
generic |
proven |
| WAYLAND_DEBUG=1 grows a multi-hundred-MB tmpfs log inside the process you are measuring |
trap |
generic |
proven |