[dawn][d3d] Adds loop for WaitForMultipleObjects with INFINITY. - Adding the loop addresses the reverted workaround. - Also includes a small fix for potential race in spontaneous event handling. - Re-enables all the related tests now that they seem to be passing fine now on the arm64 Qualcomm devices with this fix. - Also reverts "Fix MapAsyncAndWait use-after-free" commit 37905ab50503cb442aac9a8a28ac7306416dee39. Original change's description: > Fix MapAsyncAndWait use-after-free > > Fixes an issue where the callback registered in > DawnTestBase::MapAsyncAndWait could cause an access violation during > global test teardown due to trying to run a callback that was allocated > on the stack and had already gone out of scope. This only occurred when > instance.WaitAny() timed out, which would cause the callback to still > be around until the instance got destroyed and ensured that all pending > callbacks were complete. > > Now, the actual callback to run is provided via a shared_ptr and the > lambda provided to buffer.MapAsync() checks if it is null before running > it. After instance.WaitAny() returns but before we make any asserts, we > set the pointer to null, preventing the soon-to-be-dangling pointer from > being used in the future. > > This is meant as a temporary workaround, as WaitAny() should always run > the provided callback. This can be reverted once the underlying issue > is fixed. > > Bug: 459864803, 460743383 > Change-Id: I5384e74ff6ab9da6104b07e6d9d235bf5d4b40c2 > Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/273736 > Commit-Queue: Brian Sheedy <bsheedy@google.com> > Reviewed-by: Loko Kung <lokokung@google.com> > Auto-Submit: Brian Sheedy <bsheedy@google.com> > Reviewed-by: Kai Ninomiya <kainino@chromium.org> Bug: 459864803, 460743383, 461837996, 469328928, 465497435 Change-Id: Iabf26a66fbd6c92bf788a283c05b64d72e6f12ee Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/277975 Reviewed-by: Brian Sheedy <bsheedy@google.com> Commit-Queue: Kai Ninomiya <kainino@chromium.org> Auto-Submit: Loko Kung <lokokung@google.com> Commit-Queue: Loko Kung <lokokung@google.com> Reviewed-by: Kai Ninomiya <kainino@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.