Merge branch 'master' into clarity-reduced-base

# Conflicts:
#	docs/traceability.md
This commit is contained in:
2026-08-29 13:27:04 +02:00
3 changed files with 282 additions and 36 deletions
+46
View File
@@ -266,6 +266,52 @@ base, computed at reduced resolution and correct at any moment the user stops.
---
## Which GPU, on a machine with more than one
**Measured 2026-08-29** on a laptop holding an Intel Iris Xe (RPL-P) and an AMD
RX 5700 XT, same binary, adapter forced with `VK_ICD_FILENAMES`.
The question was whether an integrated GPU is the better choice for this
application. The argument for it is good: a 24 MP frame is ~96 MB of RGBA, and
on a discrete card every upload and every export readback crosses PCIe, where
an iGPU shares memory with the CPU and crosses nothing. It also does not empty
a battery.
The compute says otherwise, and not marginally.
| 2560×1600, p99 | AMD RX 5700 XT | Intel Iris Xe |
|---|---|---|
| fused pass, `point` | 5.19 ms | 7.75 ms |
| fused pass, `all` | 11.70 ms | **66.42 ms** |
| M3 clarity, fit | 4.67 ms | **38.28 ms** |
| M3 all four, 1:1 | 6.44 ms | **57.67 ms** |
| 1920×1200, M3 clarity, fit | 2.35 ms | **19.99 ms** |
|---|---|---|
The fused colour pass is within a factor of 1.5 — it is one read and one write
per pixel, which an iGPU does perfectly well. The **neighbourhood stage is
5–8× slower**, and that is what decides it: clarity at 1920×1200 costs 20 ms on
the Iris Xe, so it leaves the budget on its own at the smallest size tested,
before anything else in the chain runs.
**So the default adapter preference stays `Performance`** (`dr_gpu::AdapterPreference`).
Two things this does *not* show, and neither is a reason to revisit the default
without measuring them:
- **It does not refute the transfer argument.** This harness renders from a
resident texture and never uploads or reads back, so the PCIe cost an iGPU
avoids does not appear in any column above. Import, export and the thumbnail
sweeps are transfer-heavy and compute-trivial, and may well go the other way
— but they are not what FR-DSP-3 bounds, and one device is opened at startup
and shared with the compositor, so there is currently no way to use a
different adapter for a different task.
- **It says nothing about power.** `Efficiency` remains offered
(`DARKROOM_GPU=integrated`) because a user on battery may rationally accept a
slower detail chain, and because someone whose discrete card has failed needs
a way to keep working.
## What is not measured here
Stated because §7 of [display-and-extension.md](display-and-extension.md) asks