pub struct StagingBuffer {
raw: Box<dyn DynBuffer>,
device: Arc<Device>,
pub(crate) size: BufferSize,
is_coherent: bool,
ptr: NonNull<u8>,
}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: Box<dyn DynBuffer>§device: Arc<Device>§size: BufferSize§is_coherent: bool§ptr: NonNull<u8>Implementations§
Source§impl StagingBuffer
impl StagingBuffer
pub(crate) fn new( device: &Arc<Device>, size: BufferSize, ) -> Result<Self, DeviceError>
Sourcepub(crate) unsafe fn ptr(&self) -> NonNull<u8>
pub(crate) unsafe fn ptr(&self) -> NonNull<u8>
SAFETY: You must not call any functions of self
until you stopped using the returned pointer.
pub(crate) fn write_zeros(&mut self)
pub(crate) fn write(&mut self, data: &[u8])
Sourcepub(crate) unsafe fn write_with_offset(
&mut self,
data: &[u8],
src_offset: isize,
dst_offset: isize,
size: usize,
)
pub(crate) unsafe fn write_with_offset( &mut self, data: &[u8], src_offset: isize, dst_offset: isize, size: usize, )
SAFETY: The offsets and size must be in-bounds.