diff options
author | 2023-02-09 06:54:51 +0100 | |
---|---|---|
committer | 2023-02-24 13:37:32 +0100 | |
commit | 2097a56b58d8fe1784a625f69c1cdd38fcfb9a52 (patch) | |
tree | 763c3d6b7ab323565ef7e59b54e5cf5f00a73d4c /wgpu | |
parent | 0715d7d0c781a4c7ead4dfdbf0f4656022df67e1 (diff) | |
download | iced-2097a56b58d8fe1784a625f69c1cdd38fcfb9a52.tar.gz iced-2097a56b58d8fe1784a625f69c1cdd38fcfb9a52.tar.bz2 iced-2097a56b58d8fe1784a625f69c1cdd38fcfb9a52.zip |
Provide some margin to static buffers when growing
Diffstat (limited to 'wgpu')
-rw-r--r-- | wgpu/src/buffer/static.rs | 13 | ||||
-rw-r--r-- | wgpu/src/triangle.rs | 2 |
2 files changed, 9 insertions, 6 deletions
diff --git a/wgpu/src/buffer/static.rs b/wgpu/src/buffer/static.rs index 7ae7edd2..d8ae116e 100644 --- a/wgpu/src/buffer/static.rs +++ b/wgpu/src/buffer/static.rs @@ -2,8 +2,7 @@ use bytemuck::{Pod, Zeroable}; use std::marker::PhantomData; use std::mem; -//128 triangles/indices -const DEFAULT_STATIC_BUFFER_COUNT: wgpu::BufferAddress = 1_000; +const DEFAULT_COUNT: wgpu::BufferAddress = 128; /// A generic buffer struct useful for items which have no alignment requirements /// (e.g. Vertex, Index buffers) & no dynamic offsets. @@ -25,7 +24,7 @@ impl<T: Pod + Zeroable> Buffer<T> { label: &'static str, usages: wgpu::BufferUsages, ) -> Self { - let size = (mem::size_of::<T>() as u64) * DEFAULT_STATIC_BUFFER_COUNT; + let size = (mem::size_of::<T>() as u64) * DEFAULT_COUNT; Self { offsets: Vec::new(), @@ -57,9 +56,13 @@ impl<T: Pod + Zeroable> Buffer<T> { let size = (mem::size_of::<T>() * new_count) as u64; if self.size < size { + self.size = + (mem::size_of::<T>() * (new_count + new_count / 2)) as u64; + + self.gpu = + Self::gpu_buffer(device, self.label, self.size, self.usages); + self.offsets.clear(); - self.size = size; - self.gpu = Self::gpu_buffer(device, self.label, size, self.usages); true } else { false diff --git a/wgpu/src/triangle.rs b/wgpu/src/triangle.rs index 1b537bf4..4b4fa16d 100644 --- a/wgpu/src/triangle.rs +++ b/wgpu/src/triangle.rs @@ -43,7 +43,7 @@ impl Layer { Self { index_buffer: Buffer::new( device, - "iced_wgpu::triangle vertex buffer", + "iced_wgpu::triangle index buffer", wgpu::BufferUsages::INDEX | wgpu::BufferUsages::COPY_DST, ), index_strides: Vec::new(), |