Pipelined: 3D examples crash with AMDVLK on Wayland
- Dominant language
- Rust
- Stars
- 48.2k
- Forks
- 4.8k
- Avg merge
- 3d 22h
- Merged PRs (30d)
- 161
Description
## Bevy version
Current `main` (commit `cf48132e`).
## Operating system & version
Linux 5.15.4 / Sway Wayland Compositor / AMDVLK 2021.Q3.7
Mesa RADV driver works with both wayland and x11.
AMDVLK driver works with x11, but not wayland.
## What you did
`cargo run --example 3d_scene_pipelined --features bevy/wayland --release`
(or any other pipelined 3D example)
2D seems to work. `bevymark_pipelined` works correctly.
Old renderer works. The old `3d_scene` works correctly.
## What you expected to happen
The new 3d examples to not crash in wayland mode with the amdvlk driver. :)
## What actually happened
Bevy manages to render at least 1 frame (don't know how to tell if it can do more than 1 before crashing). I can tell, because the window flashes briefly.
The window opens, a frame is rendered and displayed, and then almost immediately crashes with a panic (and sometimes segfault, but i think that's irrelevant).
## Additional information
```
2021-12-10T15:01:56.213959Z INFO bevy_render2::renderer: AdapterInfo { name: "Radeon RX Vega", vendor: 4098, device: 26751, device_type: DiscreteGpu, backend: Vulkan }
thread 'main' panicked at 'Failed to acquire next swap chain texture!: Timeout', pipelined/bevy_render2/src/view/window.rs:159:24
```
```
stack backtrace:
0: rust_begin_unwind
at /rustc/0e07bcb68b82b54c0c4ec6fe076e9d75b02109cf/library/std/src/panicking.rs:498:5
1: core::panicking::panic_fmt
at /rustc/0e07bcb68b82b54c0c4ec6fe076e9d75b02109cf/library/core/src/panicking.rs:107:14
2: core::result::unwrap_failed
at /rustc/0e07bcb68b82b54c0c4ec6fe076e9d75b02109cf/library/core/src/result.rs:1613:5
3: bevy_render2::view::window::prepare_windows
4: as bevy_ecs::system::system::System>::run_unsafe
5: as core::future::future::Future>::poll
6: as core::future::future::Future>::poll
7: async_task::raw::RawTask::run
8: async_executor::LocalExecutor::try_tick
9: bevy_tasks::task_pool::TaskPool::scope
10: ::run_systems
11: ::run
12: ::build::{{closure}}
13: bevy_app::app::App::update
14: bevy_winit::winit_runner_with::{{closure}}
15: winit::platform_impl::platform::wayland::event_loop::EventLoop::run_return
16: winit::platform_impl::platform::wayland::event_loop::EventLoop::run
17: winit::platform_impl::platform::EventLoop::run
18: winit::event_loop::EventLoop::run
19: bevy_winit::run
20: bevy_winit::winit_runner_with
21: core::ops::function::Fn::call
22: bevy_app::app::App::run
23: _3d_scene_pipelined::main
```
Seems like this happens in the window presentation code and its swapchain management.
I know that @cart is reworking all of this stuff with the upcoming "actual pipelining" implementation. When that code lands, we should check if this bug still persists. It might turn out to just be fixed. :)
Contributor guide
Assessment
This issue has not been assessed yet.