|
|
Donner SVG 0.8.0-pre
SVG editor and embeddable C++20 engine.
|
Frame-transient GPU buffer pool for GeoEncoder arenas. More...
#include <cstdint>#include <cstring>#include <utility>#include <vector>#include "donner/gpu/Descriptors.h"#include "donner/gpu/Handles.h"Classes | |
| class | donner::geode::GeodeBufferPool |
| Size-and-usage-keyed free list of GPU buffers. More... | |
Namespaces | |
| namespace | donner |
| Top-level Donner namespace, which is split into different sub-namespaces such as donner::svg and donner::css. | |
Frame-transient GPU buffer pool for GeoEncoder arenas.
GeoEncoder instances are recreated every frame (and per layer / filter / mask push), so without pooling every frame re-creates its bump-arena buffers from scratch: 9-20 createBuffer driver allocations per steady-state frame, plus the matching releases. This pool lets a frame's encoders reuse the buffers grown by earlier frames, driving steady-state bufferCreates toward zero.
Safety: buffers are released into the pool by ~GeoEncoder, which by the renderer's existing lifetime discipline only runs after the commands referencing those buffers have been submitted (shared-mode encoders are parked in frameFinishedEncoders until the frame's single submit; own-encoder encoders submit in finish()). Re-acquiring a pooled buffer on a later frame is safe: a queued buffer write is ordered after previously submitted work.