commit | 8ab7dbe42410b6ead2600e29b2ecfe8a35e2585a | [log] [tgz] |
---|---|---|
author | Le Hoang Quyen <lehoangquyen@chromium.org> | Mon Mar 06 19:03:26 2023 +0000 |
committer | Dawn LUCI CQ <dawn-scoped@luci-project-accounts.iam.gserviceaccount.com> | Mon Mar 06 19:03:26 2023 +0000 |
tree | db3f95031938012f32bb063a0f0c9c228f5cebac | |
parent | 77a90cb796f9affe6ac876768a8b08e2b85a9190 [diff] |
DawnNative: Defer callbacks' triggerings to APITick(). Currently in the middle of some functions, we execute callbacks immediately such as inside Buffer::APIMapAsync(), Device::HandleError() or Queue::Submit(). Firstly, this has risks. The functions might be in a middle of modifying internal states. By triggering callbacks, users might call API functions again which could further modify the internal states unexpectedly or access the states in an inconsistent way. Secondly, upcoming thread safe API which locks the public functions with a mutex might encounter deadlock. Because callbacks might cause re-entrances which would unexpectedly lock the public function again. This CL attempts to limit number of functions that are allowed to trigger callbacks. Other functions that want to trigger callbacks will instead enqueue a request to execute callbacks in the next Device::APITick() call. Currently the functions that will be allowed to trigger callbacks are: - Device::WillDropLastExternalRef() - Device::APITick() - Device::APISetLoggingCallback() - Device::APISetUncapturedErrorCallback() - Device::APISetDeviceLostCallback() Bug: dawn:1672 Change-Id: Iabca00f1b6f8f69eb5e966ffaa43dda5ae20fa8b Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/120940 Commit-Queue: Quyen Le <lehoangquyen@chromium.org> Reviewed-by: Austin Eng <enga@chromium.org> Kokoro: Kokoro <noreply+kokoro@google.com>
Dawn is an open-source and cross-platform implementation of the work-in-progress 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)
(TODO)
Apache 2.0 Public License, please see LICENSE.
This is not an officially supported Google product.