bevyengine / bevyengine/bevy

Pipelined: 3D examples crash with AMDVLK on Wayland

Open
#3,288 21 comments 0 reactions 0 assignees View on GitHub
A-Rendering C-Bug C-Startup I-Crash O-Linux
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

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.