Skip to content

Commit f626a44

Browse files
committed
Merge remote-tracking branch 'upstream/trunk' into texture-component-swizzle
2 parents 9fe1e6c + 7a65558 commit f626a44

285 files changed

Lines changed: 5130 additions & 3478 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/actions/install-mesa/action.yml

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@ inputs:
44
# Sourced from https://archive.mesa3d.org/. Bumping this requires
55
# updating the mesa build in https://github.com/gfx-rs/ci-build and creating a new release.
66
version:
7-
default: "25.2.7"
7+
default: "26.1.3"
88
# Corresponds to https://github.com/gfx-rs/ci-build/releases
99
ci-binary-build:
10-
default: "build26"
10+
default: "build29"
1111
target-dir:
1212
description: "The directory into which to install the Mesa libraries."
1313
default: "target/llvm-cov-target/debug"
@@ -33,10 +33,11 @@ runs:
3333
cat <<- EOF > icd.json
3434
{
3535
"ICD": {
36-
"api_version": "1.1.255",
36+
"api_version": "1.4.348",
37+
"library_arch": "64",
3738
"library_path": "$PWD/mesa/lib/x86_64-linux-gnu/libvulkan_lvp.so"
3839
},
39-
"file_format_version": "1.0.0"
40+
"file_format_version": "1.0.1"
4041
}
4142
EOF
4243

.github/workflows/ci.yml

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,13 @@ jobs:
188188
tier: 2
189189
kind: web
190190

191+
- name: WebAssembly 64-bit
192+
os: ubuntu-24.04
193+
target: wasm64-unknown-unknown
194+
kind: wgpu-only
195+
tier: 3
196+
extra-flags: -Zbuild-std=std,panic_abort
197+
191198
- name: Emscripten
192199
os: ubuntu-24.04
193200
target: wasm32-unknown-emscripten
@@ -319,13 +326,15 @@ jobs:
319326
320327
# check with no features
321328
cargo --locked clippy --target ${{ matrix.target }} ${{ matrix.extra-flags }} -p wgpu-types --no-default-features
329+
cargo --locked clippy --target ${{ matrix.target }} ${{ matrix.extra-flags }} -p naga-types --no-default-features
322330
cargo --locked clippy --target ${{ matrix.target }} ${{ matrix.extra-flags }} -p naga --no-default-features
323331
cargo --locked clippy --target ${{ matrix.target }} ${{ matrix.extra-flags }} -p wgpu-hal --no-default-features
324332
cargo --locked clippy --target ${{ matrix.target }} ${{ matrix.extra-flags }} -p wgpu --no-default-features
325333
326334
# Check with all compatible features
327335
cargo --locked clippy --target ${{ matrix.target }} ${{ matrix.extra-flags }} -p wgpu-types --no-default-features --features strict_asserts,fragile-send-sync-non-atomic-wasm,serde,counters
328-
cargo --locked clippy --target ${{ matrix.target }} ${{ matrix.extra-flags }} -p naga --no-default-features --features dot-out,spv-in,spv-out
336+
cargo --locked clippy --target ${{ matrix.target }} ${{ matrix.extra-flags }} -p naga-types --no-default-features --features serialize,deserialize
337+
cargo --locked clippy --target ${{ matrix.target }} ${{ matrix.extra-flags }} -p naga --no-default-features --features dot-out,spv-in,spv-out,glsl-out,msl-out,serialize,deserialize,wgsl-in,wgsl-out,hlsl-out
329338
cargo --locked clippy --target ${{ matrix.target }} ${{ matrix.extra-flags }} -p wgpu-hal --no-default-features --features fragile-send-sync-non-atomic-wasm
330339
cargo --locked clippy --target ${{ matrix.target }} ${{ matrix.extra-flags }} -p wgpu --no-default-features --features serde
331340
@@ -835,15 +844,17 @@ jobs:
835844
rustup override set ${{ env.REPO_MSRV }}
836845
cargo -V
837846
847+
# NOTE: Keep this above the others, because this will fail if there are _any_ changes to
848+
# files, even ones this step doesn't modify.
838849
- name: "Format `**/*.{md,js,html,yml}` files"
839-
run: npx --yes prettier@3.8.1 --check .
850+
run: "npx --yes prettier@3.8.1 --check --write . && git diff --exit-code"
840851

841852
- name: Run `cargo fmt`
842853
run: |
843854
cargo --locked fmt -- --check
844855
845856
- name: Install Tombi
846-
uses: tombi-toml/setup-tombi@v1.1.3
857+
uses: tombi-toml/setup-tombi@v1.2.0
847858
with:
848859
version: "1.1.3"
849860

