Skip to content

merge queue: checking #10430 on trunk (0c7c121), stacked on #10719 and #10630 - #10740

Closed
mergify[bot] wants to merge 14 commits into
trunkfrom
mergify/merge-queue/af8e25aae3
Closed

mergify[bot] wants to merge 14 commits into
trunkfrom
mergify/merge-queue/af8e25aae3

Conversation

@mergify

@mergify mergify Bot commented Oct 26, 2026 •

Copy link
Copy Markdown

Note

This is a merge queue draft opened by Mergify. Nobody needs to act on it.
Mergify opened it for batch printed-kouign-4bh82j of the rebase queue, to test #10430 before it merges into trunk.

What this draft tests

Mergify checks that #10430 still passes CI once combined with everything queued ahead of it. CI runs on this draft's code, built in this order:

  1. trunk at 0c7c121
  2. the 2 pull requests queued ahead of this batch, listed below, which bring the tip to cb23ca4
  3. #10430, the pull request of this batch

The check is speculative: it assumes the pull requests ahead will merge, so it starts without waiting for them.

✨ Where it stands: closed

Pull request #10630 ahead in the queue was removed (reason: checks interrupted).

Follow the rebase queue in the dashboard

What happens next

  • Mergify closes this draft.
  • #10430 is still in the queue.

Tip

A red check is not necessarily caused by this batch. These checks run on a tip that also carries the commits of the 2 pull requests ahead, so a failure here can come from them as much as from #10430. See only this batch's changes.

Queued ahead of this batch

These pull requests entered the queue before this batch and are not part of it.

Metadata for CI tooling, read by mergify ci
---
all_scopes: false
checking_base_sha: cb23ca4ee0eef55230325c4f03a096967a9b873a
previous_check_retries: []
previous_failed_batches: []
pull_requests:
  - number: 10430
    scopes: []
