Open and export a linear DNG too large for one texture

A 22927×8966 Lightroom panorama opened as its embedded preview with
develop withheld, because no texture could hold it. DevelopSession now
opens a linear DNG past PROXY_EDGE (8192) on a box-reduced copy, and
keeps the full resolution on the CPU. The canvas at fit, the thumbnail,
the histograms and the masks work from the copy; a render finer than
it — the canvas zoomed in, a tile of the export — samples a window cut
from the full resolution, kept while the view stays inside it. The
export renders in halo-grown tiles of 4096 and assembles them.

On the panorama: decode 1.6 s, open 210 ms, canvas 37 ms, a zoomed
window 130 ms, the full-size export 5.9 s.
This commit is contained in:
2026-09-27 17:37:06 -04:00
parent 0007fa459f
commit 885864b6a0
4 changed files with 426 additions and 40 deletions
+1 -1
View File
@@ -366,7 +366,7 @@ fn open_pixels(
decoder
.decode(bytes)
.map_err(|e| e.to_string())
.and_then(|raw| DevelopSession::open(ctx, &raw, orientation))
.and_then(|raw| DevelopSession::open_owned(ctx, raw, orientation))
}
/// Collect displayable images from file or directory arguments.