commit | e7ad6c436b745a04c770f718dc072b146833379c | [log] [tgz] |
---|---|---|
author | Kai Ninomiya <kainino@chromium.org> | Fri Sep 06 10:14:22 2024 +0000 |
committer | Dawn LUCI CQ <dawn-scoped@luci-project-accounts.iam.gserviceaccount.com> | Fri Sep 06 10:14:22 2024 +0000 |
tree | 982762d33cf8624c8f68c09dfc5dbc1688133110 | |
parent | b339ed4daf668b7377134347f29a41239dee3ed6 [diff] |
[emdawnwebgpu] Fix two refcounting bugs, and fix for 64-bit flags - Ref::~Ref was calling the virtual method Release(), which for RefCountedWithExternalCount releases an external ref (but Ref<> is supposed to only be an internal ref). I stumbled on this; it did not actually cause any crashes, but the external refcount value was wrong. - There was an atomic fetch_add() inside an assert(), which was skipped in release builds. - Switching bitflags to 64-bit broke the Wasm->JS calling convention (in a very hard to find way as usual), so did the TODO that was there to fix it. - Add some runtimeKeepalivePush/Pop calls for the DeviceLost callbacks. This seems to be the only instance of `.then()` that didn't have it. (I didn't actually see a crash here, I just noticed it. Note, this is an odd case because it may never be called, but I think this behavior is correct. In the future we might be able to destroy() the device when all of its internal and external refs reach 0? Then the DeviceLost callbacks should get called and the runtime can shut down.) Discovered with and debugged/tested against this project: https://github.com/kainino0x/webgpu-cross-platform-demo/tree/dawnwasm Fixed: 347732150 Bug: none Change-Id: I6cb3775b3ea7f63772cb79564e732df77c8aab68 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/205874 Auto-Submit: Kai Ninomiya <kainino@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Corentin Wallez <cwallez@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.