diff options
author | 2022-10-05 11:23:36 -0700 | |
---|---|---|
committer | 2022-10-05 11:23:36 -0700 | |
commit | e540b7f6428a6648a696494c6d9dda20663375fa (patch) | |
tree | 8ac8152af0fa59cea40cb8fcd2b7de9d0828e0e1 | |
parent | 30432cbade3d9b25c4df62656a7494db3f4ea82a (diff) | |
download | iced-e540b7f6428a6648a696494c6d9dda20663375fa.tar.gz iced-e540b7f6428a6648a696494c6d9dda20663375fa.tar.bz2 iced-e540b7f6428a6648a696494c6d9dda20663375fa.zip |
Fixed issue with offsets not being reset properly leading to borked draws.
-rw-r--r-- | wgpu/src/buffers.rs | 9 | ||||
-rw-r--r-- | wgpu/src/triangle.rs | 3 |
2 files changed, 10 insertions, 2 deletions
diff --git a/wgpu/src/buffers.rs b/wgpu/src/buffers.rs index fd6ca244..bf7bb49e 100644 --- a/wgpu/src/buffers.rs +++ b/wgpu/src/buffers.rs @@ -37,7 +37,7 @@ impl<T: Pod + Zeroable> StaticBuffer<T> { usages, gpu: Self::gpu_buffer(device, label, size, usages), size, - _data: Default::default(), + _data: PhantomData, } } @@ -65,7 +65,7 @@ impl<T: Pod + Zeroable> StaticBuffer<T> { let size = wgpu::BufferAddress::from((mem::size_of::<T>() * new_count) as u64); - if self.size <= size { + if self.size < size { self.offsets.clear(); self.size = size; self.gpu = Self::gpu_buffer(device, self.label, size, self.usages); @@ -120,4 +120,9 @@ impl<T: Pod + Zeroable> StaticBuffer<T> { pub fn slice_from_index(&self, index: usize) -> wgpu::BufferSlice<'_> { self.gpu.slice(self.offset_at(index)..) } + + /// Clears any temporary data from the buffer. + pub fn clear(&mut self) { + self.offsets.clear() + } }
\ No newline at end of file diff --git a/wgpu/src/triangle.rs b/wgpu/src/triangle.rs index c22f118c..a7ad7b77 100644 --- a/wgpu/src/triangle.rs +++ b/wgpu/src/triangle.rs @@ -241,6 +241,9 @@ impl Pipeline { } } + self.vertex_buffer.clear(); + self.index_buffer.clear(); + if let Some(blit) = &mut self.blit { blit.draw(encoder, target); } |