scopes: []
...
Required conditions of queue rule rebase for merge
  • any of [🛡 GitHub branch protection]:
    • check-neutral = Clippy MacOS aarch64
    • check-skipped = Clippy MacOS aarch64
    • check-success = Clippy MacOS aarch64
  • any of [🛡 GitHub branch protection]:
    • check-neutral = Clippy MacOS x86_64
    • check-skipped = Clippy MacOS x86_64
    • check-success = Clippy MacOS x86_64
  • any of [🛡 GitHub branch protection]:
    • check-neutral = Clippy Android aarch64
    • check-skipped = Clippy Android aarch64
    • check-success = Clippy Android aarch64
  • any of [🛡 GitHub branch protection]:
    • check-neutral = Clippy IOS aarch64
    • check-skipped = Clippy IOS aarch64
    • check-success = Clippy IOS aarch64
  • any of [🛡 GitHub branch protection]:
    • check-neutral = Clippy Linux aarch64
    • check-skipped = Clippy Linux aarch64
    • check-success = Clippy Linux aarch64
  • any of [🛡 GitHub branch protection]:
    • check-neutral = Clippy Linux x86_64
    • check-skipped = Clippy Linux x86_64
    • check-success = Clippy Linux x86_64
  • any of [🛡 GitHub branch protection]:
    • check-neutral = Clippy WebAssembly
    • check-skipped = Clippy WebAssembly
    • check-success = Clippy WebAssembly
  • any of [🛡 GitHub branch protection]:
    • check-neutral = Clippy Windows x86_64
    • check-skipped = Clippy Windows x86_64
    • check-success = Clippy Windows x86_64
  • any of [🛡 GitHub branch protection]:
    • check-neutral = Clippy cts_runner
    • check-skipped = Clippy cts_runner
    • check-success = Clippy cts_runner
  • any of [🛡 GitHub branch protection]:
    • check-neutral = Doctest
    • check-skipped = Doctest
    • check-success = Doctest
  • any of [🛡 GitHub branch protection]:
    • check-neutral = Test Windows x86_64
    • check-skipped = Test Windows x86_64
    • check-success = Test Windows x86_64
  • any of [🛡 GitHub branch protection]:
    • check-neutral = Clippy Emscripten
    • check-skipped = Clippy Emscripten
    • check-success = Clippy Emscripten
  • any of [🛡 GitHub branch protection]:
    • check-neutral = Test WebAssembly
    • check-skipped = Test WebAssembly
    • check-success = Test WebAssembly
  • any of [🛡 GitHub branch protection]:
    • check-neutral = cargo-deny
    • check-skipped = cargo-deny
    • check-success = cargo-deny
  • any of [🛡 GitHub branch protection]:
    • check-neutral = Validate: HLSL
    • check-skipped = Validate: HLSL
    • check-success = Validate: HLSL
  • any of [🛡 GitHub branch protection]:
    • check-neutral = Validate: MSL
    • check-skipped = Validate: MSL
    • check-success = Validate: MSL
  • any of [🛡 GitHub branch protection]:
    • check-neutral = Validate: SPIR-V/GLSL/DOT/WGSL
    • check-skipped = Validate: SPIR-V/GLSL/DOT/WGSL
    • check-success = Validate: SPIR-V/GLSL/DOT/WGSL
  • any of [🛡 GitHub branch protection]:
    • check-neutral = Test Linux x86_64
    • check-skipped = Test Linux x86_64
    • check-success = Test Linux x86_64
  • any of [🛡 GitHub branch protection]:
    • check-neutral = Test Mac aarch64
    • check-skipped = Test Mac aarch64
    • check-success = Test Mac aarch64
  • any of [🛡 GitHub branch protection]:
    • check-neutral = Format & Typos
    • check-skipped = Format & Typos
    • check-success = Format & Typos
  • any of [🛡 GitHub branch protection]:
    • check-neutral = Clippy Windows aarch64
    • check-skipped = Clippy Windows aarch64
    • check-success = Clippy Windows aarch64
  • any of [🛡 GitHub branch protection]:
    • check-neutral = Clippy VisionOS aarch64
    • check-skipped = Clippy VisionOS aarch64
    • check-success = Clippy VisionOS aarch64
  • any of [🛡 GitHub branch protection]:
    • check-neutral = 01-hello-compute
    • check-skipped = 01-hello-compute
    • check-success = 01-hello-compute
  • any of [🛡 GitHub branch protection]:
    • check-neutral = 02-hello-window
    • check-skipped = 02-hello-window
    • check-success = 02-hello-window
  • any of [🛡 GitHub branch protection]:
    • check-neutral = Clippy OpenHarmony aarch64
    • check-skipped = Clippy OpenHarmony aarch64
    • check-success = Clippy OpenHarmony aarch64
  • any of [🛡 GitHub branch protection]:
    • check-neutral = Clippy Linux ppc32
    • check-skipped = Clippy Linux ppc32
    • check-success = Clippy Linux ppc32
  • any of [🛡 GitHub branch protection]:
    • check-neutral = Clippy WebAssembly Core 1.0
    • check-skipped = Clippy WebAssembly Core 1.0
    • check-success = Clippy WebAssembly Core 1.0
  • any of [🛡 GitHub branch protection]:
    • check-neutral = Clippy Android ARMv7
    • check-skipped = Clippy Android ARMv7
    • check-success = Clippy Android ARMv7
  • any of [🛡 GitHub branch protection]:
    • check-neutral = Clippy Android x86_64
    • check-skipped = Clippy Android x86_64
    • check-success = Clippy Android x86_64
  • any of [🛡 GitHub branch protection]:
    • check-neutral = Clippy FreeBSD x86_64
    • check-skipped = Clippy FreeBSD x86_64
    • check-success = Clippy FreeBSD x86_64
  • any of [🛡 GitHub branch protection]:
    • check-neutral = API Operation Linux x86_64
    • check-skipped = API Operation Linux x86_64
    • check-success = API Operation Linux x86_64
  • any of [🛡 GitHub branch protection]:
    • check-neutral = API Operation Mac aarch64
    • check-skipped = API Operation Mac aarch64
    • check-success = API Operation Mac aarch64
  • any of [🛡 GitHub branch protection]:
    • check-neutral = API Operation Windows x86_64
    • check-skipped = API Operation Windows x86_64
    • check-success = API Operation Windows x86_64
  • any of [🛡 GitHub branch protection]:
    • check-neutral = API Validation Linux x86_64
    • check-skipped = API Validation Linux x86_64
    • check-success = API Validation Linux x86_64
  • any of [🛡 GitHub branch protection]:
    • check-neutral = API Validation Mac aarch64
    • check-skipped = API Validation Mac aarch64
    • check-success = API Validation Mac aarch64
  • any of [🛡 GitHub branch protection]:
    • check-neutral = API Validation Windows x86_64
    • check-skipped = API Validation Windows x86_64
    • check-success = API Validation Windows x86_64
  • any of [🛡 GitHub branch protection]:
    • check-neutral = Other Linux x86_64
    • check-skipped = Other Linux x86_64
    • check-success = Other Linux x86_64
  • any of [🛡 GitHub branch protection]:
    • check-neutral = Other Mac aarch64
    • check-skipped = Other Mac aarch64
    • check-success = Other Mac aarch64
  • any of [🛡 GitHub branch protection]:
    • check-neutral = Other Windows x86_64
    • check-skipped = Other Windows x86_64
    • check-success = Other Windows x86_64
  • any of [🛡 GitHub branch protection]:
    • check-neutral = Core MSRV Check MacOS x86_64
    • check-skipped = Core MSRV Check MacOS x86_64
    • check-success = Core MSRV Check MacOS x86_64
  • any of [🛡 GitHub branch protection]:
    • check-neutral = Core MSRV Check Linux x86_64
    • check-skipped = Core MSRV Check Linux x86_64
    • check-success = Core MSRV Check Linux x86_64
  • any of [🛡 GitHub branch protection]:
    • check-neutral = Core MSRV Check Windows x86_64
    • check-skipped = Core MSRV Check Windows x86_64
    • check-success = Core MSRV Check Windows x86_64
  • any of [🛡 GitHub branch protection]:
    • check-neutral = wgpu MSRV Check MacOS x86_64
    • check-skipped = wgpu MSRV Check MacOS x86_64
    • check-success = wgpu MSRV Check MacOS x86_64
  • any of [🛡 GitHub branch protection]:
    • check-neutral = wgpu MSRV Check Linux x86_64
    • check-skipped = wgpu MSRV Check Linux x86_64
    • check-success = wgpu MSRV Check Linux x86_64
  • any of [🛡 GitHub branch protection]:
    • check-neutral = wgpu MSRV Check WebAssembly
    • check-skipped = wgpu MSRV Check WebAssembly
    • check-success = wgpu MSRV Check WebAssembly
  • any of [🛡 GitHub branch protection]:
    • check-neutral = wgpu MSRV Check Windows x86_64
    • check-skipped = wgpu MSRV Check Windows x86_64
    • check-success = wgpu MSRV Check Windows x86_64
  • any of [🛡 GitHub branch protection]:
    • check-neutral = Miri (limited scope)
    • check-skipped = Miri (limited scope)
    • check-success = Miri (limited scope)
  • any of [🛡 GitHub branch protection]:
    • check-neutral = MSRV Minimal Versions
    • check-skipped = MSRV Minimal Versions
    • check-success = MSRV Minimal Versions
  • any of [🛡 GitHub branch protection]:
    • check-neutral = Validate Shaders: Dota2
    • check-skipped = Validate Shaders: Dota2
    • check-success = Validate Shaders: Dota2
  • any of [🛡 GitHub branch protection]:
    • check-neutral = Validate Shaders: Sascha Willems Vulkan Tutorial
    • check-skipped = Validate Shaders: Sascha Willems Vulkan Tutorial
    • check-success = Validate Shaders: Sascha Willems Vulkan Tutorial
  • any of [🛡 GitHub branch protection]:
    • check-neutral = Validate Shaders: dneto0 spirv-samples
    • check-skipped = Validate Shaders: dneto0 spirv-samples
    • check-success = Validate Shaders: dneto0 spirv-samples
  • any of [🛡 GitHub branch protection]:
    • check-neutral = publish
    • check-skipped = publish
    • check-success = publish
  • any of [🛡 GitHub branch protection]:
    • check-neutral = build
    • check-skipped = build
    • check-success = build
  • any of [🛡 GitHub branch protection]:
    • check-neutral = 03-hdr-surface
    • check-skipped = 03-hdr-surface
    • check-success = 03-hdr-surface
  • any of [🛡 GitHub branch protection]:
    • check-neutral = custom-backend
    • check-skipped = custom-backend
    • check-success = custom-backend
  • any of [🛡 GitHub branch protection]:
    • check-neutral = Clippy NetBSD x86_64
    • check-skipped = Clippy NetBSD x86_64
    • check-success = Clippy NetBSD x86_64
  • any of [🛡 GitHub branch protection]:
    • check-neutral = Clippy WebAssembly 64-bit
    • check-skipped = Clippy WebAssembly 64-bit
    • check-success = Clippy WebAssembly 64-bit
  • any of [🛡 GitHub branch protection]:
    • check-neutral = Zizmor
    • check-skipped = Zizmor
    • check-success = Zizmor
  • any of [🛡 GitHub branch protection]:
    • check-neutral = zizmor
    • check-skipped = zizmor
    • check-success = zizmor
  • github-review-approved [🛡 GitHub branch protection]
