zed-industries/zed · error
{} buffer needs {required_size} bytes, above the maximum of
Error message
{} buffer needs {required_size} bytes, above the maximum of {MAX_INSTANCE_BUFFER_SIZE} What it means
Validation in `update_buffer`: the instance buffer would need to grow to `required_size` bytes (data.len() * size_of::<T>()) which exceeds MAX_INSTANCE_BUFFER_SIZE, so the resize is refused. Fires when a draw batch's per-instance data is larger than the fixed maximum instance buffer.
Source
Thrown at crates/gpui_windows/src/directx_renderer.rs:1042
fragment,
buffer,
buffer_size,
view,
blend_state,
_marker: std::marker::PhantomData,
})
}
fn update_buffer(
&mut self,
device: &ID3D11Device,
device_context: &ID3D11DeviceContext,
data: &[T],
) -> Result<()> {
if self.buffer_size < data.len() {
let element_size = std::mem::size_of::<T>();
let required_size = std::mem::size_of_val(data);
anyhow::ensure!(
required_size <= MAX_INSTANCE_BUFFER_SIZE,
"{} buffer needs {required_size} bytes, above the maximum of {MAX_INSTANCE_BUFFER_SIZE}",
self.label
);
let new_buffer_size = data
.len()
.next_power_of_two()
.min(MAX_INSTANCE_BUFFER_SIZE / element_size);
log::debug!(
"Updating {} buffer size from {} to {}",
self.label,
self.buffer_size,
new_buffer_size
);
let buffer = create_buffer(device, std::mem::size_of::<T>(), new_buffer_size)?;
let view = create_buffer_view(device, &buffer)?;
self.buffer = buffer;
self.view = view;View on GitHub (pinned to f4178619ac)
Solutions
- Split the instance batch into multiple draw calls within the buffer limit.
- Raise MAX_INSTANCE_BUFFER_SIZE if legitimate workloads exceed it.
- Clamp or tessellate the upstream data producing the oversized batch.
- Log element count and struct size to identify the pathological batch type.
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at crates/gpui_windows/src/directx_renderer.rs:1042 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of zed-industries/zed@f4178619ac (2026-08-20).
Data as JSON: /api/errors/6dd7d950818f0aeb.
Report an issue: GitHub.