[dawn][common] Require (d)checked_cast for unsafe TypedInteger Restrict conversions to/from TypedInteger so that they're only allowed to widen, OR they're consteval and the value is known to be valid. Require checked_cast/dchecked_cast to be used in all other cases. In order to avoid changing tons of code, this allows narrowing casts in consteval, where we can just check the actual value and know that the cast is safe. However, this has one bad consequence: if a consteval function (such as this cast) is used inside a lambda, the lambda is inferred to be consteval. Then an error is produced when it's called. But there's no pointer back to why the lambda became consteval in the first place, so it's completely incomprehensible. See the change in `src/dawn/native/Queue.cpp` for the (one) place where I saw this issue: those static_casts now select the consteval overload, causing the lambda to be consteval, causing a confusing compilation error inside `WithUploadReservation` when it tries to call the lambda. A few places I had to do change literals to e.g. `Val(2u)` to deal with an MSVC deficiency where for some reason it thinks the constructor is not constexpr in some contexts even though it always is. Bug: 515794394 Change-Id: I49a59a2721b306287edecdd11601b5ea3e910f24 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/310677 Commit-Queue: Kai Ninomiya <kainino@chromium.org> Reviewed-by: Antonio Maiorano <amaiorano@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.