Required conditions to stay in the queue
  • github-review-approved [🛡 GitHub branch protection]
  • label = "merge: rebase"
  • any of [🛡 GitHub branch protection]:
    • check-success = Clippy MacOS aarch64
    • check-neutral = Clippy MacOS aarch64
    • check-skipped = Clippy MacOS aarch64
  • any of [🛡 GitHub branch protection]:
    • check-success = Clippy MacOS x86_64
    • check-neutral = Clippy MacOS x86_64
    • check-skipped = Clippy MacOS x86_64
  • any of [🛡 GitHub branch protection]:
    • check-success = Clippy Android aarch64
    • check-neutral = Clippy Android aarch64
    • check-skipped = Clippy Android aarch64
  • any of [🛡 GitHub branch protection]:
    • check-success = Clippy IOS aarch64
    • check-neutral = Clippy IOS aarch64
    • check-skipped = Clippy IOS aarch64
  • any of [🛡 GitHub branch protection]:
    • check-success = Clippy Linux aarch64
    • check-neutral = Clippy Linux aarch64
    • check-skipped = Clippy Linux aarch64
  • any of [🛡 GitHub branch protection]:
    • check-success = Clippy Linux x86_64
    • check-neutral = Clippy Linux x86_64
    • check-skipped = Clippy Linux x86_64
  • any of [🛡 GitHub branch protection]:
    • check-success = Clippy WebAssembly
    • check-neutral = Clippy WebAssembly
    • check-skipped = Clippy WebAssembly
  • any of [🛡 GitHub branch protection]:
    • check-success = Clippy Windows x86_64
    • check-neutral = Clippy Windows x86_64
    • check-skipped = Clippy Windows x86_64
  • any of [🛡 GitHub branch protection]:
    • check-success = Clippy cts_runner
    • check-neutral = Clippy cts_runner
    • check-skipped = Clippy cts_runner
  • any of [🛡 GitHub branch protection]:
    • check-success = Doctest
    • check-neutral = Doctest
    • check-skipped = Doctest
  • any of [🛡 GitHub branch protection]:
    • check-success = Test Windows x86_64
    • check-neutral = Test Windows x86_64
    • check-skipped = Test Windows x86_64
  • any of [🛡 GitHub branch protection]:
    • check-success = Clippy Emscripten
    • check-neutral = Clippy Emscripten
    • check-skipped = Clippy Emscripten
  • any of [🛡 GitHub branch protection]:
    • check-success = Test WebAssembly
    • check-neutral = Test WebAssembly
    • check-skipped = Test WebAssembly
  • any of [🛡 GitHub branch protection]:
    • check-success = cargo-deny
    • check-neutral = cargo-deny
    • check-skipped = cargo-deny
  • any of [🛡 GitHub branch protection]:
    • check-success = Validate: HLSL
    • check-neutral = Validate: HLSL
    • check-skipped = Validate: HLSL
  • any of [🛡 GitHub branch protection]:
    • check-success = Validate: MSL
    • check-neutral = Validate: MSL
    • check-skipped = Validate: MSL
  • any of [🛡 GitHub branch protection]:
    • check-success = Validate: SPIR-V/GLSL/DOT/WGSL
    • check-neutral = Validate: SPIR-V/GLSL/DOT/WGSL
    • check-skipped = Validate: SPIR-V/GLSL/DOT/WGSL
  • any of [🛡 GitHub branch protection]:
    • check-success = Test Linux x86_64
    • check-neutral = Test Linux x86_64
    • check-skipped = Test Linux x86_64
  • any of [🛡 GitHub branch protection]:
    • check-success = Test Mac aarch64
    • check-neutral = Test Mac aarch64
    • check-skipped = Test Mac aarch64
  • any of [🛡 GitHub branch protection]:
    • check-success = Format & Typos
    • check-neutral = Format & Typos
    • check-skipped = Format & Typos
  • any of [🛡 GitHub branch protection]:
    • check-success = Clippy Windows aarch64
    • check-neutral = Clippy Windows aarch64
    • check-skipped = Clippy Windows aarch64
  • any of [🛡 GitHub branch protection]:
    • check-success = Clippy VisionOS aarch64
    • check-neutral = Clippy VisionOS aarch64
    • check-skipped = Clippy VisionOS aarch64
  • any of [🛡 GitHub branch protection]:
    • check-success = 01-hello-compute
    • check-neutral = 01-hello-compute
    • check-skipped = 01-hello-compute
  • any of [🛡 GitHub branch protection]:
    • check-success = 02-hello-window
    • check-neutral = 02-hello-window
    • check-skipped = 02-hello-window
  • any of [🛡 GitHub branch protection]:
    • check-success = Clippy OpenHarmony aarch64
    • check-neutral = Clippy OpenHarmony aarch64
    • check-skipped = Clippy OpenHarmony aarch64
  • any of [🛡 GitHub branch protection]:
    • check-success = Clippy Linux ppc32
    • check-neutral = Clippy Linux ppc32
    • check-skipped = Clippy Linux ppc32
  • any of [🛡 GitHub branch protection]:
    • check-success = Clippy WebAssembly Core 1.0
    • check-neutral = Clippy WebAssembly Core 1.0
    • check-skipped = Clippy WebAssembly Core 1.0
  • any of [🛡 GitHub branch protection]:
    • check-success = Clippy Android ARMv7
    • check-neutral = Clippy Android ARMv7
    • check-skipped = Clippy Android ARMv7
  • any of [🛡 GitHub branch protection]:
    • check-success = Clippy Android x86_64
    • check-neutral = Clippy Android x86_64
    • check-skipped = Clippy Android x86_64
  • any of [🛡 GitHub branch protection]:
    • check-success = Clippy FreeBSD x86_64
    • check-neutral = Clippy FreeBSD x86_64
    • check-skipped = Clippy FreeBSD x86_64
  • any of [🛡 GitHub branch protection]:
    • check-success = API Operation Linux x86_64
    • check-neutral = API Operation Linux x86_64
    • check-skipped = API Operation Linux x86_64
  • any of [🛡 GitHub branch protection]:
    • check-success = API Operation Mac aarch64
    • check-neutral = API Operation Mac aarch64
    • check-skipped = API Operation Mac aarch64
  • any of [🛡 GitHub branch protection]:
    • check-success = API Operation Windows x86_64
    • check-neutral = API Operation Windows x86_64
    • check-skipped = API Operation Windows x86_64
  • any of [🛡 GitHub branch protection]:
    • check-success = API Validation Linux x86_64
    • check-neutral = API Validation Linux x86_64
    • check-skipped = API Validation Linux x86_64
  • any of [🛡 GitHub branch protection]:
    • check-success = API Validation Mac aarch64
    • check-neutral = API Validation Mac aarch64
    • check-skipped = API Validation Mac aarch64
  • any of [🛡 GitHub branch protection]:
    • check-success = API Validation Windows x86_64
    • check-neutral = API Validation Windows x86_64
    • check-skipped = API Validation Windows x86_64
  • any of [🛡 GitHub branch protection]:
    • check-success = Other Linux x86_64
    • check-neutral = Other Linux x86_64
    • check-skipped = Other Linux x86_64
  • any of [🛡 GitHub branch protection]:
    • check-success = Other Mac aarch64
    • check-neutral = Other Mac aarch64
    • check-skipped = Other Mac aarch64
  • any of [🛡 GitHub branch protection]:
    • check-success = Other Windows x86_64
    • check-neutral = Other Windows x86_64
    • check-skipped = Other Windows x86_64
  • any of [🛡 GitHub branch protection]:
    • check-success = Core MSRV Check MacOS x86_64
    • check-neutral = Core MSRV Check MacOS x86_64
    • check-skipped = Core MSRV Check MacOS x86_64
  • any of [🛡 GitHub branch protection]:
    • check-success = Core MSRV Check Linux x86_64
    • check-neutral = Core MSRV Check Linux x86_64
    • check-skipped = Core MSRV Check Linux x86_64
  • any of [🛡 GitHub branch protection]:
    • check-success = Core MSRV Check Windows x86_64
    • check-neutral = Core MSRV Check Windows x86_64
    • check-skipped = Core MSRV Check Windows x86_64
  • any of [🛡 GitHub branch protection]:
    • check-success = wgpu MSRV Check MacOS x86_64
    • check-neutral = wgpu MSRV Check MacOS x86_64
    • check-skipped = wgpu MSRV Check MacOS x86_64
  • any of [🛡 GitHub branch protection]:
    • check-success = wgpu MSRV Check Linux x86_64
    • check-neutral = wgpu MSRV Check Linux x86_64
    • check-skipped = wgpu MSRV Check Linux x86_64
  • any of [🛡 GitHub branch protection]:
    • check-success = wgpu MSRV Check WebAssembly
    • check-neutral = wgpu MSRV Check WebAssembly
    • check-skipped = wgpu MSRV Check WebAssembly
  • any of [🛡 GitHub branch protection]:
    • check-success = wgpu MSRV Check Windows x86_64
    • check-neutral = wgpu MSRV Check Windows x86_64
    • check-skipped = wgpu MSRV Check Windows x86_64
  • any of [🛡 GitHub branch protection]:
    • check-success = Miri (limited scope)
    • check-neutral = Miri (limited scope)
    • check-skipped = Miri (limited scope)
  • any of [🛡 GitHub branch protection]:
    • check-success = MSRV Minimal Versions
    • check-neutral = MSRV Minimal Versions
    • check-skipped = MSRV Minimal Versions
  • any of [🛡 GitHub branch protection]:
    • check-success = Validate Shaders: Dota2
    • check-neutral = Validate Shaders: Dota2
    • check-skipped = Validate Shaders: Dota2
  • any of [🛡 GitHub branch protection]:
    • check-success = Validate Shaders: Sascha Willems Vulkan Tutorial
    • check-neutral = Validate Shaders: Sascha Willems Vulkan Tutorial
    • check-skipped = Validate Shaders: Sascha Willems Vulkan Tutorial
  • any of [🛡 GitHub branch protection]:
    • check-success = Validate Shaders: dneto0 spirv-samples
    • check-neutral = Validate Shaders: dneto0 spirv-samples
    • check-skipped = Validate Shaders: dneto0 spirv-samples
  • any of [🛡 GitHub branch protection]:
    • check-success = publish
    • check-neutral = publish
    • check-skipped = publish
  • any of [🛡 GitHub branch protection]:
    • check-success = build
    • check-neutral = build
    • check-skipped = build
  • any of [🛡 GitHub branch protection]:
    • check-success = 03-hdr-surface
    • check-neutral = 03-hdr-surface
    • check-skipped = 03-hdr-surface
  • any of [🛡 GitHub branch protection]:
    • check-success = custom-backend
    • check-neutral = custom-backend
    • check-skipped = custom-backend
  • any of [🛡 GitHub branch protection]:
    • check-success = Clippy NetBSD x86_64
    • check-neutral = Clippy NetBSD x86_64
    • check-skipped = Clippy NetBSD x86_64
  • any of [🛡 GitHub branch protection]:
    • check-success = Clippy WebAssembly 64-bit
    • check-neutral = Clippy WebAssembly 64-bit
    • check-skipped = Clippy WebAssembly 64-bit
  • any of [🛡 GitHub branch protection]:
    • check-success = Zizmor
    • check-neutral = Zizmor
    • check-skipped = Zizmor
  • any of [🛡 GitHub branch protection]:
    • check-success = zizmor
    • check-neutral = zizmor
    • check-skipped = zizmor

