The export pump built a fresh `vello::Renderer` (full wgpu pipeline init, ~tens of ms) AND an empty `ImageCache` on every egui repaint — i.e. per output frame. That was the dominant per-frame cost (and the code comment already flagged it). Now the renderer + image cache are built once on the first export pump, reused for every frame, and dropped when the export finishes. Also fixes a latent bug: the throwaway export ImageCache had no container path, so with Phase 4 Tier 1 (lazy image bytes) images stored only in the container wouldn't render in exports. The persistent cache now gets the container path. Audit found the original "per-frame seek" theory was wrong — export decodes the source sequentially; readback is already async/triple-buffered. Remaining wins: cache swscale contexts (rebuilt per frame), GPU YUV conversion, decouple from the repaint cadence. |
||
|---|---|---|
| .. | ||
| beamdsp | ||
| egui_node_graph2 | ||
| lightningbeam-core | ||
| lightningbeam-editor | ||
| .gitignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| build-static.sh | ||
| build-windows.bat | ||