Skip to content

[WebGPU] Upgrade Dawn to the latest - #32686

Merged
Edward Chen (edgchen1) merged 9 commits into
microsoft:mainfrom
mei1127:test917
Sep 24, 2026
Merged

Edward Chen (edgchen1) merged 9 commits into
microsoft:mainfrom
mei1127:test917

Conversation

@mei1127

@mei1127 May Mei (mei1127) commented Sep 18, 2026 •

Copy link
Copy Markdown
Contributor

Description
This patch updates Dawn to the latest version.

Motivation and Context
D3D12 XMX support for ORT-EP-WebGPU Python wheels will be added in another patch after the upgrade of Dawn.

Copilot AI balanced review requested due to automatic review settings September 18, 2026 02:35
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
There may be pipelines that require an authorized user to comment /azp run to run.

@mei1127

May Mei (mei1127) commented Sep 18, 2026 •

Copy link
Copy Markdown
Contributor Author

/run bots

@mei1127

Copy link
Copy Markdown
Contributor Author

PTAL, thanks! Jiajia Qin (@qjia7) Jie Chen (@jchen10)

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟑 Changes recommended

Update the governance manifest, correct the malformed patch hunk, and resolve the Windows DXIL packaging dependency.

Get a fresh assessment by requesting another Copilot review.

Pull request overview

Upgrades the bundled Dawn dependency for WebGPU and removes obsolete dxil.dll staging.

Changes:

  • Pins Dawn to v20260916.214021.
  • Refreshes the Dawn BinSkim patch.
  • Removes DXIL packaging from Windows Python, Node.js, Java, and WebGPU builds.
File summaries
File Summary
cmake/deps.txt Updates the Dawn archive and hash; the governance manifest also requires updating.
cmake/patches/dawn/dawn_binskim.patch Refreshes the BinSkim patch, but its hunk header is malformed.
cmake/onnxruntime_providers_webgpu.cmake Removes DXIL staging while downstream Windows packaging still expects the DLL.
cmake/onnxruntime_python.cmake Removes obsolete DXIL packaging.
cmake/onnxruntime_nodejs.cmake Removes obsolete Node.js DXIL packaging.
cmake/onnxruntime_java.cmake Removes obsolete Java DXIL packaging.
Review details

Suppressed comments (1)

cmake/deps.txt:62

  • Rolling the Dawn archive without updating cgmanifests/webgpu/cgmanifest.webgpu.json leaves the WebGPU Component Governance manifest on the old Dawn commit and dependency graph. The manifest's maintenance instructions require its root and Dawn-derived registrations to match cmake/deps.txt; otherwise NOTICE/component scans can report the wrong source (and the stale-pin validator cannot pass once its Dawn extraction is corrected). Please update/regenerate that manifest for v20260916.214021 in this change.
dawn;https://github.com/google/dawn/archive/refs/tags/v20260916.214021.zip;514e914f23a0787213c89eed879f74b5e275690d
  • Files reviewed: 6/6 changed files
  • Comments generated: 2
  • Review effort level: Lite (auto)

Note

Copilot is running an experiment and ran this review at Lite.


πŸ’‘ Configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread cmake/patches/dawn/dawn_binskim.patch Resolved
@qjia7

Jiajia Qin (qjia7) commented Sep 18, 2026 •

Copy link
Copy Markdown
Contributor

The request was received. Approve workflow runs. Thanks.

@mei1127

Copy link
Copy Markdown
Contributor Author

/run bots

@qjia7

Copy link
Copy Markdown
Contributor

The request was received. Approve workflow runs. Thanks.

@jchen10

Copy link
Copy Markdown
Contributor
  1. The delay-load test still copies dxil.dll
    onnxruntime/test/webgpu/delay_load/main.cc:66

  2. Component manifest not updated with the Dawn bump
    cgmanifests/webgpu/cgmanifest.webgpu.json:9 still pins ec7b457e5bb1fcec6f59733c4f3dd84d2f885a38
    The DXC entry at cgmanifests/webgpu/cgmanifest.webgpu.json#L29 still says the plugin redistributes dxil.dll

@mei1127

Copy link
Copy Markdown
Contributor Author

/run bots

@qjia7

Copy link
Copy Markdown
Contributor

The request was received. Approve workflow runs. Thanks.

@edgchen1

Copy link
Copy Markdown
Contributor

I think there are a few other places which still copy or refer to dxil.dll. e.g.:

Write-Host "Copying dxil.dll and dxcompiler.dll from $sourcePath to $targetPath"
Copy-Item -Path "$sourcePath\dxil.dll" -Destination $targetPath -Force

Write-Host "Copying dxil.dll and dxcompiler.dll from $sourcePath to $targetPath"
Copy-Item -Path "$sourcePath\dxil.dll" -Destination $targetPath -Force

git grep -n "dxil\.dll" shows a few hits.

do those need to be updated too?

@edgchen1

Copy link
Copy Markdown
Contributor

D3D12 XMX support for ORT-WebGPU Python wheels will be added in another patch after the upgrade of Dawn.

if this is referring to onnxruntime-webgpu, we have stopped publishing that wheel. we will just publish the onnxruntime-ep-webgpu plugin EP wheel going forward.

@mei1127

Copy link
Copy Markdown
Contributor Author

/run bots

@qjia7

Copy link
Copy Markdown
Contributor

The request was received. Approve workflow runs. Thanks.

@mei1127

Copy link
Copy Markdown
Contributor Author

I think there are a few other places which still copy or refer to dxil.dll. e.g.:

Write-Host "Copying dxil.dll and dxcompiler.dll from $sourcePath to $targetPath"
Copy-Item -Path "$sourcePath\dxil.dll" -Destination $targetPath -Force