samoylenkodmitry and others added 14 commits October 15, 2026 04:29
Rename the `ShaderMetaData::Interface` variant to `NagaModule`,
and make it a struct-like variant.

Delete `ShaderMetaData::interface`, and update its call sites to use a
`match` expression directly on the enum instead. This makes the use
sites clearer, by making it apparent which style of module we're
processing.
Slightly reorder the sites that consume `ShaderMetaData` values, so
that the code for the `NagaModule` and `Passthrough` cases can be
gathered into `match` statements.
Move the definitions of `ShaderMetaData` and `PassthroughInterface`
from `wgpu_core::validation`, which does not use them, to
`wgpu_core::pipeline`, where they are used in `ShaderModuleState`, and
created.
In `wgpu_core::pipeline`, delete `ShaderMetaData` and turn
`ShaderModuleState` into the equivalent enum, giving both the
`NagaModule` and `Passthrough` variants their own `raw` field.

Arrange for uses of `ShaderModuleState` to extract the raw `wgpu_hal`
module in the `match` expression that handles the two variants.

In isolation, this change looks like mere rearrangement, not a
cleanup, but hopefully either way it's easy to see that it has no
effect on behavior. Subsequent commits will remove `raw` from the
`NagaModule` variant; this refactor will allow that to affect only the
`NagaModule` `match` arms, leaving the passthrough code unaffected.
In `wgpu_core/src/device/resource.rs`, in the function
`Device::create_render_pipeline_or_error_inner`, remove the leading
`_` from the following local variables' names, and simply leave them
uninitialized in their declaration:

