Struct wgpu::util::StagingBelt
source · [−]pub struct StagingBelt { /* private fields */ }Expand description
Staging belt is a machine that uploads data.
Internally it uses a ring-buffer of staging buffers that are sub-allocated.
It has an advantage over Queue::write_buffer in a way that it returns a mutable slice,
which you can fill to avoid an extra data copy.
Using a staging belt is slightly complicated, and generally goes as follows:
- Write to buffers that need writing to using
StagingBelt::write_buffer. - Call
finish. - Submit all command encoders used with
StagingBelt::write_buffer. - Call
recall
Implementations
sourceimpl StagingBelt
impl StagingBelt
sourcepub fn new(chunk_size: BufferAddress) -> Self
pub fn new(chunk_size: BufferAddress) -> Self
Create a new staging belt.
The chunk_size is the unit of internal buffer allocation.
It’s better when it’s big, but ideally still 1-4 times less than
the total amount of data uploaded per submission.
sourcepub fn write_buffer(
&mut self,
encoder: &mut CommandEncoder,
target: &Buffer,
offset: BufferAddress,
size: BufferSize,
device: &Device
) -> BufferViewMut<'_>
pub fn write_buffer(
&mut self,
encoder: &mut CommandEncoder,
target: &Buffer,
offset: BufferAddress,
size: BufferSize,
device: &Device
) -> BufferViewMut<'_>
Allocate the staging belt slice of size to be uploaded into the target buffer
at the specified offset.
The upload will be placed into the provided command encoder. This encoder
must be submitted after finish is called and before recall is called.
Trait Implementations
Auto Trait Implementations
impl !RefUnwindSafe for StagingBelt
impl Send for StagingBelt
impl !Sync for StagingBelt
impl Unpin for StagingBelt
impl !UnwindSafe for StagingBelt
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more