[YUV AHB] Factor state sync logic in CommandBufferVk. All the Draw and Dispatch operations needed to make sure to apply updates for dirty immediates and descriptor sets. Introduce a "state" class that holds the various trackers and has a wrapper function SyncAndRun that runs the draw/dispatch functor after syncing. Also defer binding the Vulkan pipeline until right before the operation. This is useful in the short term to add support for JITed pipelines for YUV AHB, since it allows detecting that the pipeline needs JITing just before the Draw/Dispatch, and instrumenting the code that does state synchronization for that purpose. Long-term it will be useful to reduce the state trackend by the Vulkan backend (some of it in BindGroupTracker is not needed), and moving to a tail-call interpreter loop. Bug: 468988322 Change-Id: Iaed78347dc49c1f468bb585f368a058b85d36e82 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/297735 Commit-Queue: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Kyle Charbonneau <kylechar@google.com> Reviewed-by: Brandon Jones <bajones@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.