commit | 9bbe28268628e135bfb1a522871660ad1fd16b05 | [log] [tgz] |
---|---|---|
author | Austin Eng <enga@chromium.org> | Wed Nov 22 15:39:43 2023 +0000 |
committer | Dawn LUCI CQ <dawn-scoped@luci-project-accounts.iam.gserviceaccount.com> | Wed Nov 22 15:39:43 2023 +0000 |
tree | 445bfbc8091257a1409784633381348e97d4c209 | |
parent | 1fa6a4beb24243ad86bba906eca9c09e4cbb200d [diff] |
Track OnSubmittedOnWorkDoneF futures using execution serials This is needed on Vulkan because Vulkan cannot always make system events from VkFences. Doing it on other backends helps as well as an optimization. We don't need to create a SystemEventPipe for *every* future, and instead create them on demand when waiting is necessary. Lazily creating system events then requires an extra level of indirection to wrap them. `SystemEvent` does this by storing an atomic boolean alongside an optional system event sender/receiver pair. Lastly, in order to avoid multiple vector allocations to convert an array of TrackedFutureWaitInfo holding SystemEvent to arrays of ready bools and SystemEventReceiver primitives which are passed to the OS-specific waiting function, WaitAnySystemEvent is changed to take a templated iterator so we can prepare the OS-specific handles with fewer allocations. This CL also removes the MustWaitUsingDevice concept from tracked events since it will probably move to be a query on the device instead of on each event. Mixed source waits are not supported yet, and when they are, they will still want to reduce queue waits to a single completion event. So, tracked events still need to expose their queue/device instead of returning null when mixed source waiting is enabled. Fixed: dawn:2051 Fixed: dawn:2064 Bug: dawn:2150 Change-Id: I939d94c20b70c47013130d477029080c5240b804 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/156301 Reviewed-by: Loko Kung <lokokung@google.com> Reviewed-by: Kai Ninomiya <kainino@chromium.org> Kokoro: Kokoro <noreply+kokoro@google.com> Commit-Queue: Austin Eng <enga@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.