Update wgpu to v0.19.3 and unpin web-sys. (#12247)

# Objective

This PR unpins `web-sys` so that unrelated projects that have
`bevy_render` in their workspace can finally update their `web-sys`.
More details in and fixes #12246.

## Solution

* Update `wgpu` from 0.19.1 to 0.19.3.
* Remove the `web-sys` pin.
* Update docs and wasm helper to remove the now-stale
`--cfg=web_sys_unstable_apis` Rust flag.

---

## Changelog

Updated `wgpu` to v0.19.3 and removed `web-sys` pin.
This commit is contained in:
Kaur Kuut 2024-03-02 02:44:51 +02:00 committed by GitHub
parent cc32610543
commit 165c360070
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
8 changed files with 6 additions and 27 deletions

View file

@ -144,8 +144,6 @@ jobs:
target: wasm32-unknown-unknown target: wasm32-unknown-unknown
- name: Check wasm - name: Check wasm
run: cargo check --target wasm32-unknown-unknown run: cargo check --target wasm32-unknown-unknown
env:
RUSTFLAGS: --cfg=web_sys_unstable_apis
markdownlint: markdownlint:
runs-on: ubuntu-latest runs-on: ubuntu-latest

View file

@ -303,7 +303,7 @@ pbr_transmission_textures = ["bevy_internal/pbr_transmission_textures"]
# Enable some limitations to be able to use WebGL2. Please refer to the [WebGL2 and WebGPU](https://github.com/bevyengine/bevy/tree/latest/examples#webgl2-and-webgpu) section of the examples README for more information on how to run Wasm builds with WebGPU. # Enable some limitations to be able to use WebGL2. Please refer to the [WebGL2 and WebGPU](https://github.com/bevyengine/bevy/tree/latest/examples#webgl2-and-webgpu) section of the examples README for more information on how to run Wasm builds with WebGPU.
webgl2 = ["bevy_internal/webgl"] webgl2 = ["bevy_internal/webgl"]
# Enable support for WebGPU in Wasm. When enabled, this feature will override the `webgl2` feature and you won't be able to run Wasm builds with WebGL2, only with WebGPU. Requires the `RUSTFLAGS` environment variable to be set to `--cfg=web_sys_unstable_apis` when building. # Enable support for WebGPU in Wasm. When enabled, this feature will override the `webgl2` feature and you won't be able to run Wasm builds with WebGL2, only with WebGPU.
webgpu = ["bevy_internal/webgpu"] webgpu = ["bevy_internal/webgpu"]
# Enables the built-in asset processor for processed assets. # Enables the built-in asset processor for processed assets.

View file

@ -16,7 +16,7 @@ bevy_reflect = { path = "../bevy_reflect", version = "0.14.0-dev", features = [
bytemuck = "1" bytemuck = "1"
serde = "1.0" serde = "1.0"
thiserror = "1.0" thiserror = "1.0"
wgpu = { version = "0.19.1", default-features = false } wgpu = { version = "0.19.3", default-features = false }
encase = { version = "0.7", default-features = false } encase = { version = "0.7", default-features = false }
[lints] [lints]

View file

@ -66,7 +66,7 @@ image = { version = "0.24", default-features = false }
codespan-reporting = "0.11.0" codespan-reporting = "0.11.0"
# `fragile-send-sync-non-atomic-wasm` feature means we can't use WASM threads for rendering # `fragile-send-sync-non-atomic-wasm` feature means we can't use WASM threads for rendering
# It is enabled for now to avoid having to do a significant overhaul of the renderer just for wasm # It is enabled for now to avoid having to do a significant overhaul of the renderer just for wasm
wgpu = { version = "0.19.1", default-features = false, features = [ wgpu = { version = "0.19.3", default-features = false, features = [
"wgsl", "wgsl",
"dx12", "dx12",
"metal", "metal",
@ -107,9 +107,7 @@ naga_oil = { version = "0.13", default-features = false, features = [
[target.'cfg(target_arch = "wasm32")'.dependencies] [target.'cfg(target_arch = "wasm32")'.dependencies]
naga_oil = "0.13" naga_oil = "0.13"
js-sys = "0.3" js-sys = "0.3"
# web-sys doesn't follow semver for the WebGPU APIs as they are unstable web-sys = { version = "0.3.67", features = [
# Make sure that WebGPU builds work when changing this!
web-sys = { version = "=0.3.67", features = [
'Blob', 'Blob',
'Document', 'Document',
'Element', 'Element',

View file

@ -239,13 +239,6 @@ ruby -run -ehttpd examples/wasm
Bevy support for WebGPU is being worked on, but is currently experimental. Bevy support for WebGPU is being worked on, but is currently experimental.
To build for WebGPU, you'll need to enable the `webgpu` feature. This will override the `webgl2` feature, and builds with the `webgpu` feature enabled won't be able to run on browsers that don't support WebGPU. To build for WebGPU, you'll need to enable the `webgpu` feature. This will override the `webgl2` feature, and builds with the `webgpu` feature enabled won't be able to run on browsers that don't support WebGPU.
WebGPU depends on unstable APIs so you will also need to pass the `web_sys_unstable_apis` flag to your builds. For example:
```sh
RUSTFLAGS=--cfg=web_sys_unstable_apis cargo build ...
```
Check `wasm-bindgen` [docs on Unstable APIs](https://rustwasm.github.io/wasm-bindgen/web-sys/unstable-apis.html) for more details.
Bevy has an helper to build its examples: Bevy has an helper to build its examples:

View file

@ -83,7 +83,7 @@ The default feature set enables most of the expected features of a game engine,
|trace_tracy_memory|Tracing support, with memory profiling, exposing a port for Tracy| |trace_tracy_memory|Tracing support, with memory profiling, exposing a port for Tracy|
|wav|WAV audio format support| |wav|WAV audio format support|
|wayland|Wayland display server support| |wayland|Wayland display server support|
|webgpu|Enable support for WebGPU in Wasm. When enabled, this feature will override the `webgl2` feature and you won't be able to run Wasm builds with WebGL2, only with WebGPU. Requires the `RUSTFLAGS` environment variable to be set to `--cfg=web_sys_unstable_apis` when building.| |webgpu|Enable support for WebGPU in Wasm. When enabled, this feature will override the `webgl2` feature and you won't be able to run Wasm builds with WebGL2, only with WebGPU.|
|webp|WebP image format support| |webp|WebP image format support|
|wgpu_trace|Save a trace of all wgpu calls| |wgpu_trace|Save a trace of all wgpu calls|
|zlib|For KTX2 supercompression| |zlib|For KTX2 supercompression|

View file

@ -583,13 +583,6 @@ ruby -run -ehttpd examples/wasm
Bevy support for WebGPU is being worked on, but is currently experimental. Bevy support for WebGPU is being worked on, but is currently experimental.
To build for WebGPU, you'll need to enable the `webgpu` feature. This will override the `webgl2` feature, and builds with the `webgpu` feature enabled won't be able to run on browsers that don't support WebGPU. To build for WebGPU, you'll need to enable the `webgpu` feature. This will override the `webgl2` feature, and builds with the `webgpu` feature enabled won't be able to run on browsers that don't support WebGPU.
WebGPU depends on unstable APIs so you will also need to pass the `web_sys_unstable_apis` flag to your builds. For example:
```sh
RUSTFLAGS=--cfg=web_sys_unstable_apis cargo build ...
```
Check `wasm-bindgen` [docs on Unstable APIs](https://rustwasm.github.io/wasm-bindgen/web-sys/unstable-apis.html) for more details.
Bevy has an helper to build its examples: Bevy has an helper to build its examples:

View file

@ -73,13 +73,10 @@ fn main() {
parameters.push("--features"); parameters.push("--features");
parameters.push(&features_string); parameters.push(&features_string);
} }
let mut cmd = cmd!( let cmd = cmd!(
sh, sh,
"cargo build {parameters...} --profile release --target wasm32-unknown-unknown --example {example}" "cargo build {parameters...} --profile release --target wasm32-unknown-unknown --example {example}"
); );
if matches!(cli.api, WebApi::Webgpu) {
cmd = cmd.env("RUSTFLAGS", "--cfg=web_sys_unstable_apis");
}
cmd.run().expect("Error building example"); cmd.run().expect("Error building example");
cmd!( cmd!(