pub(crate) struct ResourceInfo<T: Resource> {
    id: Option<Id<T::Marker>>,
    tracker_index: TrackerIndex,
    tracker_indices: Option<Arc<SharedTrackerIndexAllocator>>,
    submission_index: AtomicUsize,
    label: String,
}
Expand description

Information about the wgpu-core resource.

Each type representing a wgpu-core resource, like Device, Buffer, etc., contains a ResourceInfo which contains its latest submission index and label.

A resource may need to be retained for any of several reasons: and any lifetime logic will be handled by Arc<Resource> refcount

  • The user may hold a reference to it (via a wgpu::Buffer, say).

  • Other resources may depend on it (a texture view’s backing texture, for example).

  • It may be used by commands sent to the GPU that have not yet finished execution.

Fields§

§id: Option<Id<T::Marker>>§tracker_index: TrackerIndex§tracker_indices: Option<Arc<SharedTrackerIndexAllocator>>§submission_index: AtomicUsize

The index of the last queue submission in which the resource was used.

Each queue submission is fenced and assigned an index number sequentially. Thus, when a queue submission completes, we know any resources used in that submission and any lower-numbered submissions are no longer in use by the GPU.

§label: String

The label from the descriptor used to create the resource.

Implementations§

source§

impl<T: Resource> ResourceInfo<T>

source

pub(crate) fn new( label: &Label<'_>, tracker_indices: Option<Arc<SharedTrackerIndexAllocator>> ) -> Self

source

pub(crate) fn id(&self) -> Id<T::Marker>

source

pub(crate) fn tracker_index(&self) -> TrackerIndex

source

pub(crate) fn set_id(&mut self, id: Id<T::Marker>)

source

pub(crate) fn use_at(&self, submit_index: FenceValue)

Record that this resource will be used by the queue submission with the given index.

source

pub(crate) fn submission_index(&self) -> FenceValue

Trait Implementations§

source§

impl<T: Debug + Resource> Debug for ResourceInfo<T>
where T::Marker: Debug,

source§

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

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

impl<T: Resource> Drop for ResourceInfo<T>

source§

fn drop(&mut self)

Executes the destructor for this type. Read more

Auto Trait Implementations§

§

impl<T> !Freeze for ResourceInfo<T>

§

impl<T> !RefUnwindSafe for ResourceInfo<T>

§

impl<T> Send for ResourceInfo<T>

§

impl<T> Sync for ResourceInfo<T>

§

impl<T> Unpin for ResourceInfo<T>
where <T as Resource>::Marker: Unpin,

§

impl<T> !UnwindSafe for ResourceInfo<T>

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>,

§

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>,

§

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,