Struct wgpu_core::track::UsageScope

source ·
pub(crate) struct UsageScope<'a> {
    pub pool: &'a Mutex<Vec<(BufferUsageScope, TextureUsageScope)>>,
    pub buffers: BufferUsageScope,
    pub textures: TextureUsageScope,
}
Expand description

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

Fields§

§pool: &'a Mutex<Vec<(BufferUsageScope, TextureUsageScope)>>§buffers: BufferUsageScope§textures: TextureUsageScope

Implementations§

source§

impl UsageScope<'static>

source

pub fn new_pooled<'d>( pool: &'d Mutex<Vec<(BufferUsageScope, TextureUsageScope)>>, tracker_indices: &TrackerIndexAllocators, ) -> UsageScope<'d>

source§

impl<'a> UsageScope<'a>

source

pub unsafe fn merge_bind_group( &mut self, bind_group: &BindGroupStates, ) -> Result<(), ResourceUsageCompatibilityError>

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

Only stateful things are merged in herell 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, render_bundle: &RenderBundleScope, ) -> Result<(), ResourceUsageCompatibilityError>

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

Only stateful things are merged in herell 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 for UsageScope<'a>

source§

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

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

impl<'a> Drop for UsageScope<'a>

source§

fn drop(&mut self)

Executes the destructor for this type. Read more

Auto Trait Implementations§

§

impl<'a> Freeze for UsageScope<'a>

§

impl<'a> !RefUnwindSafe for UsageScope<'a>

§

impl<'a> Send for UsageScope<'a>

§

impl<'a> Sync for UsageScope<'a>

§

impl<'a> Unpin for UsageScope<'a>

§

impl<'a> !UnwindSafe for UsageScope<'a>

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<T> Downcast<T> for T

source§

fn downcast(&self) -> &T

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

source§

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 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> Upcast<T> for T

source§

fn upcast(&self) -> Option<&T>

source§

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

source§

impl<T> WasmNotSendSync for T

source§

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