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 Freeze for SpatialNodeComparer
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>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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