KhronosGroup / KhronosGroup/Vulkan-ValidationLayers
False positive in shader float control validation
@spencer-lunarg is already working on this.
Since Apr 27, 2023.
- Dominant language
- C++
- Stars
- 1k
- Forks
- 505
- Avg merge
- 11h 25m
- Merged PRs (30d)
- 229
Description
Environment:
- OS: Arch Linux (rolling)
- GPU: Radeon RX6800 on RADV
- SDK or header version if building from repo: Built VVL d1bb20e47fe9f22fd0aadec44e899ab58f3f2458
- Options enabled (synchronization, best practices, etc.): Just validation.
Describe the Issue
When declaring a module with only FP16 denorm mode or FP64 denorm mode, a false positive is triggered.
Expected behavior
For 32_BIT_ONLY independence, it is expected that validation is only triggered if FP16 and FP64 modes are explicitly declared differently. If 64-bit floats are not used in a module, it should not trigger false positive.
(If denorm mode is not declared for FP64, it should inherit the explicit mode from FP16 I think, but that might not be required in the specification.)
Valid Usage ID
06289
Additional context
463ac:err:vkd3d_debug_messenger_callback: "Validation Error: [ VUID-RuntimeSpirv-denormBehaviorIndependence-06289 ] Object 0: handle = 0x8f1c31000000006d, name = 60c9660a21aafad8, type = VK_OBJECT_TYPE_SHADER_MODULE; | MessageID = 0xb4fec51a | Shader uses different denormals execution modes for 16 bit floats but roundingModeIndependence is VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY The Vulkan spec states: If denormBehaviorIndependence is VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY, then the entry point must use the same denormal"...
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.