valo-dl 0.12.0

Display-list recording for valo, with the record-time oracle the renderer replays
Documentation
//! The recording layer: `DisplayListBuilder` records draw commands into an immutable,
//! retained [`DisplayList`], computing the **record-time oracle** as it goes — per-op
//! device bounds, list bounds, depth-slot counts. The renderer replays lists without
//! re-deriving any of it — the recorder knows everything, so it says so at record
//! time rather than making the renderer rediscover it.
//!
//! `DisplayList` is a first-class retained object:
//! immutable, `Arc`-shared, **nestable** via [`DisplayListBuilder::draw_display_list`],
//! with a stable [`DisplayList::id`] — hosts keep one list per layer and recompose a
//! cheap top-level list each frame; the id + bounds invariants are the future hooks for
//! raster caching and damage rects (deliberately not built yet).
//!
//! GPU-free and `Send + Sync`: record on any thread, no `Context` required.

mod bounds;
mod builder;
mod color_filter;
mod effect;
mod list;
mod paint;
mod resources;
mod shader;

pub use bounds::Bounds;
pub use builder::DisplayListBuilder;
pub use effect::{
    EffectError, EffectImage, EffectKind, FilterInputs, RuntimeEffect, RuntimeShader, UniformField,
    UniformLayout, UniformType, IMAGE_GROUP, MAX_UNIFORM_BYTES, SOURCE_GROUP, UNIFORM_GROUP,
};
pub use list::{Backdrop, BackdropGroup, ClipOp, DisplayList, GlyphPos, MaskKind, Op};
pub use paint::{BlendMode, BlurStyle, ColorFilter, ImageFilter, MaskBlur, Paint, PaintStyle};
pub use resources::{Filter, Image, ImageInner, MipmapMode, Sampling, TileMode};
pub use shader::{FocalCircle, GradientStop, Shader, SpreadMode, MAX_GRADIENT_STOPS};