-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Update to wgpu 25 #6744
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Update to wgpu 25 #6744
Conversation
4ebc603
to
f571ee2
Compare
Preview available at https://egui-pr-preview.github.io/pr/6744-wgpu-25 |
Prerequisite of #6744. See: gfx-rs/wgpu#7218, gfx-rs/wgpu#7425 Please be aware that Rust 1.84 enables some (more) WASM extensions by default, and ships with an `std` built with them enabled: https://blog.rust-lang.org/2024/09/24/webassembly-targets-change-in-default-target-features/ According to `rustc +1.84 --print=cfg --target wasm32-unknown-unknown`, these are: `multivalue`, `mutable-globals`, `reference-types`, and `sign-ext`. (c.f. `rustc +1.84 --print=cfg --target wasm32-unknown-unknown -C target-cpu=mvp` enabling none.) For reference: https://webassembly.org/features/ ---- If support is desired for ancient/esoteric browsers that don't have these implemented, there are two ways to get around this: - Target `wasm32v1-none` instead, but that's a `no-std` target, and I suppose a lot of dependencies don't work that way (e.g. gfx-rs/wgpu#6826) - Using the `-Ctarget-cpu=mvp` and `-Zbuild-std=panic_abort,std` flags, and the `RUSTC_BOOTSTRAP=1` escape hatch to allow using the latter with non-`nightly` toolchains - until https://github.com/rust-lang/wg-cargo-std-aware is stabilized. (For reference: https://github.com/ruffle-rs/ruffle/pull/18528/files#diff-fb2896d189d77b35ace9a079c1ba9b55777d16e0f11ce79f776475a451b1825a) I don't think either of these is particularly advantageous, so I suggest just accepting that browsers will have to have some extensions implemented to run `egui`.
dafe378
to
2059f4a
Compare
crates/egui-wgpu/src/lib.rs
Outdated
WgpuError::NoSuitableAdapterFound("`request_adapters` returned `None`".to_owned()) | ||
WgpuError::NoSuitableAdapterFound(format!("`request_adapters` returned `Err`: {}", e)) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Perhaps it would be better to do this...?
pub enum WgpuError {
#[error(transparent)]
NoSuitableAdapterFound(#[from] wgpu::RequestDeviceError),
But then that would spread into NativeAdapterSelectorMethod
...
@@ -195,12 +186,9 @@ impl Default for WgpuSetupCreateNew { | |||
..base_limits | |||
}, | |||
memory_hints: wgpu::MemoryHints::default(), | |||
trace: wgpu::Trace::Off, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is loss of functionality - but unfortunately, wgpu::Trace::Directory(std::path::PathBuf)
is behind the wgpu-core/trace
feature, and I couldn't find a way to check for it being enabled using cfg!
, and to add another feature (such as wgpu-trace
) to enable it, wgpu-core
would also have to be declared as a direct dependency, and... 😵💫
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
See: #6860
See for changelogs: