Scrubbing onto a paged-out raster keyframe flashed blank for the 1-2 frames its full pixels took to page in. Now a low-res proxy is shown in that gap. - core: `MediaKind::RasterProxy` (id derived from the keyframe id via `raster_proxy_media_id`); `brush_engine::encode_raster_proxy_png` downscales a full RGBA buffer to a ≤192px-long-edge PNG. Save writes a proxy beside each resident frame's full PNG (paged-out frames keep their existing proxy row, like the full). Load eagerly decodes proxies (small) into `RasterKeyframe::proxy`. - editor: a separate `proxy_layer_cache` in the GPU brush (own recency LRU, budget 64 since each is ~1/100th a full frame) + `ensure_proxy_texture`/`get_proxy_texture`. The raster render, when the full texture isn't resident, blits the proxy mapped to the keyframe's FULL logical dims so it upscales via the sampler. F3 VRAM figure now includes proxy textures. When the full pixels land (async fault-in), the full path takes over automatically. Proxies only exist after a save+reload; freshly-painted unsaved frames stay resident so they need none. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| assets | ||
| examples | ||
| src | ||
| Cargo.toml | ||
| PLAN.md | ||
| TOOL_IMPLEMENTATION_PLAN.md | ||
| build.rs | ||