[YUV AHB] Add toggle adding static sampler to external texture expansions In Vulkan, static YCbCr samplers must be used to sample YCbCr AHBs. In follow-up commits, support of JITing pipelines to use specific YCbCr static samplers will be added. In order to have the backend support an extra static sampler per ExternalTexture, an option is added in ExternalTexture expansion to multiple bindings to also add a static sampler. - Adds the Device::NeedsStaticSamplerForExternalTexture option and a toggle that can be used in Vulkan to force that option to be true. - Adds logic in BindGroupLayoutInternalBase to add a static sampler to the external texture expansion into multiple bindings. - BindGroups validate that each static sampler is compatible with its texture passed for "sampledTextureIndex". For static samplers expanded from external textures, no such texture is passed by the application since the "sampledTextureIndex" is for another expanded binding, so just skip that case. - Adds a placeholder sampler in DeviceBase, which is used as the static sampler before the pipeline JITing replaces it. This required updating the DestroyObjectTests to not use the default sampler descriptor as content-less object caching made the placeholder sampler be returned, that is referenced by the device and not destroyed until the device destruction. Bug: 468988322 Change-Id: Ib1cacda0ed1f50eab09ce8f942b82921aa208e2b Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/297176 Commit-Queue: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Brandon Jones <bajones@chromium.org> Reviewed-by: 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.