[native][d3d12] Fix non-visible samplers being counted in SamplerHeapCache The SamplerHeapCache key is made up of all visible samplers in a bind group; however, we were erroneously including non-visible ones. This would result in OOB accesses in some places, such as in the SamplerHeapCache destructor, where it uses the total number of samplers to fetch the sampler allocator, but if this value is > kMaxSamplerDescriptorsPerBindGroup (48), it would result in an OOB vector access. Note that this was missed as part of https://dawn-review.git.corp.google.com/c/dawn/+/295955, which modified the code to skip non-visible bind group entries. Tests were added that created kMaxBindingsPerBindGroup (1000) non-visible bindings; but the SamplerHeapCache code is skipped if there are no-visible samplers. So I updated these tests to also include 1 visible sampler, which tripped the aforementioned OOB accesses. The fix is to make sure we only count visible samplers when creating the SamplerHeapCache key. Bug: 500441331 Change-Id: Id673c8ebf7ab2486c1d6c3232bc1ea3fe6f57df1 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/301695 Commit-Queue: Antonio Maiorano <amaiorano@google.com> Reviewed-by: Loko Kung <lokokung@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.