- `_vertex_entry_point_name`
- `_task_entry_point_name`
- `_mesh_entry_point_name`

Rust is smart enough to see that these are always initialized before
they are used, and thus don't need to be initialized at their
declaration.
Gather the state that `Interface::check_stage` accumulates across all
of a pipeline's stages (the bind group layouts, minimum binding sizes,
and immediate data usage) into a new `PipelineResources` struct, which
`check_stage` takes by `&mut`.

Remove `immediates` from `StageIo`, so that `StageIo` holds only the
information one stage passes to the next.

Use `layout` to refer to the `BindingLayoutSource`, not `layouts`,
since that value describes a single pipeline layout. In the derived
case, it does hold an array of bind group layouts, but that is only
one variant; the value's name should make sense regardless which
variant is present.
Introduce `StageCompiler`, in the new `wgpu_core::device::stage_compiler`
module, which performs the per-stage work that
`create_compute_pipeline_or_error_inner` and
`create_render_pipeline_or_error_inner` previously repeated for each
stage: checking the shader module's validity and device, choosing
the entry point, checking the stage against the module's interface,
and tracking which stages were validated.

`StageCompiler::compile` returns a `CompiledStage`, which borrows the
module the stage should use, and records the entry point name. From
this we can build a `hal::ProgrammableStage` to use when creating the
hal pipeline.

