Struct webrender::picture::SpatialNodeComparer
source · struct SpatialNodeComparer {
ref_spatial_node_index: SpatialNodeIndex,
spatial_nodes: FastHashMap<SpatialNodeKey, TransformKey>,
compare_cache: FastHashMap<(SpatialNodeKey, SpatialNodeKey), bool>,
referenced_frames: HashSet<FrameId, BuildHasherDefault<FxHasher>>,
}
Expand description
A helper for comparing spatial nodes between frames. The comparisons are done by-value, so that if the shape of the spatial node tree changes, invalidations aren’t done simply due to the spatial node index changing between display lists.
Fields§
§ref_spatial_node_index: SpatialNodeIndex
The root spatial node index of the tile cache
spatial_nodes: FastHashMap<SpatialNodeKey, TransformKey>
Maintains a map of currently active transform keys
compare_cache: FastHashMap<(SpatialNodeKey, SpatialNodeKey), bool>
A cache of recent comparisons between prev and current spatial nodes
referenced_frames: HashSet<FrameId, BuildHasherDefault<FxHasher>>
A set of frames that we need to retain spatial node entries for
Implementations§
source§impl SpatialNodeComparer
impl SpatialNodeComparer
sourcefn next_frame(&mut self, ref_spatial_node_index: SpatialNodeIndex)
fn next_frame(&mut self, ref_spatial_node_index: SpatialNodeIndex)
Advance to the next frame
sourcefn register_used_transform(
&mut self,
spatial_node_index: SpatialNodeIndex,
frame_id: FrameId,
spatial_tree: &SpatialTree
)
fn register_used_transform( &mut self, spatial_node_index: SpatialNodeIndex, frame_id: FrameId, spatial_tree: &SpatialTree )
Register a transform that is used, and build the transform key for it if new.
sourcefn are_transforms_equivalent(
&mut self,
prev_spatial_node_key: &SpatialNodeKey,
curr_spatial_node_key: &SpatialNodeKey
) -> bool
fn are_transforms_equivalent( &mut self, prev_spatial_node_key: &SpatialNodeKey, curr_spatial_node_key: &SpatialNodeKey ) -> bool
Return true if the transforms for two given spatial nodes are considered equivalent
sourcefn retain_for_frame(&mut self, frame_id: FrameId)
fn retain_for_frame(&mut self, frame_id: FrameId)
Ensure that the comparer won’t GC any nodes for a given frame id
Auto Trait Implementations§
impl RefUnwindSafe for SpatialNodeComparer
impl Send for SpatialNodeComparer
impl Sync for SpatialNodeComparer
impl Unpin for SpatialNodeComparer
impl UnwindSafe for SpatialNodeComparer
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
Mutably borrows from an owned value. Read more
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>where
F: FnOnce(&Self) -> bool,
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>where F: FnOnce(&Self) -> bool,
Converts
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more