.github/workflows/cts.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ env:
2424
RUST_BACKTRACE: full
2525
RUSTFLAGS: -D warnings
2626
RUSTDOCFLAGS: -D warnings
27-
DENO_WEBGPU_STRICT_COMPLIANCE: 1
2827

2928
#
3029
# Runtime configuration

CHANGELOG.md

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,10 +68,19 @@ By @beicause in [#9553](https://github.com/gfx-rs/wgpu/pull/9553).
6868

6969
### Added/New Features
7070

71+
#### General
72+
73+
- Support the `wasm64-unknown-unknown` target for the web backend. Building for wasm64 requires a nightly toolchain with `-Z build-std=std,panic_abort`. By @nickbabcock in [#9836](https://github.com/gfx-rs/wgpu/pull/9836).
74+
- `wgpu-core` now exposes a `validate_device_descriptor` function that validates a device descriptor as `request_device` would. This may be useful in conjunction with `create_device_from_hal`. By @andyleiserson in [#9967](https://github.com/gfx-rs/wgpu/pull/9967).
75+
7176
#### Hal
7277

7378
- Add `BufferBinding::buffer`, a public read accessor for the bound buffer, which was previously inaccessible to out-of-tree `wgpu_hal::Api` implementations. By @danlehmann in [#9820](https://github.com/gfx-rs/wgpu/pull/9820).
7479

80+
#### Metal
81+
82+
- Fix Naga's Metal backend crashing when a storage texture was used as a function argument. By @ErichDonGubler in [#9867](https://github.com/gfx-rs/wgpu/pull/9867).
83+
7584
#### GLES
7685

7786
- Add ANGLE as an opt-in OpenGL backend on Windows via `cfg(windows_angle)`, while keeping the `angle` feature for ANGLE on macOS/iOS. By @csmoe in [#9422](https://github.com/gfx-rs/wgpu/pull/9422).
@@ -81,6 +90,10 @@ By @beicause in [#9553](https://github.com/gfx-rs/wgpu/pull/9553).
8190
#### General
8291

8392
- Allow `set_immediates` before `set_pipeline` by deferring actual setting of immediates to draw/dispatch call time. By @beicause in [#9597](https://github.com/gfx-rs/wgpu/pull/9597).
93+
- Validate pipeline layout `immediate_size` and fix its calculation when there are multiple immediate variables. Now it must be >= required size of the shader entry point. By @beicause in [#9711](https://github.com/gfx-rs/wgpu/pull/9711).
94+
- [`immediate_address_space`](https://www.w3.org/TR/WGSL/#language_extension-immediate_address_space) WGSL language extension is implemented. By @beicause in [#9711](https://github.com/gfx-rs/wgpu/pull/9711).
95+
- `TextureFormat::is_srgb()` has been renamed to `TextureFormat::has_srgb_suffix()` to clarify its function. By @kpreid in [#9758](https://github.com/gfx-rs/wgpu/pull/9758).
96+
- Remove the never-constructed `CreateBlasError::InvalidAabbStride` variant. `create_blas` takes no stride, so it could never be produced; AABB stride is validated at build time as `BuildAccelerationStructureError::InvalidAabbStride`. By @mstampfli in [#9935](https://github.com/gfx-rs/wgpu/pull/9935).
8497

8598
#### naga
8699

@@ -91,11 +104,53 @@ By @beicause in [#9553](https://github.com/gfx-rs/wgpu/pull/9553).
91104
#### General
92105

93106
- Zero-initialize padding (if any) at the end of a buffer allocation. This was application-visible in rare cases on Vulkan when a shader read beyond the valid range of a vertex buffer. By @andyleiserson in [#9791](https://github.com/gfx-rs/wgpu/pull/9791).
107+
- Fix required immediate slots calculation and remove `naga::valid::FunctionInfo::immediate_slots_used`. By @beicause in [#9725](https://github.com/gfx-rs/wgpu/pull/9725).
108+
- Fix `PendingSubmission` releasing its lock guards out of stacking order, which tripped `--cfg wgpu_validate_locks` on any submission. By @AdrianEddy in [#9960](https://github.com/gfx-rs/wgpu/pull/9960).
109+
110+
#### naga
111+
112+
- Fix panics when shader `var<immediate>` size is larger than 256 bytes. By @beicause in [#9725](https://github.com/gfx-rs/wgpu/pull/9725).
113+
- Fix a panic in the SPIR-V frontend when a subgroup collective operation (e.g. `OpGroupNonUniformUMin`) or `OpGroupNonUniformBallot` used an argument whose value needed to be spilled to a temporary variable, such as when the argument was computed inside a loop. By @nazar-pc in [#9957](https://github.com/gfx-rs/wgpu/issues/9957).
114+
115+
#### Validation
116+
117+
- Validate that the arguments are within the indirect buffer when encoding an indirect draw to a render bundle. Moves some indirect draw errors from `RenderPassErrorInner` to `RenderCommandError`. By @andyleiserson in [#9871](https://github.com/gfx-rs/wgpu/pull/9871).
118+
- When creating render pipelines, validate that a corresponding shader output is present for each color attachment with non-zero write mask, and that shader output includes alpha when the blend operation uses source alpha. By @andyleiserson in [#9939](https://github.com/gfx-rs/wgpu/pull/9939).
119+
120+
#### Naga
121+
122+
- Replace embedded NUL characters with `?` when writing debug strings to SPIR-V. By @andyleiserson in [#9904](https://github.com/gfx-rs/wgpu/pull/9904).
123+
- Fix invalid HLSL generated for `textureSampleLevel` with non-2D textures. By @mvanhorn in [#9717](https://github.com/gfx-rs/wgpu/issues/9717).
124+
125+
#### Vulkan
126+
127+
- Add OpenHarmony surface support via `VK_OHOS_surface`. Previously the Vulkan backend could not create a surface on OpenHarmony, leaving GLES as the only usable backend. By @ozongzi in [#9908](https://github.com/gfx-rs/wgpu/pull/9908).
128+
- Stop passing an un-waited fence to `vkAcquireNextImageKHR` on non-Windows platforms, which triggered `VUID-vkAcquireNextImageKHR-fence-10066` validation errors every frame since v30.0.0. By @ErichDonGubler in [#9855](https://github.com/gfx-rs/wgpu/issues/9855).
94129

95130
#### GLES
96131

97132
- Fixed signed integer `%` (and `%=`) returning the wrong result for negative operands in the GLSL (OpenGL/GLES) backend, e.g. `-1 % 768` yielding `255` instead of `-1`. GLSL's `%` is undefined when either operand is negative, so signed remainder is now lowered as `a - b * (a / b)`, matching the SPIR-V, HLSL, and Metal backends. By @mstampfli in [#9687](https://github.com/gfx-rs/wgpu/pull/9687).
98133

134+
#### WebGPU
135+
136+
- Recognize `GPUInternalError` when converting a WebGPU error, mapping it to `Error::Internal` instead of panicking with "Unexpected error". By @evilpies in [#9919](https://github.com/gfx-rs/wgpu/pull/9919).
137+
138+
### Documentation
139+
140+
#### General
141+
142+
- Fix the `BlasAabbGeometry` docs to refer to the `stride` field instead of a nonexistent `size.stride`, and document the packed AABB buffer layout (each primitive a minimum then a maximum corner, two consecutive `vec3<f32>`). By @mstampfli in [#9934](https://github.com/gfx-rs/wgpu/pull/9934).
143+
144+
### Dependency Updates
145+
146+
#### General
147+
148+
- Raise the minimum version of the `wasm-bindgen` family to the earliest releases that support wasm64. By @nickbabcock in [#9836](https://github.com/gfx-rs/wgpu/pull/9836).
149+
150+
#### GLES
151+
152+
- Update `glow` to 0.18 for wasm64 support. By @nickbabcock in [#9836](https://github.com/gfx-rs/wgpu/pull/9836).
153+
99154
## v30.0.0 (2026-07-01)
100155

101156
### Major changes
@@ -360,6 +415,7 @@ By @inner-daemons in [#9434](https://github.com/gfx-rs/wgpu/pull/9434).
360415

361416
#### Vulkan
362417

418+
- Use the imported queue family's supported shader stages when building buffer, texture, and acceleration structure barriers for raw Vulkan devices. By @ruihe774 in [#9594](https://github.com/gfx-rs/wgpu/pull/9594).
363419
- Fixed `SHADER_I16` not enabling `storage_buffer16_bit_access` or `storage_input_output16`, causing Vulkan validation errors when using 16-bit integers in buffers. By @JMS55 in [#9412](https://github.com/gfx-rs/wgpu/pull/9412).
364420
- Fixed validation errors when frames take longer than the specified swapchain acquire timeout. By @atlv24 in [#9405](https://github.com/gfx-rs/wgpu/pull/9405).
365421
- Fixed limits on Mesa's Honeykrisp / Asahi Linux. By @im-0 in [#9393](https://github.com/gfx-rs/wgpu/pull/9393).

Cargo.lock

Lines changed: 16 additions & 23 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)