diff options
author | 2024-03-29 04:02:24 +0100 | |
---|---|---|
committer | 2024-03-29 04:04:14 +0100 | |
commit | 2bb53ad6e7ea2689f2f56662e5840a8d363b3108 (patch) | |
tree | b42d34298b092dcc3238ae404ee86b8b17d6a076 /wgpu/src/buffer.rs | |
parent | 1df1cf82f4c9485533f2566c8490cfe188b4ae6a (diff) | |
download | iced-2bb53ad6e7ea2689f2f56662e5840a8d363b3108.tar.gz iced-2bb53ad6e7ea2689f2f56662e5840a8d363b3108.tar.bz2 iced-2bb53ad6e7ea2689f2f56662e5840a8d363b3108.zip |
Use a `StagingBelt` in `iced_wgpu` for regular buffer uploads
Diffstat (limited to 'wgpu/src/buffer.rs')
-rw-r--r-- | wgpu/src/buffer.rs | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/wgpu/src/buffer.rs b/wgpu/src/buffer.rs index ef00c58f..f8828d46 100644 --- a/wgpu/src/buffer.rs +++ b/wgpu/src/buffer.rs @@ -61,12 +61,22 @@ impl<T: bytemuck::Pod> Buffer<T> { /// Returns the size of the written bytes. pub fn write( &mut self, - queue: &wgpu::Queue, + device: &wgpu::Device, + encoder: &mut wgpu::CommandEncoder, + belt: &mut wgpu::util::StagingBelt, offset: usize, contents: &[T], ) -> usize { let bytes: &[u8] = bytemuck::cast_slice(contents); - queue.write_buffer(&self.raw, offset as u64, bytes); + + belt.write_buffer( + encoder, + &self.raw, + offset as u64, + (bytes.len() as u64).try_into().expect("Non-empty write"), + device, + ) + .copy_from_slice(bytes); self.offsets.push(offset as u64); |