Have `StageCompiler::compile` reject a passthrough stage immediately
if the pipeline's layout is being derived. `ImplicitLayoutError::Passthrough`
now names only that stage, rather than every passthrough stage in the
pipeline.

Remove `ImplicitLayoutError::ReflectionError`, along with the check
that reported it. The condition it was concerned with, deriving a
layout from a stage we couldn't reflect, is already rejected as
`ImplicitLayoutError::Passthrough`. The only way left to reach it was
a bug: for mesh pipelines without a fragment stage, it expected the
last stage to be a vertex stage, and so rejected them incorrectly.

In this commit, `StageCompiler` only does validation, but by the end
of this pull request, it will be compiling shader modules. Having its
name overstate its role for one commit seems clearer than introducing
everything in one commit and renaming it in the next. The comments,
however, are accurate in each commit.

This commit also changes compute pipelines to report errors in the
same way as render pipelines: an invalid shader module is now reported
as a `CreatePipelineError::Stage` error, and the shader module is
checked after the pipeline layout, not before.
The WebGPU specification requires pipeline creation to validate
properties of shader stages, like workgroup sizes, that may depend on
the values of pipeline-overridable constants. Previously, wgpu-core
validated stages using an `Interface` built from the module before
overrides were applied, with results contrary to spec. Override
processing was then carried out by `wgpu_hal`, after all validation
had supposedly been taken care of.

