summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar shan <shankern@protonmail.com>2022-10-05 11:23:36 -0700
committerLibravatar shan <shankern@protonmail.com>2022-10-05 11:23:36 -0700
commite540b7f6428a6648a696494c6d9dda20663375fa (patch)
tree8ac8152af0fa59cea40cb8fcd2b7de9d0828e0e1
parent30432cbade3d9b25c4df62656a7494db3f4ea82a (diff)
downloadiced-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.rs9
-rw-r--r--wgpu/src/triangle.rs3
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);
}