| commit | bfab4a89d0e65be2d7ad4c9daa5a34496f517d8e | [log] [tgz] |
|---|---|---|
| author | Corentin Wallez <cwallez@chromium.org> | Mon Sep 22 19:55:49 2025 -0700 |
| committer | Dawn LUCI CQ <dawn-scoped@luci-project-accounts.iam.gserviceaccount.com> | Mon Sep 22 19:55:49 2025 -0700 |
| tree | 676fb940b3c603c0f2f5b39607069bde46004a7e | |
| parent | c8cdd20958db4c72608211de0bca1f48df0fb6f8 [diff] |
[dawn][native] Add DynamicArrayState default bindings
The default bindings are used instead of the dynamic array element when
!hasBinding<T>. They are inserted at the end of the dynamic binding
array, after all of the slots for the users' bindings. This CL:
- Adds creation of all 26 default bindings for
wgpu::DynamicBindingKind::SampledTexture. This is cached on a
DynamicArrayDefaultBindings object.
- Makes the DynamicArrayDefaultBindings object part of the device so it
can be reused between bindgroups.
- Inserts the default bindings at the end of the DynamicArrayState
bindings.
- This requires updating the Vulkan backend to reserve enough space
for the additional bindings.
- Separately keep track of the API size of the DynamicArrayState
since mBindings now also contains default bindings.
- Changes the logic in DynamicArrayState metadata updates to only do
updates for the user bindings.
- Updates the Vulkan backend to handle empty metadata updates.
- Pass to Tint the order in which we put the default bindings at the
end of the binding array.
- Adds a test that default bindings contain zeroes and have size 1
(only for a few interesting types).
- Fix the KeepBIndingArrayAsPointer transform to list
DuplicateBindings as a capability.
Bug: 435317394
Change-Id: I97201f193b0136d6c5b1003e9ba6ac2598295bbf
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/260255
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: dan sinclair <dsinclair@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.