Struct wgpu_core::resource::StagingBuffer
source · 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.
StagingBuffer
s 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 StagingBuffer
s 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] ⓘ
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.