Skip to main content

SourceGroupCache

Struct SourceGroupCache 

Source
pub struct SourceGroupCache<G = BindGroup> { /* private fields */ }
Expand description

Bind groups that name a pooled or retained page, kept across frames.

A page-round resources group, a composite or backdrop segment’s group and a filter pass’s source group each name one texture view; rebuilding them for the same view every frame is pure cost. Entries are keyed by what they sample (SourceGroupKey) and swept every frame: Self::sweep drops every entry the frame did not use, so a group never keeps a texture alive past the frame after the last one that drew with it — well inside the page pool’s own keep-alive window, which has no eviction hook to invalidate against. The owner clears the cache outright when an input every entry shares (the coverage view) is recreated.

Generic over the group type so the keying and sweep rules test without a device.

Implementations§

Source§

impl<G: Clone> SourceGroupCache<G>

Source

pub fn get_or_build( &mut self, key: SourceGroupKey, build: impl FnOnce() -> G, ) -> G

The group under key, built by build on a miss. Marks it used.

Source

pub fn sweep(&mut self)

Ends a frame: drops every entry the frame did not use and marks the survivors unused for the next one.

Source

pub fn clear(&mut self)

Drops every entry.

Source

pub fn created(&self) -> u64

How many groups this cache has built, over its life.

Source

pub fn len(&self) -> usize

How many entries it holds right now.

Source

pub fn is_empty(&self) -> bool

Whether it holds none.

Trait Implementations§

Source§

impl<G: Debug> Debug for SourceGroupCache<G>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<G> Default for SourceGroupCache<G>

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T, S> SimdFrom<T, S> for T
where S: Simd,

Source§

fn simd_from(_simd: S, value: T) -> T

Source§

impl<F, T, S> SimdInto<T, S> for F
where T: SimdFrom<F, S>, S: Simd,

Source§

fn simd_into(self, simd: S) -> T

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WasmNotSend for T
where T: Send,

Source§

impl<T> WasmNotSendSync for T

Source§

impl<T> WasmNotSync for T
where T: Sync,