ITADN

Frame pacing / vsync alignment on Mac

#1237ClosedSethRosenthal100 创建于 2026-04-24
## Summary `displaySyncEnabled=NO` was set (`a8fcafe`) to remove the 60fps cap for high-framerate playback. The side effect is that on standard-cadence material (24/25/30fps), Metal presents land whenever the GPU finishes rather than on the correct vsync boundary, causing judder even without visible tearing. ## Current band-aid - `RVMetalView.mm`: `displaySyncEnabled=NO` (permanent) - `presentsWithTransaction` toggled ON only during FramePreview hover as a narrow workaround for overlay shear ## Proper fix A frame-pacing layer that presents each frame at its scheduled wall-clock time aligned to the display vsync. Building blocks: `CAMetalLayer` + `presentsWithTransaction` + timed present path or `CVDisplayLink`. The FramePreview `presentsWithTransaction` pattern is a preview of this applied narrowly. ## Symptoms - Mild judder on 24/25/30fps content on Apple Silicon - FramePreview requires its own conditional vsync opt-in to avoid shear during hover scrub ## References - `src/lib/app/RvCommon/RVMetalView.mm` - `src/lib/ip/IPCore/Session.cpp` (playback scheduling) - TECH_DEBT.md
关闭于 2026-04-24 1 条评论