Crash in write_indirect_parameters_buffer on start of application
- Dominant language
- Rust
- Stars
- 48.2k
- Forks
- 4.8k
- Avg merge
- 3d 22h
- Merged PRs (30d)
- 161
Description
## Bevy version
https://github.com/bevyengine/bevy/commit/16531fb3e3c3ff58e3e41b598ae14d960f71a0d0
regression after #12889
## AdapterInfo
```ignore
`AdapterInfo { name: "Intel(R) Graphics (ADL GT2)", vendor: 32902, device: 17958, device_type: IntegratedGpu, driver: "Intel open-source Mesa driver", driver_info: "Mesa 23.2.1-1ubuntu3.1", backend:
Vulkan }`
```
## Minimal example
```Cargo.toml
[package]
name = "issue2"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
bevy = { path = "../bevy", default-features = false, features = [
"bevy_core_pipeline",
"x11",
] }
```
```main.rs
use bevy::prelude::*;
fn main() {
App::new()
.add_plugins(DefaultPlugins)
.add_systems(Startup, setup)
.run();
}
fn setup(mut commands: Commands) {
commands.spawn(Camera2dBundle::default());
}
```
## What went wrong
```
❯ cargo run
Compiling issue2 v0.1.0 (/home/arcashka/Documents/projects/other/issue2)
Finished dev [unoptimized + debuginfo] target(s) in 5.83s
Running `target/debug/issue2`
2024-05-02T09:16:43.445626Z INFO bevy_winit::system: Creating new window "App" (Entity { index: 0, generation: 1 })
2024-05-02T09:16:43.446019Z INFO winit::platform_impl::platform::x11::window: Guessed window scale factor: 1
2024-05-02T09:16:43.519581Z INFO bevy_render::renderer: AdapterInfo { name: "Intel(R) Graphics (ADL GT2)", vendor: 32902, device: 17958, device_type: IntegratedGpu, driver: "Intel open-source Mesa driver", driver_info: "Mesa 23.2.1-1ubuntu3.1", backend:
Vulkan }
thread 'main' panicked at /home/arcashka/Documents/projects/other/bevy/crates/bevy_ecs/src/system/system_param.rs:576:17:
Resource requested by bevy_render::batching::gpu_preprocessing::write_indirect_parameters_buffer does not exist: bevy_render::batching::gpu_preprocessing::IndirectParametersBuffer
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
Encountered a panic in system `bevy_render::batching::gpu_preprocessing::write_indirect_parameters_buffer`!
```
## Additional information
I can fix it locally with
```
diff --git a/crates/bevy_pbr/src/render/mesh.rs b/crates/bevy_pbr/src/render/mesh.rs
index fa3cbdee0..5708cf829 100644
--- a/crates/bevy_pbr/src/render/mesh.rs
+++ b/crates/bevy_pbr/src/render/mesh.rs
@@ -217,8 +217,6 @@ impl Plugin for MeshRenderPlugin {
);
};
- let indirect_parameters_buffer = IndirectParametersBuffer::new();
-
let render_device = render_app.world().resource::();
if let Some(per_object_buffer_batch_size) =
GpuArrayBuffer::::batch_size(render_device)
@@ -230,7 +228,6 @@ impl Plugin for MeshRenderPlugin {
}
render_app
- .insert_resource(indirect_parameters_buffer)
.init_resource::();
}
diff --git a/crates/bevy_render/src/batching/gpu_preprocessing.rs b/crates/bevy_render/src/batching/gpu_preprocessing.rs
index bcbcf8b97..c4b2edf29 100644
--- a/crates/bevy_render/src/batching/gpu_preprocessing.rs
+++ b/crates/bevy_render/src/batching/gpu_preprocessing.rs
@@ -48,7 +48,8 @@ impl Plugin for BatchingPlugin {
return;
};
- render_app.init_resource::();
+ render_app.init_resource::()
+ .init_resource::();
}
}
```
But I'm not sure if that's correct and if it's not gonna break something else.
Contributor guide
Assessment
This issue has not been assessed yet.