Struct wgpu_core::track::UsageScope

source ·
pub(crate) struct UsageScope<A: HalApi> {
    pub buffers: BufferUsageScope<A>,
    pub textures: TextureUsageScope<A>,
}
Expand description

A usage scope tracker. Only needs to store stateful resources as stateless resources cannot possibly have a usage conflict.

Fields§

§buffers: BufferUsageScope<A>§textures: TextureUsageScope<A>

Implementations§

source§

impl<A: HalApi> UsageScope<A>

source

pub fn new( buffers: &Storage<Buffer<A>, BufferId>, textures: &Storage<Texture<A>, TextureId> ) -> Self

Create the render bundle scope and pull the maximum IDs from the hubs.

source

pub unsafe fn merge_bind_group( &mut self, textures: &Storage<Texture<A>, TextureId>, bind_group: &BindGroupStates<A> ) -> Result<(), UsageConflict>

Merge the inner contents of a bind group into the usage scope.

Only stateful things are merged in here, all other resources are owned indirectly by the bind group.

Safety

The maximum ID given by each bind group resource must be less than the length of the storage given at the call to new.

source

pub unsafe fn merge_render_bundle( &mut self, textures: &Storage<Texture<A>, TextureId>, render_bundle: &RenderBundleScope<A> ) -> Result<(), UsageConflict>

Merge the inner contents of a bind group into the usage scope.

Only stateful things are merged in here, all other resources are owned indirectly by a bind group or are merged directly into the command buffer tracker.

Safety

The maximum ID given by each bind group resource must be less than the length of the storage given at the call to new.

Trait Implementations§

source§

impl<A: Debug + HalApi> Debug for UsageScope<A>

source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<A> RefUnwindSafe for UsageScope<A>where A: RefUnwindSafe,

§

impl<A> Send for UsageScope<A>where A: Send,

§

impl<A> Sync for UsageScope<A>where A: Sync,

§

impl<A> Unpin for UsageScope<A>where A: Unpin,

§

impl<A> UnwindSafe for UsageScope<A>where A: UnwindSafe,

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere 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, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

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

§

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 Twhere T: Send,

source§

impl<T> WasmNotSync for Twhere T: Sync,