bevy: Pipelined: 3D examples crash with AMDVLK on Wayland

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: <bevy_ecs::system::function_system::FunctionSystem<In,Out,Param,Marker,F> as bevy_ecs::system::system::System>::run_unsafe
   5: <core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll
   6: <core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll
   7: async_task::raw::RawTask<F,T,S>::run
   8: async_executor::LocalExecutor::try_tick
   9: bevy_tasks::task_pool::TaskPool::scope
  10: <bevy_ecs::schedule::executor_parallel::ParallelExecutor as bevy_ecs::schedule::executor::ParallelSystemExecutor>::run_systems
  11: <bevy_ecs::schedule::stage::SystemStage as bevy_ecs::schedule::stage::Stage>::run
  12: <bevy_render2::RenderPlugin as bevy_app::plugin::Plugin>::build::{{closure}}
  13: bevy_app::app::App::update
  14: bevy_winit::winit_runner_with::{{closure}}
  15: winit::platform_impl::platform::wayland::event_loop::EventLoop<T>::run_return
  16: winit::platform_impl::platform::wayland::event_loop::EventLoop<T>::run
  17: winit::platform_impl::platform::EventLoop<T>::run
  18: winit::event_loop::EventLoop<T>::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. 😃

About this issue

  • Original URL
  • State: open
  • Created 3 years ago
  • Comments: 21 (11 by maintainers)

Most upvoted comments

This should probably be closed, AMD makes horrible quality proprietary drivers for Linux.