commit | c40228e6fc111f23b96cfb0be7672e47b64e9168 | [log] [tgz] |
---|---|---|
author | Colin Blundell <blundell@chromium.org> | Tue Jul 23 17:55:43 2024 +0000 |
committer | Dawn LUCI CQ <dawn-scoped@luci-project-accounts.iam.gserviceaccount.com> | Tue Jul 23 17:55:43 2024 +0000 |
tree | 6644797e239437992c3fe492d42105d6b4f5c75a | |
parent | 1a3101b8d08da69ebf7f9496b988423522e6735e [diff] |
[Vulkan] Properly handle combined image samplers We currently set YCbCr sampler entries as COMBINED_IMAGE_SAMPLER at the Vulkan level, but we don't actually then handle that within the Vulkan backend: * There should be no entry in the VkDescriptorSetLayout for the texture that will be paired with this sampler * That texture should be bound in the VkDescriptorSet at the index for the sampler * Within the SPIR-V, the texture var should be decorated to point at the binding for the combined image sampler This CL fills in those holes. To do so, we add an optional field to StaticSamplerBindingLayout wherein the client can specify a texture entry that should be paired with this sampler. If that field is set, we will create the sampler entry as COMBINED_IMAGE_SAMPLER with all that that entails. Followup will add validation and testing. In addition to general testing and validation, we will validate and test the following with respect to YCbCr samplers in particular: * The client *must* pass the index of the texture being sampled by a YCbCr sampler entry as part of the YCbCr sampler entry itself, in essence requiring that the client pair YCbCr samplers and sampled textures. This requirement matches the current Skia BGL structure and seems like a rational restriction, as both the YCbCr sampler and the texture being sampled by that sampler need to take their YCbCr info from the AHB that is backing by the texture. Change-Id: I1741f4bcf90a461a3636fd37745a80b461365006 Bug: 41488897 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/197475 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Colin Blundell <blundell@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.