commit | 693c8d6b37c967e0f8e8d10cf50d39c6e691d05f | [log] [tgz] |
---|---|---|
author | Kyle Charbonneau <kylechar@google.com> | Tue Mar 25 11:56:12 2025 -0700 |
committer | Dawn LUCI CQ <dawn-scoped@luci-project-accounts.iam.gserviceaccount.com> | Tue Mar 25 11:56:12 2025 -0700 |
tree | 2049c192b520eb0bd1bed166a0c2f1982d2307f3 | |
parent | 6d92a5ca44b6f34e02f2edba5ec3d1973a7f98d8 [diff] |
Fix BindGroup destruction race The destruction of slab allocated BindGroup implementations had a data race. BindGroup::DestroyImpl() would first trigger SlabAllocator::Deallocate() and then run the destructor. This means the memory was returned to the SlabAllocator and could be reused to create a new BindGroup on another thread while the destructor was running. Fix the race by running SlabAllocator::Deallocate() after the destructor has finished. This is accomplished by acquiring a callback from the BindGroup before the destructor runs and invoking the callback afterwards. This has only impacted Android+Graphite so far since it's the only platform where BindGroups are created/destroyed with the same BindGroupLayout on multiple threads. Bug: 384611797 Change-Id: I92bb52517384ddbcc742ec53a69cab9cd4078a83 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/232615 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Quyen Le <lehoangquyen@chromium.org> Commit-Queue: Kyle Charbonneau <kylechar@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.