pub struct StagingBuffer<A: Api> {
    pub(crate) raw: A::Buffer,
    pub(crate) size: BufferAddress,
    pub(crate) is_coherent: bool,
}
Expand description

A temporary buffer, consumed by the command that uses it.

A StagingBuffer is designed for one-shot uploads of data to the GPU. It is always created mapped, and the command that uses it destroys the buffer when it is done.

StagingBuffers can be created with queue_create_staging_buffer and used with queue_write_staging_buffer. They are also used internally by operations like queue_write_texture that need to upload data to the GPU, but that don’t belong to any particular wgpu command buffer.

Used StagingBuffers are accumulated in Device::pending_writes, to be freed once their associated operation’s queue submission has finished execution.

Fields§

§raw: A::Buffer§size: BufferAddress§is_coherent: bool

Implementations§

source§

impl<A: Api> StagingBuffer<A>

source

unsafe fn flush(&self, device: &A::Device) -> Result<(), DeviceError>

Trait Implementations§

source§

impl<A: Api> Resource for StagingBuffer<A>

source§

const TYPE: &'static str = "StagingBuffer"

source§

fn life_guard(&self) -> &LifeGuard

source§

fn label(&self) -> &str

source§

impl<A: HalApi> Access<StagingBuffer<A>> for Device<A>

Auto Trait Implementations§

§

impl<A> RefUnwindSafe for StagingBuffer<A>where <A as Api>::Buffer: RefUnwindSafe,

§

impl<A> Send for StagingBuffer<A>

§

impl<A> Sync for StagingBuffer<A>

§

impl<A> Unpin for StagingBuffer<A>where <A as Api>::Buffer: Unpin,

§

impl<A> UnwindSafe for StagingBuffer<A>where <A as Api>::Buffer: 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,