valo_dl/lib.rs
1//! The recording layer: `DisplayListBuilder` records draw commands into an immutable,
2//! retained [`DisplayList`], computing the **record-time oracle** as it goes — per-op
3//! device bounds, list bounds, depth-slot counts. The renderer replays lists without
4//! re-deriving any of it — the recorder knows everything, so it says so at record
5//! time rather than making the renderer rediscover it.
6//!
7//! `DisplayList` is a first-class retained object:
8//! immutable, `Arc`-shared, **nestable** via [`DisplayListBuilder::draw_display_list`],
9//! with a stable [`DisplayList::id`] — hosts keep one list per layer and recompose a
10//! cheap top-level list each frame; the id + bounds invariants are the future hooks for
11//! raster caching and damage rects (deliberately not built yet).
12//!
13//! GPU-free and `Send + Sync`: record on any thread, no `Context` required.
14
15mod builder;
16mod color_filter;
17mod list;
18mod paint;
19mod resources;
20mod shader;
21
22pub use builder::{Backdrop, DisplayListBuilder};
23pub use list::{BackdropGroup, ClipOp, DisplayList, GlyphPos, MaskKind, Op};
24pub use paint::{BlendMode, BlurStyle, ColorFilter, ImageFilter, MaskBlur, Paint, PaintStyle};
25pub use resources::{Filter, Image, ImageInner, MipmapMode, Sampling, TileMode};
26pub use shader::{FocalCircle, GradientStop, Shader, SpreadMode, MAX_GRADIENT_STOPS};