Record where a linear DNG too large for one texture goes
ARCH §5.3 still described only a tile cache nobody built; it now says
what 0.19.0 tiles and what it does not: a linear DNG past PROXY_EDGE
opens on a reduced copy, a finer render samples a full-resolution
window, and the export is cut into halo-grown tiles. display-and-
extension.md's FR-DSP-2 row said absent, outstanding.md said the halo
had nothing to read it and that such a file fell to the embedded
preview.
rawler now builds from third_party, which ARCH's stack table and §3.2,
the root Cargo.toml's comment ("two upstream crates ... for Android")
and third_party/README.md's bump procedure did not know; the README
also names each vendored crate's licence. panorama.md and the manual
say a composite this wide develops and exports.
This commit is contained in:
+13
-8
@@ -181,7 +181,7 @@ place.
|
||||
|
||||
## 4. The render path — FR-DSP-2, FR-DSP-4, NFR-RES-2, NFR-ARCH-1
|
||||
|
||||
**FR-DSP-2 — Tiled computation. Unbuilt, and under challenge.** [architecture.md §6.2](architecture.md)
|
||||
**FR-DSP-2 — Tiled computation. Built for one case, and otherwise under challenge.** [architecture.md §6.2](architecture.md)
|
||||
calls for tiling "from day one" on the grounds that retrofitting it is a rewrite. It was not built,
|
||||
and the evidence has since moved. `core/dr-gpu/tests/frame_budget.rs` carries the argument in its
|
||||
own header: one fused dispatch over a viewport-sized target is comfortably inside the frame budget,
|
||||
@@ -191,9 +191,10 @@ path stops being supported, and this test is what says so."
|
||||
tiled convolution at clarity's radius reads nearly twice the taps that an untiled one does, so the
|
||||
stage that looks most like it wants a tile cache is the stage that would be hurt most by one.
|
||||
|
||||
What exists is the declaration and not the mechanism: `DetailPass::radius` is documented as the halo
|
||||
a tile would have to be grown by, with a test that pins it, and there is no scheduler to read it.
|
||||
That is deliberate plumbing, not an oversight.
|
||||
What existed until 0.19.0 was the declaration and not the mechanism: `DetailPass::radius`, the halo
|
||||
a tile would have to be grown by, with a test that pins it, and nothing to read it. The export of an
|
||||
oversized linear DNG (below) is now what reads it, through `ComposedDetail::reach`; there is still
|
||||
no scheduler and no tile cache.
|
||||
|
||||
**So the open question here is not "when is tiling built" but "is FR-DSP-2 still a requirement" — and on 2026-09-19 the answer was: as written, until S6 runs.** FR-DSP-2 now carries a status note saying exactly that, and R5's note no longer claims it was rewritten.
|
||||
Two measurements say it costs more than it saves on the interactive path. Neither says anything
|
||||
@@ -201,8 +202,10 @@ about the export path or about a device under memory pressure, which is where th
|
||||
actually lives — and that is spike S6, which has not run.
|
||||
|
||||
**2026-09-27:** the export path does now tile, for the one case that forced it — a linear DNG
|
||||
wider than any texture. See the note under FR-DSP-2 in [requirements.md](requirements.md). The
|
||||
interactive path is unchanged and S6 is still unrun.
|
||||
wider than any texture, a 22 927 × 8966 Lightroom panorama in the case that prompted it. See the
|
||||
note under FR-DSP-2 in [requirements.md](requirements.md) and ARCH §5.3. The interactive path
|
||||
renders such a file from a reduced copy and one full-resolution window rather than tiles, and S6
|
||||
is still unrun.
|
||||
|
||||
**FR-DSP-4 — Progressive refinement. Built in 0.15.0.** While a gesture moves the canvas renders
|
||||
a half-resolution draft, and the sharp frame lands once, 120 ms after the last movement: the
|
||||
@@ -216,8 +219,10 @@ interface could see, and a refinement that was not a jarring swap.
|
||||
|
||||
**NFR-RES-2 — Images larger than GPU memory.** Half answered. NFR-R8's "decide explicitly" was
|
||||
decided on 2026-09-19: there is no CPU render pipeline, the degraded mode is the viewer on
|
||||
embedded previews with develop withheld, and NFR-RES-2 no longer promises a fallback render. What
|
||||
remains unbuilt is the memory half: there is no headroom budget, no allocation-failure staging,
|
||||
embedded previews with develop withheld, and NFR-RES-2 no longer promises a fallback render. Since
|
||||
0.19.0 that mode no longer catches a linear DNG larger than one texture, which develops from a
|
||||
reduced copy and exports in tiles; a CFA file that large still falls to it. What remains unbuilt is
|
||||
the memory half: there is no headroom budget, no allocation-failure staging,
|
||||
and no spill. Spike S6 — a tiled pipeline on a
|
||||
mid-range Android device with an image larger than available GPU memory — is the one that would
|
||||
settle both this and FR-DSP-2, and there is no evidence it has run.
|
||||
|
||||
Reference in New Issue
Block a user