Screen blanking causes panic on Linux/X11
Bevy version
main branch, commit 46acb7753c94bc83bdf9dc10f4ed9199a39491a6.
Operating system & version
Linux (Debian 12 “Bookworm”), X11
Xfce 4.16 with light-locker as the screensaver
AMD Radeon RX 590 Series (POLARIS10, DRM 3.44.0, 5.16.0-6-amd64, LLVM 13.0.1)
What you did
- Run a bevy program that uses
present_mode: bevy::window::PresentMode::Fifo. - Activate screen blanking or wait for the screensaver to activate it. Using light-locker, I used the command
sleep 1; light-locker-command -a. (The purpose ofsleep 1is to prevent the release of the return key when issuing the command from deactivating the screen blanking immediately.) - Wait a few seconds.
- Deactivate screen blanking (e.g. by moving the mouse).
What you expected to happen
The program should still be running.
What actually happened
The program panics with message “Failed to acquire next swap chain texture!: Timeout” in bevy_render/src/view/window.rs:161.
Additional information
Log:
Finished dev [optimized + debuginfo] target(s) in 0.08s
Running `target/debug/railroad-aura`
2022-04-24T16:32:01.523811Z INFO winit::platform_impl::platform::x11::window: Guessed window scale factor: 3.1666666666666665
2022-04-24T16:32:01.553940Z INFO bevy_render::renderer: AdapterInfo { name: "AMD RADV POLARIS10", vendor: 4098, device: 26591, device_type: DiscreteGpu, backend: Vulkan }
2022-04-24T16:32:02.931428Z INFO bevy diagnostic: frame_time : 0.016797s (avg 0.016661s)
2022-04-24T16:32:02.931503Z INFO bevy diagnostic: fps : 60.021653 (avg 59.989119)
2022-04-24T16:32:02.931526Z INFO bevy diagnostic: frame_count : 64.000000 (avg 64.000000)
2022-04-24T16:32:03.931307Z INFO bevy diagnostic: frame_time : 0.016842s (avg 0.016665s)
2022-04-24T16:32:03.931345Z INFO bevy diagnostic: fps : 60.007385 (avg 59.999148)
2022-04-24T16:32:03.931357Z INFO bevy diagnostic: frame_count : 124.000000 (avg 124.000000)
2022-04-24T16:32:04.931456Z INFO bevy diagnostic: frame_time : 0.016699s (avg 0.016667s)
2022-04-24T16:32:04.931552Z INFO bevy diagnostic: fps : 59.998868 (avg 60.002480)
2022-04-24T16:32:04.931566Z INFO bevy diagnostic: frame_count : 184.000000 (avg 184.000000)
2022-04-24T16:32:05.931107Z INFO bevy diagnostic: frame_time : 0.016471s (avg 0.016656s)
2022-04-24T16:32:05.931144Z INFO bevy diagnostic: fps : 60.036713 (avg 59.999736)
2022-04-24T16:32:05.931155Z INFO bevy diagnostic: frame_count : 244.000000 (avg 244.000000)
2022-04-24T16:32:06.930850Z INFO bevy diagnostic: frame_time : 0.016697s (avg 0.016661s)
2022-04-24T16:32:06.930892Z INFO bevy diagnostic: fps : 60.021312 (avg 59.973087)
2022-04-24T16:32:06.930904Z INFO bevy diagnostic: frame_count : 304.000000 (avg 304.000000)
2022-04-24T16:32:07.930875Z INFO bevy diagnostic: frame_time : 0.016647s (avg 0.016664s)
2022-04-24T16:32:07.930914Z INFO bevy diagnostic: fps : 60.009066 (avg 59.996297)
2022-04-24T16:32:07.930926Z INFO bevy diagnostic: frame_count : 364.000000 (avg 364.000000)
2022-04-24T16:32:08.930843Z INFO bevy diagnostic: frame_time : 0.016602s (avg 0.016662s)
2022-04-24T16:32:08.930886Z INFO bevy diagnostic: fps : 60.017949 (avg 60.005827)
2022-04-24T16:32:08.930898Z INFO bevy diagnostic: frame_count : 424.000000 (avg 424.000000)
2022-04-24T16:32:09.930875Z INFO bevy diagnostic: frame_time : 0.016571s (avg 0.016662s)
2022-04-24T16:32:09.930913Z INFO bevy diagnostic: fps : 60.015520 (avg 59.997021)
2022-04-24T16:32:09.930925Z INFO bevy diagnostic: frame_count : 484.000000 (avg 484.000000)
2022-04-24T16:32:10.930922Z INFO bevy diagnostic: frame_time : 0.016650s (avg 0.016668s)
2022-04-24T16:32:10.930982Z INFO bevy diagnostic: fps : 59.996362 (avg 60.001507)
2022-04-24T16:32:10.930997Z INFO bevy diagnostic: frame_count : 544.000000 (avg 544.000000)
thread 'main' panicked at 'Failed to acquire next swap chain texture!: Timeout', /home/martin/.cargo/git/checkouts/bevy-f7ffde730c324c74/46acb77/crates/bevy_render/src/view/window.rs:161:24
stack backtrace:
0: 0x7996710f986d - std::backtrace_rs::backtrace::libunwind::trace::hee598835bc88d35b
at /rustc/7737e0b5c4103216d6fd8cf941b7ab9bdbaace7c/library/std/src/../../backtrace/src/backtrace/libunwind.rs:93:5
1: 0x7996710f986d - std::backtrace_rs::backtrace::trace_unsynchronized::h9cdc730ba5cf5d72
at /rustc/7737e0b5c4103216d6fd8cf941b7ab9bdbaace7c/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
2: 0x7996710f986d - std::sys_common::backtrace::_print_fmt::h75aeaf7ed30e43fa
at /rustc/7737e0b5c4103216d6fd8cf941b7ab9bdbaace7c/library/std/src/sys_common/backtrace.rs:66:5
3: 0x7996710f986d - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h606862f787600875
at /rustc/7737e0b5c4103216d6fd8cf941b7ab9bdbaace7c/library/std/src/sys_common/backtrace.rs:45:22
4: 0x7996711594ec - core::fmt::write::he803f0f418caf762
at /rustc/7737e0b5c4103216d6fd8cf941b7ab9bdbaace7c/library/core/src/fmt/mod.rs:1190:17
5: 0x7996710e9a98 - std::io::Write::write_fmt::h70bc45872f37e7bb
at /rustc/7737e0b5c4103216d6fd8cf941b7ab9bdbaace7c/library/std/src/io/mod.rs:1657:15
6: 0x7996710fd847 - std::sys_common::backtrace::_print::h64d038cf8ac3e13e
at /rustc/7737e0b5c4103216d6fd8cf941b7ab9bdbaace7c/library/std/src/sys_common/backtrace.rs:48:5
7: 0x7996710fd847 - std::sys_common::backtrace::print::h359300b4a7fccf65
at /rustc/7737e0b5c4103216d6fd8cf941b7ab9bdbaace7c/library/std/src/sys_common/backtrace.rs:35:9
8: 0x7996710fd847 - std::panicking::default_hook::{{closure}}::hf51be35e2f510149
at /rustc/7737e0b5c4103216d6fd8cf941b7ab9bdbaace7c/library/std/src/panicking.rs:295:22
9: 0x7996710fd510 - std::panicking::default_hook::h03ca0f22e1d2d25e
at /rustc/7737e0b5c4103216d6fd8cf941b7ab9bdbaace7c/library/std/src/panicking.rs:314:9
10: 0x7996710fe0e9 - std::panicking::rust_panic_with_hook::h3b7380e99b825b63
at /rustc/7737e0b5c4103216d6fd8cf941b7ab9bdbaace7c/library/std/src/panicking.rs:698:17
11: 0x7996710fddd7 - std::panicking::begin_panic_handler::{{closure}}::h8e849d0710154ce0
at /rustc/7737e0b5c4103216d6fd8cf941b7ab9bdbaace7c/library/std/src/panicking.rs:588:13
12: 0x7996710f9d34 - std::sys_common::backtrace::__rust_end_short_backtrace::hedcdaddbd4c46cc5
at /rustc/7737e0b5c4103216d6fd8cf941b7ab9bdbaace7c/library/std/src/sys_common/backtrace.rs:138:18
13: 0x7996710fdae9 - rust_begin_unwind
at /rustc/7737e0b5c4103216d6fd8cf941b7ab9bdbaace7c/library/std/src/panicking.rs:584:5
14: 0x7996710c6863 - core::panicking::panic_fmt::he1bbc7336d49a357
at /rustc/7737e0b5c4103216d6fd8cf941b7ab9bdbaace7c/library/core/src/panicking.rs:143:14
15: 0x7996710c6953 - core::result::unwrap_failed::h719f957ed74f93fd
at /rustc/7737e0b5c4103216d6fd8cf941b7ab9bdbaace7c/library/core/src/result.rs:1749:5
16: 0x7996722e00bf - core::result::Result<T,E>::expect::h0f54b19a598f1ad2
at /rustc/7737e0b5c4103216d6fd8cf941b7ab9bdbaace7c/library/core/src/result.rs:1022:23
17: 0x7996722e00bf - bevy_render::view::window::prepare_windows::h5fd6f7a0477f91a3
at /home/martin/.cargo/git/checkouts/bevy-f7ffde730c324c74/46acb77/crates/bevy_render/src/view/window.rs:161:20
18: 0x7996722dbbf3 - core::ops::function::FnMut::call_mut::h704bd5f101b3b994
at /rustc/7737e0b5c4103216d6fd8cf941b7ab9bdbaace7c/library/core/src/ops/function.rs:150:5
19: 0x7996722dbbf3 - core::ops::function::impls::<impl core::ops::function::FnMut<A> for &mut F>::call_mut::h67ef84e2a8ed49bd
at /rustc/7737e0b5c4103216d6fd8cf941b7ab9bdbaace7c/library/core/src/ops/function.rs:269:13
20: 0x7996722dbbf3 - <Func as bevy_ecs::system::function_system::SystemParamFunction<(),Out,(F0,F1,F2,F3,F4),()>>::run::call_inner::h740e3493c1469c5a
at /home/martin/.cargo/git/checkouts/bevy-f7ffde730c324c74/46acb77/crates/bevy_ecs/src/system/function_system.rs:505:21
21: 0x7996722dbbf3 - <Func as bevy_ecs::system::function_system::SystemParamFunction<(),Out,(F0,F1,F2,F3,F4),()>>::run::h8d4fde6d26be4f19
at /home/martin/.cargo/git/checkouts/bevy-f7ffde730c324c74/46acb77/crates/bevy_ecs/src/system/function_system.rs:508:17
22: 0x7996722dbbf3 - <bevy_ecs::system::function_system::FunctionSystem<In,Out,Param,Marker,F> as bevy_ecs::system::system::System>::run_unsafe::h6fbc86d5a30d1088
at /home/martin/.cargo/git/checkouts/bevy-f7ffde730c324c74/46acb77/crates/bevy_ecs/src/system/function_system.rs:379:19
23: 0x799672e66f5d - bevy_ecs::schedule::executor_parallel::ParallelExecutor::prepare_systems::{{closure}}::h9c213b8f0a699d5e
at /home/martin/.cargo/git/checkouts/bevy-f7ffde730c324c74/46acb77/crates/bevy_ecs/src/schedule/executor_parallel.rs:196:30
24: 0x799672e66f5d - <core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll::h65367bceac9c1619
at /rustc/7737e0b5c4103216d6fd8cf941b7ab9bdbaace7c/library/core/src/future/mod.rs:84:19
25: 0x799672e67358 - async_executor::LocalExecutor::spawn::{{closure}}::h73f3251fd71f7890
at /home/martin/.cargo/registry/src/github.com-1ecc6299db9ec823/async-executor-1.4.1/src/lib.rs:376:19
26: 0x799672e67358 - <core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll::h6f05f53a95240d26
at /rustc/7737e0b5c4103216d6fd8cf941b7ab9bdbaace7c/library/core/src/future/mod.rs:84:19
27: 0x799672e46f13 - async_task::raw::RawTask<F,T,S>::run::h75f1c3781ba0896b
at /home/martin/.cargo/registry/src/github.com-1ecc6299db9ec823/async-task-4.2.0/src/raw.rs:489:20
28: 0x799672e76a13 - async_executor::Executor::try_tick::hb669b5f7163d9c86
at /home/martin/.cargo/registry/src/github.com-1ecc6299db9ec823/async-executor-1.4.1/src/lib.rs:181:17
29: 0x799672e76a13 - async_executor::LocalExecutor::try_tick::h6c5026de5d420c4f
at /home/martin/.cargo/registry/src/github.com-1ecc6299db9ec823/async-executor-1.4.1/src/lib.rs:405:9
30: 0x799672e25e43 - bevy_tasks::task_pool::TaskPool::scope::{{closure}}::h7b3f87c4ab8bbbef
at /home/martin/.cargo/git/checkouts/bevy-f7ffde730c324c74/46acb77/crates/bevy_tasks/src/task_pool.rs:234:21
31: 0x799672e25e43 - std::thread::local::LocalKey<T>::try_with::h1606492527821a58
at /rustc/7737e0b5c4103216d6fd8cf941b7ab9bdbaace7c/library/std/src/thread/local.rs:413:16
32: 0x799672e25e43 - std::thread::local::LocalKey<T>::with::h0fa145c31305e30d
at /rustc/7737e0b5c4103216d6fd8cf941b7ab9bdbaace7c/library/std/src/thread/local.rs:389:9
33: 0x799672e25e43 - bevy_tasks::task_pool::TaskPool::scope::h22353b5ca16b644f
at /home/martin/.cargo/git/checkouts/bevy-f7ffde730c324c74/46acb77/crates/bevy_tasks/src/task_pool.rs:180:9
34: 0x799672e3bf82 - <bevy_ecs::schedule::executor_parallel::ParallelExecutor as bevy_ecs::schedule::executor::ParallelSystemExecutor>::run_systems::h1c6bc5f54d1b1d40
at /home/martin/.cargo/git/checkouts/bevy-f7ffde730c324c74/46acb77/crates/bevy_ecs/src/schedule/executor_parallel.rs:129:9
35: 0x799672e58a32 - <bevy_ecs::schedule::stage::SystemStage as bevy_ecs::schedule::stage::Stage>::run::hbac333403c4b29f2
at /home/martin/.cargo/git/checkouts/bevy-f7ffde730c324c74/46acb77/crates/bevy_ecs/src/schedule/stage.rs:852:17
36: 0x79967236bbd9 - <bevy_render::RenderPlugin as bevy_app::plugin::Plugin>::build::{{closure}}::h002ee45429a6d330
at /home/martin/.cargo/git/checkouts/bevy-f7ffde730c324c74/46acb77/crates/bevy_render/src/lib.rs:223:21
37: 0x799672e1682b - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::h253d5360d7fcd567
at /rustc/7737e0b5c4103216d6fd8cf941b7ab9bdbaace7c/library/alloc/src/boxed.rs:1867:9
38: 0x799672e1682b - bevy_app::app::App::update::h18b4ef26aa2eb128
at /home/martin/.cargo/git/checkouts/bevy-f7ffde730c324c74/46acb77/crates/bevy_app/src/app.rs:116:13
39: 0x799671a21b32 - bevy_winit::winit_runner_with::{{closure}}::h557c6eb7d7f2aaf0
at /home/martin/.cargo/git/checkouts/bevy-f7ffde730c324c74/46acb77/crates/bevy_winit/src/lib.rs:563:21
40: 0x799671a3e3ea - winit::platform_impl::platform::sticky_exit_callback::hdad831ee997a74d6
at /home/martin/.cargo/registry/src/github.com-1ecc6299db9ec823/winit-0.26.1/src/platform_impl/linux/mod.rs:753:5
41: 0x799671a3e3ea - winit::platform_impl::platform::x11::EventLoop<T>::run_return::h757e1037e23767a0
at /home/martin/.cargo/registry/src/github.com-1ecc6299db9ec823/winit-0.26.1/src/platform_impl/linux/x11/mod.rs:293:17
42: 0x799671a3ec4d - winit::platform_impl::platform::x11::EventLoop<T>::run::h67f31800d30e82f4
at /home/martin/.cargo/registry/src/github.com-1ecc6299db9ec823/winit-0.26.1/src/platform_impl/linux/x11/mod.rs:392:9
43: 0x799671a2601c - winit::platform_impl::platform::EventLoop<T>::run::h83f4566cd9ba2974
at /home/martin/.cargo/registry/src/github.com-1ecc6299db9ec823/winit-0.26.1/src/platform_impl/linux/mod.rs:669:56
44: 0x799671a563ec - winit::event_loop::EventLoop<T>::run::hf3bab02aaf40b56b
at /home/martin/.cargo/registry/src/github.com-1ecc6299db9ec823/winit-0.26.1/src/event_loop.rs:154:9
45: 0x799671a54fcc - bevy_winit::run::h52cb6f4bf7996f3c
at /home/martin/.cargo/git/checkouts/bevy-f7ffde730c324c74/46acb77/crates/bevy_winit/src/lib.rs:180:5
46: 0x799671a55b1d - bevy_winit::winit_runner_with::h50c193c7d83e579a
at /home/martin/.cargo/git/checkouts/bevy-f7ffde730c324c74/46acb77/crates/bevy_winit/src/lib.rs:604:9
47: 0x799671a3a2a4 - bevy_winit::winit_runner::hae86db36465cdada
at /home/martin/.cargo/git/checkouts/bevy-f7ffde730c324c74/46acb77/crates/bevy_winit/src/lib.rs:220:5
48: 0x799671a3a2a4 - core::ops::function::Fn::call::h815a46905e3ba033
at /rustc/7737e0b5c4103216d6fd8cf941b7ab9bdbaace7c/library/core/src/ops/function.rs:70:5
49: 0x799672e16a2b - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::hc44719152755253c
at /rustc/7737e0b5c4103216d6fd8cf941b7ab9bdbaace7c/library/alloc/src/boxed.rs:1867:9
50: 0x799672e16a2b - bevy_app::app::App::run::hb9825d8d88325541
at /home/martin/.cargo/git/checkouts/bevy-f7ffde730c324c74/46acb77/crates/bevy_app/src/app.rs:130:9
51: 0x59ba7bd1dcb9 - railroad_aura::main::h79b1dc5c896e4d23
at /home/martin/incomplete/railroad-aura/src/main.rs:17:5
52: 0x59ba7bd388b3 - core::ops::function::FnOnce::call_once::hbf410b77f0683686
at /rustc/7737e0b5c4103216d6fd8cf941b7ab9bdbaace7c/library/core/src/ops/function.rs:227:5
53: 0x59ba7bd388b3 - std::sys_common::backtrace::__rust_begin_short_backtrace::h264277cc4a79b216
at /rustc/7737e0b5c4103216d6fd8cf941b7ab9bdbaace7c/library/std/src/sys_common/backtrace.rs:122:18
54: 0x59ba7bd29509 - std::rt::lang_start::{{closure}}::he5f37680e5caab0b
at /rustc/7737e0b5c4103216d6fd8cf941b7ab9bdbaace7c/library/std/src/rt.rs:145:18
55: 0x7996710f8ec1 - core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &F>::call_once::hb7014f43484a8b4e
at /rustc/7737e0b5c4103216d6fd8cf941b7ab9bdbaace7c/library/core/src/ops/function.rs:259:13
56: 0x7996710f8ec1 - std::panicking::try::do_call::h7bc9dc436daeb8c7
at /rustc/7737e0b5c4103216d6fd8cf941b7ab9bdbaace7c/library/std/src/panicking.rs:492:40
57: 0x7996710f8ec1 - std::panicking::try::h653d68a27ff5f175
at /rustc/7737e0b5c4103216d6fd8cf941b7ab9bdbaace7c/library/std/src/panicking.rs:456:19
58: 0x7996710f8ec1 - std::panic::catch_unwind::h9d739f9f59895e68
at /rustc/7737e0b5c4103216d6fd8cf941b7ab9bdbaace7c/library/std/src/panic.rs:137:14
59: 0x7996710f8ec1 - std::rt::lang_start_internal::{{closure}}::hf006f2bc7ce22bbe
at /rustc/7737e0b5c4103216d6fd8cf941b7ab9bdbaace7c/library/std/src/rt.rs:128:48
60: 0x7996710f8ec1 - std::panicking::try::do_call::hfb39d6df61a2e69f
at /rustc/7737e0b5c4103216d6fd8cf941b7ab9bdbaace7c/library/std/src/panicking.rs:492:40
61: 0x7996710f8ec1 - std::panicking::try::h13e2d225134958ac
at /rustc/7737e0b5c4103216d6fd8cf941b7ab9bdbaace7c/library/std/src/panicking.rs:456:19
62: 0x7996710f8ec1 - std::panic::catch_unwind::h3bd49b5a5dfb1a50
at /rustc/7737e0b5c4103216d6fd8cf941b7ab9bdbaace7c/library/std/src/panic.rs:137:14
63: 0x7996710f8ec1 - std::rt::lang_start_internal::h2ba92edce36c035e
at /rustc/7737e0b5c4103216d6fd8cf941b7ab9bdbaace7c/library/std/src/rt.rs:128:20
64: 0x59ba7bd1dd88 - main
65: 0x799670d0c7fd - __libc_start_main
at ./csu/../csu/libc-start.c:332:16
66: 0x59ba7bd1482a - _start
67: 0x0 - <unknown>
This issue does not occur when present_mode: bevy::window::PresentMode::Mailbox or present_mode: bevy::window::PresentMode::Immediate is used.
Seems similar to https://github.com/bevyengine/bevy/issues/3380 .
I observe sometimes, but not always, that the framerate drops before the panic occurs. Here is a log excerpt:
2022-04-24T16:57:00.973347Z INFO bevy diagnostic: frame_time : 0.016912s (avg 0.016680s)
2022-04-24T16:57:00.973402Z INFO bevy diagnostic: fps : 59.951500 (avg 60.048423)
2022-04-24T16:57:00.973421Z INFO bevy diagnostic: frame_count : 64.000000 (avg 64.000000)
2022-04-24T16:57:01.973018Z INFO bevy diagnostic: frame_time : 0.016767s (avg 0.016647s)
2022-04-24T16:57:01.973073Z INFO bevy diagnostic: fps : 60.071172 (avg 60.065512)
2022-04-24T16:57:01.973087Z INFO bevy diagnostic: frame_count : 124.000000 (avg 124.000000)
2022-04-24T16:57:02.972733Z INFO bevy diagnostic: frame_time : 0.016667s (avg 0.016658s)
2022-04-24T16:57:02.972788Z INFO bevy diagnostic: fps : 60.032377 (avg 60.004492)
2022-04-24T16:57:02.972804Z INFO bevy diagnostic: frame_count : 184.000000 (avg 184.000000)
2022-04-24T16:57:03.972646Z INFO bevy diagnostic: frame_time : 0.016818s (avg 0.016660s)
2022-04-24T16:57:03.972702Z INFO bevy diagnostic: fps : 60.022510 (avg 60.010782)
2022-04-24T16:57:03.972721Z INFO bevy diagnostic: frame_count : 244.000000 (avg 244.000000)
2022-04-24T16:57:05.186321Z INFO bevy diagnostic: frame_time : 0.812902s (avg 0.057349s)
2022-04-24T16:57:05.186383Z INFO bevy diagnostic: fps : 17.437144 (avg 57.701052)
2022-04-24T16:57:05.186406Z INFO bevy diagnostic: frame_count : 268.000000 (avg 268.000000)
2022-04-24T16:57:06.187697Z INFO bevy diagnostic: frame_time : 1.001201s (avg 0.106575s)
2022-04-24T16:57:06.187747Z INFO bevy diagnostic: fps : 9.383092 (avg 55.168870)
2022-04-24T16:57:06.187761Z INFO bevy diagnostic: frame_count : 269.000000 (avg 269.000000)
2022-04-24T16:57:07.187855Z INFO bevy diagnostic: frame_time : 1.000314s (avg 0.155762s)
2022-04-24T16:57:07.187904Z INFO bevy diagnostic: fps : 6.420057 (avg 52.487073)
2022-04-24T16:57:07.187919Z INFO bevy diagnostic: frame_count : 270.000000 (avg 270.000000)
2022-04-24T16:57:08.186362Z INFO bevy diagnostic: frame_time : 0.998516s (avg 0.204849s)
2022-04-24T16:57:08.186423Z INFO bevy diagnostic: fps : 4.881641 (avg 49.731346)
2022-04-24T16:57:08.186446Z INFO bevy diagnostic: frame_count : 271.000000 (avg 271.000000)
2022-04-24T16:57:09.185337Z INFO bevy diagnostic: frame_time : 0.999289s (avg 0.253974s)
2022-04-24T16:57:09.185363Z INFO bevy diagnostic: fps : 3.937418 (avg 46.929189)
2022-04-24T16:57:09.185372Z INFO bevy diagnostic: frame_count : 272.000000 (avg 272.000000)
thread 'main' panicked at 'Failed to acquire next swap chain texture!: Timeout', /home/martin/.cargo/git/checkouts/bevy-f7ffde730c324c74/46acb77/crates/bevy_render/src/view/window.rs:161:24
Does this also occur on the wgpu examples?
Seems similar to #3380.
I can reproduce #3380 with my setup and hardware. However, a difference is that import causes the panic irrespective of PresentMode for me, while screen blanking causes it only with PresentMode::Fifo.
Does this also occur on the wgpu examples?
No, it does not. One of the wgpu examples does not run at all, indicating it needs a feature not supported by my hardware (Adapter does not support required features for this example: CONSERVATIVE_RASTERIZATION). All the other examples continue running when I activate screen blanking.
I'm not very familiar with wgpu (or low-level graphics APIs, for that matter), so please take the following with a grain of salt.
I could track down the issue to this timeout in wgpu. If I modify it from 1 second to 10 seconds, the panic occurs only if I blank the screen for more than 10 seconds.
Taking a wild guess that treating a timeout like a changed surface instead of panicking might help, I tried this modification:
--- a/crates/bevy_render/src/view/window.rs
+++ b/crates/bevy_render/src/view/window.rs
@@ -152,7 +152,7 @@ pub fn prepare_windows(
let frame = match surface.get_current_texture() {
Ok(swap_chain_frame) => swap_chain_frame,
- Err(wgpu::SurfaceError::Outdated) => {
+ Err(wgpu::SurfaceError::Outdated | wgpu::SurfaceError::Timeout) => {
render_device.configure_surface(surface, &swap_chain_descriptor);
surface
.get_current_texture()
With this change, the issue no longer occurs. (Even if this is not the correct fix, maybe it can provide hints to people with more expertise than me in this area.)
Maybe the reason the issue does not occur with the wgpu examples is that they call surface.get_current_texture() only on Event::RedrawRequested, and the event is not generated while the screen is blanked?
I can reproduce this bug on an Intel GPU as well.
2022-09-13T17:14:48.220831Z INFO winit::platform_impl::platform::x11::window: Guessed window scale factor: 1.75
2022-09-13T17:14:48.260219Z INFO bevy_render::renderer: AdapterInfo { name: "Intel(R) HD Graphics 5500 (BDW GT2)", vendor: 32902, device: 5654, device_type: IntegratedGpu, backend: Vulkan }