Record that exports of oversized linear DNGs now tile

FR-DSP-2 and NFR-RES-2 said tiling was unbuilt; the export half of it
now exists for a linear DNG past one texture. The interactive path and
spike S6 are unchanged.
This commit is contained in:
2026-09-27 17:37:06 -04:00
parent 885864b6a0
commit 87b2599740
2 changed files with 18 additions and 0 deletions
+14
View File
@@ -748,6 +748,15 @@ tiles are reused.
> number from the device the clause is about rather than from the one it is not. If S6 finds the
> fused pass inside budget there too, FR-DSP-2 becomes a scheduling concern for export and
> thumbnailing as frame-budget.md proposes; if not, S6 names the stage to tile.
>
> **2026-09-27: the export half is built, for sources larger than one texture.** A linear DNG
> past 8192 pixels (a stitched panorama, 22927×8966 in the case that prompted it) opens on a
> reduced copy, and a render finer than the copy samples a window of the full resolution
> through the fused shader's source-window uniforms. The export is drawn in 4096-pixel tiles
> grown by the detail chain's reach (`dr_pipeline::tiles`, `ComposedDetail::reach`) and matches
> the untiled render to within one code value (`core/dr-gpu/tests/source_window.rs`). The
> interactive path is still one dispatch over the viewport: a zoomed canvas cuts one window
> and keeps it while the view stays inside, which is not the tile cache this clause describes.
**FR-DSP-3 — Interactive latency.** Moving a slider updates the visible region within one frame
budget at proxy resolution. When a full-resolution result is needed it is computed
@@ -2152,6 +2161,11 @@ tiling. GPU memory headroom is configurable. Where an allocation fails, work is
memory or refused with a typed error (`GpuError::TooLarge`) — never rendered by a CPU pipeline,
which does not exist (NFR-R8).
> **2026-09-27:** a linear DNG larger than one texture is no longer refused. It is developed from
> a reduced copy and full-resolution windows, and exported in tiles (FR-DSP-2's note). A CFA file
> too large for one texture, or whose photosites overrun the device's storage-buffer limits on
> upload, is still refused, and there is still no headroom budget.
**NFR-RES-3 — Mobile power.** On Android the app shall not render continuously when idle. Battery
and thermal behaviour are first-class concerns; background sync respects metered-connection and
battery-saver settings.