bevyengine / bevyengine/bevy

(Various) GLES Linux: regression in 0.12 due to DownlevelFlags(VERTEX_STORAGE) requirement

Open
#10,277 6 comments 0 reactions 0 assignees View on GitHub
A-Rendering C-Bug I-Crash O-Linux O-OpenGL
Dominant language
Rust
Stars
48.2k
Forks
4.8k
Avg merge
3d 22h
Merged PRs (30d)
161

Description

## Bevy version

I originally tested with commit bfca4384cc34e0314497e809a7e02ae3b8001876

Bevy release 0.12 is confirmed to have this issue.

## \[Optional\] Relevant system information

Hardware: Apple M1 Pro, 14in MacBook Pro
OS: Asahi Linux
Mesa: 23.3.0~asahipre20230821^post1-1.fc39

```
AdapterInfo { name: "Apple M1 Pro (G13S C0)", vendor: 65541, device: 0, device_type: IntegratedGpu, driver: "", driver_info: "", backend: Gl }
SystemInfo { os: "Linux 39 Fedora Linux Asahi Remix", kernel: "6.5.6-403.asahi.fc39.aarch64+16k", cpu: "Icestorm-M1-Pro", core_count: "10", memory: "30.9 GiB" }
```

## What you did

Run any Bevy 2d or 3d example:

```
cargo r --features wayland --example bevymark
```

## What went wrong

```
2023-10-27T00:03:25.672781Z ERROR wgpu::backend::direct: Handling wgpu errors as fatal by default
thread 'main' panicked at /home/iyes/.cargo/registry/src/index.crates.io-6f17d22bba15001f/wgpu-0.17.1/src/backend/direct.rs:3056:5:
wgpu error: Validation Error

Caused by:
In Device::create_bind_group_layout
note: label = `mesh2d_layout`
Binding 0 entry is invalid
Downlevel flags DownlevelFlags(VERTEX_STORAGE) are required but not supported on the device.
This is not an invalid use of WebGPU: the underlying API or device does not support enough features to be a fully compliant implementation. A subset of the features can still be used. If you are running this program on native and not in a browser and wish to work around this issue, call Adapter::downlevel_properties or Device::downlevel_properties to get a listing of the features the current platform supports.
```

## Additional information

As seen in the error above, the problem is with `mesh2d_layout`. It wants a `VERTEX_STORAGE` feature that is not yet available in the Asahi GLES drivers.

2D used to work on Asahi in Bevy 0.11. This is a regression.

It is not necessarily Bevy's fault here. Asahi's GPU drivers are WIP and missing many features. It will get better.

However, if Bevy has an easy workaround for this (what's the situation with WebGL2?), maybe we could apply it here, too.

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.