bevyengine / bevyengine/bevy

Crash in write_indirect_parameters_buffer on start of application

Open
#13,175 1 comment 1 reaction 1 assignee Assigned to @pcwalton View on GitHub
A-Rendering C-Bug
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.