Provide some margin to static buffers when growing
This commit is contained in:
parent
0715d7d0c7
commit
2097a56b58
2 changed files with 9 additions and 6 deletions
|
|
@ -2,8 +2,7 @@ use bytemuck::{Pod, Zeroable};
|
||||||
use std::marker::PhantomData;
|
use std::marker::PhantomData;
|
||||||
use std::mem;
|
use std::mem;
|
||||||
|
|
||||||
//128 triangles/indices
|
const DEFAULT_COUNT: wgpu::BufferAddress = 128;
|
||||||
const DEFAULT_STATIC_BUFFER_COUNT: wgpu::BufferAddress = 1_000;
|
|
||||||
|
|
||||||
/// A generic buffer struct useful for items which have no alignment requirements
|
/// A generic buffer struct useful for items which have no alignment requirements
|
||||||
/// (e.g. Vertex, Index buffers) & no dynamic offsets.
|
/// (e.g. Vertex, Index buffers) & no dynamic offsets.
|
||||||
|
|
@ -25,7 +24,7 @@ impl<T: Pod + Zeroable> Buffer<T> {
|
||||||
label: &'static str,
|
label: &'static str,
|
||||||
usages: wgpu::BufferUsages,
|
usages: wgpu::BufferUsages,
|
||||||
) -> Self {
|
) -> Self {
|
||||||
let size = (mem::size_of::<T>() as u64) * DEFAULT_STATIC_BUFFER_COUNT;
|
let size = (mem::size_of::<T>() as u64) * DEFAULT_COUNT;
|
||||||
|
|
||||||
Self {
|
Self {
|
||||||
offsets: Vec::new(),
|
offsets: Vec::new(),
|
||||||
|
|
@ -57,9 +56,13 @@ impl<T: Pod + Zeroable> Buffer<T> {
|
||||||
let size = (mem::size_of::<T>() * new_count) as u64;
|
let size = (mem::size_of::<T>() * new_count) as u64;
|
||||||
|
|
||||||
if self.size < size {
|
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.offsets.clear();
|
||||||
self.size = size;
|
|
||||||
self.gpu = Self::gpu_buffer(device, self.label, size, self.usages);
|
|
||||||
true
|
true
|
||||||
} else {
|
} else {
|
||||||
false
|
false
|
||||||
|
|
|
||||||
|
|
@ -43,7 +43,7 @@ impl Layer {
|
||||||
Self {
|
Self {
|
||||||
index_buffer: Buffer::new(
|
index_buffer: Buffer::new(
|
||||||
device,
|
device,
|
||||||
"iced_wgpu::triangle vertex buffer",
|
"iced_wgpu::triangle index buffer",
|
||||||
wgpu::BufferUsages::INDEX | wgpu::BufferUsages::COPY_DST,
|
wgpu::BufferUsages::INDEX | wgpu::BufferUsages::COPY_DST,
|
||||||
),
|
),
|
||||||
index_strides: Vec::new(),
|
index_strides: Vec::new(),
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue