evidence · 1.7 KiB

max-render-time-fix.md

Committed at docs/evidence/card-shell/bottom-band-flicker/max-render-time-fix.md. This is what grounds the requirements that cite it.

Open raw source

Bottom-band flicker: fixed by max_render_time 8

Observed 2026-09-25 on the reserved board.

System: /nix/store/f102jiy0z120519793yk3bx90i6pd138-nixos-system-nixos-26.11.20260919.20b1ddd, booted persistently. It includes the VO vblank register-latch patch (6cec8a3e).

Symptom. During real-finger bottom-edge gestures (app switching and the card overview), a band about 50 px tall along the panel’s short bottom edge cycled frame to frame between correct, stale-dark and black. The rest of the panel stayed stable.

What didn’t cause it:

Fix. swaymsg output DSI-1 max_render_time 8 was applied at runtime. The operator then repeated the gestures and reported “it’s fixed now”. It is now in nix/shell.nix’s Sway output line.

Evidence: 30 fps webcam frames, 16 consecutive full-resolution frames cropped to the bottom end.

Interpretation, not proven. The VO’s end-of-scan fetch competes with the compositor’s rendering for DDR bandwidth. Deferring rendering to 8 ms before vblank moves that traffic away from the scan of the last lines. diag/vo-underrun-and-ddr-qos has the underflow-status and DMA-arbitration diagnostics if it recurs.

Limits. The “after” frames may not include the heaviest gesture moments. The acceptance comes from the operator’s real-glass report. The cost is up to 8 ms of added input-to-photon latency for a rendered frame.