[siso] Precise input verification for dawn generators To enable safe and correct remote execution (Siso/RBE) for Dawn's code generators, this CL implements a robust self-verification system that asserts GN inputs match actual Python dependencies. Key improvements: 1. Strict Assertion System: `generator_lib.py` now accepts `--expected-inputs-file` and asserts that the actual dependencies (including imported Python modules and templates) match the GN-specified inputs exactly. 2. Glob Pattern Support: To handle dynamic dependencies like third-party libraries (Jinja2, MarkupSafe) and Git metadata (.git/HEAD), we introduced glob pattern matching in the expected inputs (e.g. `*third_party/jinja2/*`). The generator uses `fnmatch` to strictly detect missing inputs while safely allowing unused, over-specified inputs. Misplaced glob patterns are filtered out from Ninja's physical inputs in `generator_lib.gni`. 3. Dynamic Argument Construction: The `dawn_json_generator` template in `dawn_generator.gni` now automatically detects the presence of optional files (like `dawn_wire.json` or `dawn_kotlin.json`) in the target's `inputs` using `filter_include`, and dynamically appends the corresponding generator arguments (e.g., `--wire-json`). This completely eliminates the need to hardcode target-to-JSON mappings in both Python and GN sides. 4. Explicit Target inputs: All individual generator targets in `BUILD.gn` files now explicitly list their required templates and JSON files in their `inputs`, ensuring clean and maintainable dependency tracking. Bug: 466134210 Change-Id: I0155aa259474c8e8b8e8e08861c55fd1fed63c04 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/315915 Commit-Queue: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Brandon Jones <bajones@chromium.org> Auto-Submit: Takuto Ikuta <tikuta@google.com> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Dawn is an open-source and cross-platform implementation of the WebGPU standard. More precisely it implements webgpu.h that is a one-to-one mapping with the WebGPU IDL. Dawn is meant to be integrated as part of a larger system and is the underlying implementation of WebGPU in Chromium.
Dawn provides several WebGPU building blocks:
webgpu.h version that Dawn implements.webgpu.h.Helpful links:
Developer documentation:
User documentation: (TODO, figure out what overlaps with the webgpu.h docs)
BSD 3-Clause License, please see LICENSE.
This is not an officially supported Google product.