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 get_data(&self) -> &[u8] ⓘ
trace only.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.
pub(crate) fn flush(self) -> FlushedStagingBuffer
Trait Implementations§
Source§impl Debug for StagingBuffer
impl Debug for StagingBuffer
Source§impl ResourceType for StagingBuffer
impl ResourceType for StagingBuffer
impl Send for StagingBuffer
send_sync only.impl Sync for StagingBuffer
send_sync only.