mirror of
https://github.com/storytold/photocraft.git
synced 2026-11-07 10:54:10 +00:00
perf_scenarios rows that time a command and then the canvas refresh now also record each part (cmd_samples_ms, refresh_samples_ms; samples_ms stays their sum, so budgets and the baseline are unaffected), the refresh kinds (gpu-rect, gpu-full, rect/full on the CPU compositor, none) and the CpuReason kind of any fallback. The console line ends with the medians (Summary::of's p50, as p50_ms uses). Bench::refresh follows the app's damage_since: it tracks the (document, revision) the canvas shows and redraws nothing at the same revision, the last edit's rect one revision on, else everything; drag_frame invalidates it. A timed refresh that also drew untimed setup edits, or redrew everything because the canvas showed nothing or another document, is reported on stderr. Rows that timed setup: - P8-P11 (duplicate/paste a 12 MP layer): the fresh layer and the copied clipboard are refreshed before the timer; the "first" rows delete what each sample added, so the stack no longer grows by two 12 MP layers per sample; the repeat rows get their own source and clipboard, warm up first, and are set up only when --only/--group selects them - Spot Healing 10 MP refreshes before its timer, so sample 1 no longer redraws the new document and the Content-Aware Fill row's edits - Open PSD drops the previous sample's session before the timer and frees its GPU textures and compositor pages (GpuCanvas::retain, as closing a document does); gpu_bytes 293 -> 112 MB Ported from perf/fix-measurement, which is too far behind main to merge; its xtask baseline merge, regressions_fail setting, 40-sample rows and nightly workflow change are left out. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>