pub struct DisplayList {
pub quads: Vec<Quad>,
pub clips: Vec<Clip>,
pub fragments: Vec<FragmentDraw>,
pub fragment_sources: Vec<Arc<str>>,
pub textures: Vec<TextureDraw>,
pub texture_pixels: Vec<TexturePixels>,
pub dropped_textures: Vec<ImageId>,
pub dropped_fragments: Vec<FragmentId>,
pub viewport: Size,
pub scale: f32,
pub time: f32,
}Fields§
§quads: Vec<Quad>§clips: Vec<Clip>The clips the quads name, in physical pixels. One entry per distinct clip a frame reaches — a handful, even on a frame of ten thousand quads, because a clip is inherited and only a clipping node makes a new one. Empty only on a frame that drew nothing.
fragments: Vec<FragmentDraw>One entry per QuadKind::Fragment quad, indexed by its uv[0].
Empty on a frame that draws none.
fragment_sources: Vec<Arc<str>>The WGSL behind each entry of Self::fragments, at the same
index: what a backend compiles the first time it meets a handle.
It rides here rather than on FragmentDraw so that struct stays
Copy and digestible; an Arc clone per fragment quad is a
refcount bump, and a frame with no fragment has neither vector.
textures: Vec<TextureDraw>One entry per QuadKind::Texture quad, indexed by its uv[0].
Empty on a frame that draws none.
texture_pixels: Vec<TexturePixels>The pixels behind each entry of Self::textures, at the same
index: what a backend uploads the first time it meets a handle, and
again whenever rev has moved. Shared with the resource entry, so
this is a refcount per texture quad and no copy — the reason
fragment_sources rides here the same way.
dropped_textures: Vec<ImageId>Image handles removed since the last frame whose backing was a texture: what a backend drops from its cache. Cleared with the quads, so a host that renders one list a frame sees each once — and a removal is carried by one window’s list, whichever drew next after it, since the device the cache lives on is shared by every window of the session.
dropped_fragments: Vec<FragmentId>Fragment handles removed since the last frame: what a backend drops the pipelines it built for. Carried the same way.
viewport: SizePhysical pixels.
scale: f32§time: f32The frame clock in seconds — the same one transitions read, as the
driver last set it. A backend hands it to a fragment as
FragmentIn::time; nothing else reads it. Zero when the driver
never set a clock, which is what a headless frame looks like.
Implementations§
Source§impl DisplayList
impl DisplayList
pub fn clear(&mut self)
Sourcepub fn clip_of(&self, q: &Quad) -> Clip
pub fn clip_of(&self, q: &Quad) -> Clip
The clip a quad names. Out of range — which a well-formed frame never is — reads as clipping nothing, so a malformed list draws rather than panics.
Sourcepub fn intern_clip(&mut self, clip: Clip) -> u32
pub fn intern_clip(&mut self, clip: Clip) -> u32
Interns a clip and returns its index. See intern_clip.
Trait Implementations§
Source§impl Default for DisplayList
impl Default for DisplayList
Source§fn default() -> DisplayList
fn default() -> DisplayList
Auto Trait Implementations§
impl Freeze for DisplayList
impl RefUnwindSafe for DisplayList
impl Send for DisplayList
impl Sync for DisplayList
impl Unpin for DisplayList
impl UnsafeUnpin for DisplayList
impl UnwindSafe for DisplayList
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.