mirror of
https://github.com/storytold/photocraft.git
synced 2026-10-17 04:39:54 +02:00
* PHOTOCRAFT_PRESENT_MODE / PHOTOCRAFT_FRAME_LATENCY launch overrides for latency A/B tests (#1343) Linux traces put the remaining stroke latency in presentation queueing (the app's frame fits in one refresh; the rest waits on the swap chain), and an NVIDIA user cured it by forcing vsync off. Testers can now compare without rebuilding: PHOTOCRAFT_PRESENT_MODE (fifo, mailbox, immediate, autovsync, autonovsync) and PHOTOCRAFT_FRAME_LATENCY (1-3), applied over the platform default. Bad values are logged and ignored. The active mode is logged at start, kept in GpuInfo.present and shown in every stroke trace line. RTX 5090, Vulkan, 120 Hz: default autovsync/latency 1 waits 6 ms per 8.3 ms frame; mailbox renders every 2.3 ms with 0.2 ms wait, so each vsync shows the newest frame. * docs: present mode and frame latency overrides * Present mode overrides never request a mode the driver may lack (Mailbox crashed on X11/NVIDIA) * Preferences › Performance › Low-Latency Drawing, on by default: no vsync wait while drawing (#1343) Testers' traces put the ~50 ms stroke lag in the swap chain's vsync wait. With vsync off it disappears (X11/NVIDIA; Windows/NVIDIA via the driver), and a shorter queue doesn't help. The surface now presents with AutoNoVsync by default: wgpu picks Immediate, else Mailbox, else Fifo by what the driver offers, so no unsupported mode is ever requested. Turning the preference off brings vsync back (smooth, but late). It applies at the next launch, like the other graphics settings. Where only Immediate exists the canvas may tear while it changes; frames render as fast as input arrives during a stroke and stop when idle. * Runtime and launch controls: ui.set strokeTrace, --stroke-trace, --present-mode, --frame-latency The retro's remaining gap: the stroke trace and the presentation overrides were env-only. The trace now switches at runtime over the control channel (ui.set {"strokeTrace": true|false|"stderr"|path}) and with --stroke-trace; --present-mode / --frame-latency sit beside their env vars and win over them. Bad values are reported and ignored; none fails a launch. * docs: strokeTrace beside the other ui.set fields * docs: regenerate the scorecard after rebasing onto main * Low-Latency Drawing: frames capped at 240 fps without vsync (after #4472); ui.set strokeTrace takes on/off only (a CSV path is launch-only); tearing documented as usual (Immediate); pref hidden on web; doc comment order * stroke_trace: from_value doc says ui.set passes only on or off * Low-Latency Drawing ships off (opt-in), per the owner's decision * docs: present mode default is vsync (Low-Latency Drawing ships off) |
||
|---|---|---|
| .. | ||
| brand | ||
| images | ||
| architecture.md | ||
| batch-naming.md | ||
| brush-parity.md | ||
| camera-raw-histogram.md | ||
| camera-raw-zoom.md | ||
| color-picker.md | ||
| context-menu-inventory.md | ||
| context-menu-parity.md | ||
| contributing.md | ||
| contributors.md | ||
| control-protocol.md | ||
| decisions.md | ||
| development.md | ||
| file-format-parity.md | ||
| five-algorithm-performance.json | ||
| five-algorithm-performance.md | ||
| font-resolution.md | ||
| gaps.md | ||
| gpu-composite-reuse.md | ||
| hardware-parity.md | ||
| iris-blur-performance.md | ||
| kra.md | ||
| localization-es.md | ||
| localization-it.md | ||
| localization-ko.md | ||
| localization-parity.md | ||
| localization-zh-hans.md | ||
| localization.md | ||
| mcp.md | ||
| nikon-nef-development.md | ||
| octagonal-mask-performance.md | ||
| ora.md | ||
| parity-checklist.md | ||
| pdn.md | ||
| pixelate-performance.json | ||
| pixelate-performance.md | ||
| plugins.md | ||
| proximity-match-performance.md | ||
| quick-selection-performance.md | ||
| radial-blur-performance.md | ||
| release-playbook.md | ||
| releasing.md | ||
| roadmap.md | ||
| scorecard.md | ||
| selection-distance-performance.md | ||
| shape-strokes.md | ||
| target-app-parity.md | ||
| tilt-shift-performance.md | ||
| ui-design.md | ||
| ui-dialogs.md | ||
| ui-parity.md | ||
| unsharp-mask-performance.md | ||