[tint][msl] ArgBufs: emit `_ =` statements unambiguously Without argbufs, a `_ =` of a uniform/storage value results in: uint3((*tint_module_vars.f)); However, with argbufs, `f` becomes a function argument resulting in: uint3((*f)); program_source:30:10: error: pointer type must have explicit address space qualifier This is supposed to be an `expression;` but in C++ it gets parsed incorrectly as a variable declaration, like `uint3* f;`. Add parentheses around the expression so it can't be parsed that way: (uint3((*f))); Note, this doesn't happen with bare constructor calls (see call.wgsl) because in that case phony assignments get emitted for example as: int3 const v_2 = int3(z, z, z); That would work here too, but would require changes to the IR that's generated for (at least) this particular case, where a constructor is generated to convert packed_uint3 to uint3. It seems more complicated to make sure that fully covers all cases, whereas just inserting parentheses here is simple. Tests updated with: ./tools/run fix-tests out/r/tint_unittests ./tools/run tests --tint out/r/tint --generate-expected Test: test/tint/statements/assign/phony Test: ShaderTests.StorageAcrossStagesSameBindingPointCollideMixedStructDef Test: ShaderTests.UniformAcrossStagesSameBindingPointCollideMixedStructDef Bug: 363031535 Change-Id: I0999092a15a0ed584a39724ef342f9653478ba42 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/308297 Commit-Queue: Kai Ninomiya <kainino@chromium.org> Reviewed-by: dan sinclair <dsinclair@chromium.org> SLSA-Policy-Verified: SLSA Policy Verification Service <devtools-gerritcodereview-exitgate@google.com>
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.