[YUV AHB] Specialize state for operations using YUV AHB ExternalTextures This CL builds on all the previous [YUV AHB] commits to detect in the Vulkan command encoding that a specialization is needed to do 0-copy YUV AHB sampling. It computes the specialization, set the specialized state and run the command. - Adds end2end tests for OpaqueYCbCrAndroidForExternalTexture. - Adds an ExternalTexture end2end tests instantiation with the "vulkan_force_static_samplers_for_external_textures" toggle which mimics the specialization that needs to happen for YCbCr on devices that don't have it (it made it easier to test WIP code). - Enable OpaqueYCbCrAndroidForExternalTexture in the Vulkan backend when samplerYCbCrConversion is available. - Add a way to get specialized VkDescriptorSets for a specialization of a BindGroup's layout. - Handle the special case of Vulkan swizzling YCbCr differently than what the ExternalTexture yuvToRgb matrix expects. - Split ImmediateDataTracker and DescriptorSetTracker's Apply method to let custom state be passed, and add method to dirty the state. - When a pipeline is detected to need specialization, specialize the pipeline and apply the specialized state before doing the operation. Bug: 468988322 Change-Id: I28fe6d07f7f1d2bd7dad4d8353550a36e2ebd1dd Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/297196 Reviewed-by: Brandon Jones <bajones@chromium.org> Commit-Queue: Corentin Wallez <cwallez@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.