[Pipelined Rendering] "Unable to find a GPU" on ChromeOS w/ Crostini/Pengin/Linux (maybe GL related)
- Dominant language
- Rust
- Stars
- 48.2k
- Forks
- 4.8k
- Avg merge
- 3d 16h
- Merged PRs (30d)
- 171
Description
## Bevy version
Pipelined Rendering branch - 432ce72fafe30598d8726072b0608035d1786251 and also main - 6a8a8c9d21f32e0e46623db9438813b009f9e014
## Operating system & version
ChromeOS w/ Penguin: Version 94.0.4606.97 (Official Build) beta (64-bit)
ASUS Chromebook C425
## What you did
1. Tried running any of the 0.5 examples - failed on "Unable to find a GPU"
2. Tried running any of the main branch examples - also failed on "Unable to find a GPU"
3. Read through this issue https://github.com/bevyengine/bevy/issues/3016 and tried the Pipelined Rendering branch w/ the suggested example, as well as other normal examples - failed on "Unable to find a GPU"
4. Set env variable for wgpu `WGPU_BACKEND` to `gl`, and tried running the pipelined examples, got different errors.
## What you expected to happen
The examples would run correctly, if the renderer was forced to use GL backend.
## What actually happened
Bevy examples paniced due to GPU issues, regardless of graphics backend.
## Additional information
Currently Vulkan support is really shoddy on ChromeOS due to running Linux inside of a VM. OpenGL seems to be work much better. I am able to run the current main branch of wgpu examples with no problem (other than some warning about keyboard and caps lock... lol). I'm also able to run other things using OpenGL such as macroquad examples.
This machine does not support Vulkan, as vulkaninfo returns nothing.
Failed to find GPU errors on `pipelined_texture_atlas` example
```
thread 'main' panicked at 'Unable to find a GPU! Make sure you have installed required drivers!', pipelined/bevy_render2/src/renderer/mod.rs:54:10
stack backtrace:
0: rust_begin_unwind
at /rustc/09c42c45858d5f3aedfa670698275303a3d19afa/library/std/src/panicking.rs:517:5
1: core::panicking::panic_fmt
at /rustc/09c42c45858d5f3aedfa670698275303a3d19afa/library/core/src/panicking.rs:101:14
2: core::option::expect_failed
at /rustc/09c42c45858d5f3aedfa670698275303a3d19afa/library/core/src/option.rs:1615:5
3: core::option::Option::expect
at /rustc/09c42c45858d5f3aedfa670698275303a3d19afa/library/core/src/option.rs:698:21
4: bevy_render2::renderer::initialize_renderer::{{closure}}
at ./pipelined/bevy_render2/src/renderer/mod.rs:51:19
5: as core::future::future::Future>::poll
at /rustc/09c42c45858d5f3aedfa670698275303a3d19afa/library/core/src/future/mod.rs:80:19
6: futures_lite::future::block_on::{{closure}}
at /home/zerve/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-lite-1.12.0/src/future.rs:89:27
7: std::thread::local::LocalKey::try_with
at /rustc/09c42c45858d5f3aedfa670698275303a3d19afa/library/std/src/thread/local.rs:399:16
8: std::thread::local::LocalKey::with
at /rustc/09c42c45858d5f3aedfa670698275303a3d19afa/library/std/src/thread/local.rs:375:9
9: futures_lite::future::block_on
at /home/zerve/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-lite-1.12.0/src/future.rs:79:5
10: ::build
at ./pipelined/bevy_render2/src/lib.rs:88:13
11: bevy_app::plugin_group::PluginGroupBuilder::finish
at ./crates/bevy_app/src/plugin_group.rs:104:21
12: bevy_app::app::App::add_plugins
at ./crates/bevy_app/src/app.rs:526:9
13: pipelined_texture_atlas::main
at ./examples/2d/pipelined_texture_atlas.rs:19:5
14: core::ops::function::FnOnce::call_once
at /rustc/09c42c45858d5f3aedfa670698275303a3d19afa/library/core/src/ops/function.rs:227:5
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
```
Different error with wgpu_backend set to gl
```
Oct 26 00:31:14.950 INFO bevy_render2::renderer: AdapterInfo { name: "virgl", vendor: 0, device: 0, device_type: DiscreteGpu, backend: Gl }
Oct 26 00:31:15.006 ERROR wgpu::backend::direct: Handling wgpu errors as fatal by default
thread 'main' panicked at 'wgpu error: Validation Error
Caused by:
In Device::create_render_pipeline
note: label = `pbr_pipeline`
Internal error in FRAGMENT shader: gsamplerCubeArrayShadow isn't supported in textureGrad, textureLod or texture with bias
', /home/zerve/.cargo/registry/src/github.com-1ecc6299db9ec823/wgpu-0.11.0/src/backend/direct.rs:2195:5
stack backtrace:
0: rust_begin_unwind
at /rustc/09c42c45858d5f3aedfa670698275303a3d19afa/library/std/src/panicking.rs:517:5
1: std::panicking::begin_panic_fmt
at /rustc/09c42c45858d5f3aedfa670698275303a3d19afa/library/std/src/panicking.rs:460:5
2: wgpu::backend::direct::default_error_handler
at /home/zerve/.cargo/registry/src/github.com-1ecc6299db9ec823/wgpu-0.11.0/src/backend/direct.rs:2195:5
3: core::ops::function::Fn::call
at /rustc/09c42c45858d5f3aedfa670698275303a3d19afa/library/core/src/ops/function.rs:70:5
4: as core::ops::function::Fn>::call
at /rustc/09c42c45858d5f3aedfa670698275303a3d19afa/library/alloc/src/boxed.rs:1650:9
5: wgpu::backend::direct::ErrorSinkRaw::handle_error
at /home/zerve/.cargo/registry/src/github.com-1ecc6299db9ec823/wgpu-0.11.0/src/backend/direct.rs:2183:9
6: wgpu::backend::direct::Context::handle_error
at /home/zerve/.cargo/registry/src/github.com-1ecc6299db9ec823/wgpu-0.11.0/src/backend/direct.rs:184:9
7: ::device_create_render_pipeline
at /home/zerve/.cargo/registry/src/github.com-1ecc6299db9ec823/wgpu-0.11.0/src/backend/direct.rs:1276:13
8: wgpu::Device::create_render_pipeline
at /home/zerve/.cargo/registry/src/github.com-1ecc6299db9ec823/wgpu-0.11.0/src/lib.rs:1770:17
9: bevy_render2::renderer::render_device::RenderDevice::create_render_pipeline
at ./pipelined/bevy_render2/src/renderer/render_device.rs:100:36
10: ::from_world
at ./pipelined/bevy_pbr2/src/render/mod.rs:332:24
11: bevy_app::app::App::init_resource
at ./crates/bevy_app/src/app.rs:437:28
12: ::build
at ./pipelined/bevy_pbr2/src/lib.rs:42:9
13: bevy_app::plugin_group::PluginGroupBuilder::finish
at ./crates/bevy_app/src/plugin_group.rs:104:21
14: bevy_app::app::App::add_plugins
at ./crates/bevy_app/src/app.rs:526:9
15: pipelined_texture_atlas::main
at ./examples/2d/pipelined_texture_atlas.rs:19:5
16: core::ops::function::FnOnce::call_once
at /rustc/09c42c45858d5f3aedfa670698275303a3d19afa/library/core/src/ops/function.rs:227:5
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
```
Clearly the `wgpu_backend` env var is doing something, but not enough to get the examples to run.
Contributor guide
Research direction
Start with pipelined/bevy_render2/src/renderer/mod.rs:51-54 and the renderer initialization path, then inspect pipelined/bevy_render2/src/renderer/render_device.rs and pipelined/bevy_pbr2/src/render/mod.rs for the GL failure. Run the pipelined_texture_atlas example on ChromeOS with and without WGPU_BACKEND=gl. Done means the examples initialize successfully on the reported environment or fail with a clear, supported-backend message.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- linux, rust
- Domain
- computer-graphics, operating-systems
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100