This commit has `create_shader_module` save the validated Naga module
instead of creating a `wgpu_hal` shader module. At pipeline creation
time, `StageCompiler::compile` now applies the stage's override values
with `process_overrides`, validates the stage using an `Interface`
built from the result, and, if that validation succeeds, returns a
`CompiledStage` holding the `wgpu_hal` `ShaderModule` created from it.
Dropping the `CompiledStage` destroys that module once the pipeline
has been created.

Since the override values have already been applied, we pass
`wgpu_hal` empty sets of constants for these modules.

Since the `naga::back::pipeline_constants` module is now used by
`wgpu_core` rather than `wgpu_hal` backends, it can't be conditionally
available based on Naga's backend features. Include it
unconditionally.

This change removes `Interface::finalize_entry_point_name`, since we
no longer build an `Interface` at shader module creation. Instead, we
choose entry points from the `naga::Module` directly.

Add new tests: `tests/tests/wgpu-validation/api/overrides.rs`

Fixes #9774.
@github-project-automation github-project-automation Bot moved this to To triage in Triage Oct 26, 2026
@mergify mergify Bot closed this Oct 26, 2026
@mergify
mergify Bot deleted the mergify/merge-queue/af8e25aae3 branch October 26, 2026 19:55
@github-project-automation github-project-automation Bot moved this from To triage to Done in Triage Oct 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

2 participants