Skip to content

Commit 9d9b13d

Browse files
committed
bevy_render: Hack around empty storage buffer problem
If there are no values, add a default one to avoid panics.
1 parent 72c8fb9 commit 9d9b13d

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

crates/bevy_render/src/render_resource/storage_vec.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,15 @@ use crate::renderer::{RenderDevice, RenderQueue};
88

99
use super::Buffer;
1010

11-
pub struct StorageVec<T: AsStd430> {
11+
pub struct StorageVec<T: AsStd430 + Default> {
1212
values: Vec<T>,
1313
scratch: Vec<u8>,
1414
storage_buffer: Option<Buffer>,
1515
capacity: usize,
1616
item_size: usize,
1717
}
1818

19-
impl<T: AsStd430> Default for StorageVec<T> {
19+
impl<T: AsStd430 + Default> Default for StorageVec<T> {
2020
fn default() -> Self {
2121
Self {
2222
values: Vec::new(),
@@ -30,7 +30,7 @@ impl<T: AsStd430> Default for StorageVec<T> {
3030
}
3131
}
3232

33-
impl<T: AsStd430> StorageVec<T> {
33+
impl<T: AsStd430 + Default> StorageVec<T> {
3434
#[inline]
3535
pub fn storage_buffer(&self) -> Option<&Buffer> {
3636
self.storage_buffer.as_ref()
@@ -89,7 +89,7 @@ impl<T: AsStd430> StorageVec<T> {
8989

9090
pub fn write_buffer(&mut self, device: &RenderDevice, queue: &RenderQueue) {
9191
if self.values.is_empty() {
92-
return;
92+
self.values.push(T::default());
9393
}
9494
self.reserve(self.values.len(), device);
9595
if let Some(storage_buffer) = &self.storage_buffer {

0 commit comments

Comments
 (0)