mirror of
https://github.com/storytold/cadcraft.git
synced 2026-10-31 14:27:02 -06:00
* Linux: present without a vsync queue so the crosshair follows the mouse (#25) The canvas hides the OS pointer and draws its own crosshair, so every frame the swapchain holds back shows as cursor lag. Under vsync (FIFO) wgpu asks for one queued frame, but Vulkan clamps it to the driver's minimum swapchain size: three images on X11 (Linux Mint's Cinnamon session), i.e. two frames queued behind the one on screen. Windows DX12 honours one. The canvas also requested a repaint on every frame while hovered, which kept that queue full. - gpu::surface_config: AutoNoVsync (Immediate, then Mailbox, then FIFO; valid on every surface) on Linux/BSD, frame latency 1. CADCRAFT_VSYNC=1 restores vsync, CADCRAFT_VSYNC=0 selects low latency elsewhere. - gpu::FrameCap (240 fps) when presenting without vsync: nothing else paces frames on X11, and a 1000 Hz input stream rendered ~900 frames per second. - No continuous repaint while hovering the canvas; input repaints by itself. The status-bar message schedules its own repaint to clear on time. - Hover/selection highlight looks up primitives in a per-list sorted index instead of scanning the whole display list every frame (~2.5 ms per frame on a 270k-entity drawing). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Move frame-cap and status-repaint hunks away from other PRs' to avoid merge conflicts Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>