Record dehaze's two passes in frame-budget.md
The figures are bee5c58's, quoted as that commit measured them: five passes to two, 22.9 ms to 9.1 ms at 2560 x 1600 fit and 54.1 ms to 28.1 ms at 4K, the output bit-identical. Under its own heading and status line, like the 2026-09-25 section, since this file was not re-run for them.
This commit is contained in:
@@ -474,3 +474,41 @@ sharpening at a scale too coarse to draw its radius emits an empty pass,
|
|||||||
which cost a full read and write when another neighbourhood operation
|
which cost a full read and write when another neighbourhood operation
|
||||||
followed it: sharpen with clarity at 2560 × 1600 fit went from 18.66 ms to
|
followed it: sharpen with clarity at 2560 × 1600 fit went from 18.66 ms to
|
||||||
14.16 ms, and at 3840 × 2160 from 37.93 ms to 27.88 ms.
|
14.16 ms, and at 3840 × 2160 from 37.93 ms to 27.88 ms.
|
||||||
|
|
||||||
|
## Dehaze in two passes — 2026-09-26
|
||||||
|
|
||||||
|
**Status:** Measured in the commit named, not re-run for this file.
|
||||||
|
|
||||||
|
**Dehaze erodes each axis in one pass and recovers in the second**
|
||||||
|
(`bee5c58`, #74). It was five passes — a run and a span erosion along x,
|
||||||
|
the same along y, and the recovery — and cost 22.9 ms of a 2560 × 1600
|
||||||
|
frame on the laptop RTX 3050, 54.1 ms at 3840 × 2160, with the memory
|
||||||
|
clock held at 810 MHz by the power cap. At those clocks a detail pass costs
|
||||||
|
what it reads and writes rather than what it taps: a pass with an empty
|
||||||
|
body, one render-sized `rgba16float` read and write, measured 4.0 ms, and
|
||||||
|
each dehaze pass 4.4–4.6 ms, so the taps were about 2 ms of the 22 and the
|
||||||
|
four hand-offs between passes were the rest. Each axis now takes the
|
||||||
|
minimum over its whole window directly, and the recovery rides in the y
|
||||||
|
pass, which already holds the veil and the pixel's own colour: 36 texture
|
||||||
|
reads a pixel in place of 12, nearly all cache hits, and two passes in
|
||||||
|
place of five.
|
||||||
|
|
||||||
|
The same synthetic 60 MP source, only a detail parameter moving so the
|
||||||
|
fused pass is reused, 30 frames a scene after six of warm-up, five runs of
|
||||||
|
each binary alternated, median of the per-run p50:
|
||||||
|
|
||||||
|
| scene | before | after |
|
||||||
|
|---|---:|---:|
|
||||||
|
| dehaze, 2560 × 1600 fit | 22.88 ms | 9.06 ms |
|
||||||
|
| dehaze, 2560 × 1600 1:1 | 23.41 ms | 9.52 ms |
|
||||||
|
| dehaze, 3840 × 2160 fit | 54.09 ms | 28.12 ms |
|
||||||
|
| all five detail operations, 2560 × 1600 fit | 53.11 ms | 39.97 ms |
|
||||||
|
| all five detail operations, 2560 × 1600 1:1 | 67.48 ms | 56.42 ms |
|
||||||
|
| every operation with film, 2560 × 1600 fit | 57.59 ms | 44.19 ms |
|
||||||
|
| every operation with film, 2560 × 1600 1:1 | 71.83 ms | 57.93 ms |
|
||||||
|
|
||||||
|
The five detail operations are noise reduction, sharpening, clarity,
|
||||||
|
texture and dehaze; the scenes without dehaze moved within ±2%. The
|
||||||
|
picture is the same bits: a minimum is exact in any order, the window is
|
||||||
|
the one the split passes covered, and the rgba8 output hashed identically
|
||||||
|
before and after in all 64 scene, view and size combinations measured.
|
||||||
|
|||||||
Reference in New Issue
Block a user