diff --git a/render/wgpu/src/dynamic_transforms.rs b/render/wgpu/src/dynamic_transforms.rs index 053ddef6f..727ac33d8 100644 --- a/render/wgpu/src/dynamic_transforms.rs +++ b/render/wgpu/src/dynamic_transforms.rs @@ -3,6 +3,8 @@ use crate::{ColorAdjustments, Transforms}; use std::marker::PhantomData; use std::mem; +const ESTIMATED_OBJECTS_PER_CHUNK: u64 = 200; + pub struct DynamicTransforms { pub transform: Inner, pub color: Inner, @@ -30,7 +32,9 @@ impl Inner { pub fn new(device: &wgpu::Device, layout: &wgpu::BindGroupLayout) -> Self { let buffer = device.create_buffer(&wgpu::BufferDescriptor { label: None, - size: mem::size_of::() as u64 * 100, + size: (mem::size_of::() as u64 * ESTIMATED_OBJECTS_PER_CHUNK) + .min(device.limits().max_uniform_buffer_binding_size as u64) + .min(device.limits().max_buffer_size), usage: wgpu::BufferUsages::UNIFORM | wgpu::BufferUsages::COPY_DST, mapped_at_creation: false, });