Write-Host "Copying dxil.dll and dxcompiler.dll from $sourcePath to $targetPath"
Copy-Item -Path "$sourcePath\dxil.dll" -Destination $targetPath -Force

git grep -n "dxil\.dll" shows a few hits.

do those need to be updated too?

Yes, I have updated them. Thanks.

@mei1127

Copy link
Copy Markdown
Contributor Author

/run bots

@qjia7

Copy link
Copy Markdown
Contributor

The request was received. Approve workflow runs. Thanks.

@mei1127

Copy link
Copy Markdown
Contributor Author

/run bots

@qjia7

Copy link
Copy Markdown
Contributor

The request was received. Approve workflow runs. Thanks.

@edgchen1

Copy link
Copy Markdown
Contributor

could you please also update this SwiftShader commit to match the one pinned by the new Dawn version?

# This SHA is lifted from Dawn's DEPS (third_party/swiftshader entry) at the
# Dawn commit pinned by ORT in cmake/deps.txt. To refresh on a Dawn bump:
# https://dawn.googlesource.com/dawn/+/<dawn-commit>/DEPS
# ---------------------------------------------------------------------------
FROM $BASEIMAGE AS swiftshader_builder
ARG SWIFTSHADER_COMMIT=b7b7fd22e5f28079b92412f47f6da4df43e4cd37

@mei1127

Copy link
Copy Markdown
Contributor Author

/run bots

@gyagp

Copy link
Copy Markdown
Contributor

Just curious, do we need to update these hashes manually now? I think we should maintain some script to make the upgrade easier.

@qjia7

Copy link
Copy Markdown
Contributor

The request was received. Approve workflow runs. Thanks.

@mei1127

Copy link
Copy Markdown
Contributor Author

Just curious, do we need to update these hashes manually now? I think we should maintain some script to make the upgrade easier

I agree, that would make things much easier.

@mei1127

May Mei (mei1127) commented Sep 22, 2026 •

Copy link
Copy Markdown
Contributor Author

PTAL again, thanks! Jiajia Qin (@qjia7) Edward Chen (@edgchen1)

@qjia7

Copy link
Copy Markdown
Contributor

PTAL again, thanks! Jiajia Qin (Jiajia Qin (@qjia7)) Edward Chen (Edward Chen (@edgchen1))

LGTM, please wait for Edward Chen (@edgchen1)'s review. Thanks.

@edgchen1
Edward Chen (edgchen1) enabled auto-merge (squash) September 24, 2026 17:04
@edgchen1
Edward Chen (edgchen1) merged commit fb8905b into microsoft:main Sep 24, 2026
161 of 162 checks passed
Yang Gu (gyagp) added a commit to gyagp/onnxruntime that referenced this pull request Oct 15, 2026
Remove the completed DXIL migration recipe and its command-line option.
Keep archive pin/checksum generation, reviewed dependency registrations,
SwiftShader synchronization, and ordered patch refreshes in one workflow.

Write a Markdown review report alongside the JSON report and patch. Report
existing manifest drift and preserve patch-inspection errors as blockers
without applying partial edits. Match fetched dependencies by repository
and commit so one revision cannot stand in for another checkout.

Document the distinction between reviewed manifests and fetched build
inventories. Preserve independent DXC release/package metadata.

Validation: 49 tests and 24 subtests pass; Ruff and whitespace checks pass.
Replaying microsoft#33390 generates both changed files exactly. Both microsoft#32686 and
microsoft#33390 replays reproduce all dependency identities/pins and final patched
source, with idempotent apply/check. No dependency roll is applied here.
Jiajia Qin (qjia7) pushed a commit that referenced this pull request Oct 21, 2026
Dawn updates currently require coordinating the archive pin, dependency
hashes, SwiftShader revision, and local patches. Add a single command to
prepare, apply, and validate these changes together:

```sh
python plugin-ep-webgpu/tools/dawn/update_dawn.py
```

The command defaults to the newest dated Dawn tag. Use `--revision
<tag-or-full-commit>` to select a specific version. It records the
concrete revision and checksum, updates the reviewed dependency manifest
and Linux test SwiftShader pin, and refreshes active patches in CMake
order.

Refreshed patches must reproduce the expected source with zero fuzz or
offsets. The command verifies written contents and automatically
validates the manifest against the selected checkout. Unresolved patches
or dependency changes needing classification stop the update; writing or
final-validation failures trigger restoration of every attempted file,
continuing after individual restoration errors and reporting them
alongside the original failure. Reports and a diff are saved under
`build/dawn-upgrade/`, and repeating the same update makes no further
edits.

Dependency classifications and the independently packaged DXC release
are preserved. DXIL handling is outside the scope. A manifest-only
updater remains available for focused maintenance.

This PR contains eight tooling, test, and documentation files.
Build-inventory generation and packaging-pipeline integration are in
#33448. Dawn version updates generated during local validation are
separate from this PR.

Validation:

- 49 tests and 29 subtests passed with ordinary and aliased Windows
temporary paths, including real GNU patch application, latest-tag
resolution, metadata preservation, repeat runs, persistent write
failures, partial writes, and multiple rollback failures. Recovery was
also verified with a real read-only manifest.
- Ruff lint/format and Git whitespace checks passed.
- An isolated update from `v20261013.193955` to `v20261016.190333`
changed nine files and passed automatic manifest and strict patch
validation. A second invocation changed zero files.
- Earlier pinned comparisons reproduced #33390's two changed files
exactly and #32686's dependency identities and revisions.

The command automates source updates and metadata/patch validation.
Build, package, and GPU tests remain necessary to establish runtime
compatibility for each Dawn update.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants