mirror of
https://github.com/DeeJanuz/frametop.git
synced 2026-10-06 03:00:06 +02:00
The cutout composite drew each screen's whole client buffer into a side-by-side buffer on every tick a hand was in front of it, then waited for the GPU with glFinish (1-6 ms, the likely cause of the VR frame drops on 2026-10-01). Now: - A drawn buffer gets a fence and is shown from a later tick once the fence has passed, so ft-screens never waits for the GPU (except for a panel's first buffer after a pause, so a stale one never shows). The prediction lead goes from 25 to 36 ms for that tick. - Nothing is drawn when the client frame and the cutouts haven't changed, and SteamVR isn't handed the same buffer again. - When only the cutouts moved, a buffer that holds the same client frame is drawn again only around the old and new cutouts (scissored). - "cutouts state" reports draws, partial draws, unchanged ticks, busy ticks, waits and CPU time per second since the last state; ft-handtest prints the same counts. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>