KhronosGroup / KhronosGroup/Vulkan-ValidationLayers
GPU-AV instrumentation should report the variable id used for each descriptor access
- Dominant language
- C++
- Stars
- 1k
- Forks
- 504
- Avg merge
- 11h 35m
- Merged PRs (30d)
- 224
Description
See #7102 and its partial fix in #7251. If there are more than one spirv variable using a set, binding pair in a shader, GPU-AV now tries to find any variable that matches the image dimensions matching the image view bound in the descriptor. This is only a workaround that prevents false positives. Instead, the shader instrumentation should return the variable id used to access the descriptor for validation. This would require:
- Updating the spirv instrumentation to store the variable id (instead of 1) for each accessed descriptor
- Including the variable id in the returned data from gpuav::DescriptorSet::State::UsedDescriptors()
- rewriting the FindMatchingImageVar() and FindMatchingTexelVar() functions in layers/descriptor_validator.cpp to find the matching variable id rather than looking for matching dimensions.
- looking for other places where variable id lookup is needed. I think mutable descriptors could make this happen very easily for non-image descriptors.
Contributor guide
Assessment
This issue has not been assessed yet.