Skip to content

[WebGPU] Generate component inventories from fetched Dawn dependencies - #33448

Closed
Yang Gu (gyagp) wants to merge 1 commit into
microsoft:mainfrom
gyagp:webgpu-build-inventory
Closed

Yang Gu (gyagp) wants to merge 1 commit into
microsoft:mainfrom
gyagp:webgpu-build-inventory

Conversation

@gyagp

Copy link
Copy Markdown
Contributor

Description

Generate a WebGPU component inventory from the Dawn dependencies fetched by a build, then scan and retain it in the Windows, Linux, and macOS plugin packaging pipelines.

  • Read the pinned fetcher's dependency list and DEPS without executing them; verify each selected Git checkout's HEAD against its declared commit.
  • Record Dawn's archive URL/checksum and, for Windows packaging, the independently distributed DXC archive metadata.
  • Run generator tests, write metadata/cgmanifest.json, and scan that directory explicitly because the normal scan excludes the build directory containing fetched dependencies.
  • Keep the reviewed manifest and its runtime/development classifications separate. The generated inventory describes build inputs, not which components are linked into the final package.

Motivation and Context

Fetched third-party sources should have a reproducible inventory tied to the actual build. This work is separated from the Dawn upgrade command in #33396 so the two workflows can be reviewed and merged independently.

This PR does not change the Dawn pin, patch stack, runtime code, or reviewed dependency classifications. It has no dependency on the upgrade-tool PR.

Validation

  • 12 generator tests passed on an exact snapshot of this branch, including real temporary Git checkouts, missing/stale dependencies, nested metadata, deduplication, and independent DXC metadata.
  • Ruff lint/format and Git whitespace checks passed.
  • Generator, tests, and pipeline calls are preserved from the combined draft; documentation now describes this workflow independently.

Draft for review of the inventory/scanning contract. The packaging pipelines and Component Governance task have not been executed locally.

Generate build-input manifests from the pinned Dawn fetch list and actual Git
checkout revisions. Verify missing/stale checkouts, include independent DXC
archive metadata on Windows, and scan/stage the inventory in plugin packaging.

Keep the reviewed runtime/development manifest separate. This does not alter
Dawn pins or automate package-content classification.
@azure-pipelines

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

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.

1 participant