Describe the situation in which you encountered the missing validation
I have a graphics pipeline with some output variable (storage class: Output) that is written from the mesh shader and consumed by the fragment shader (storage class: Input). This variable is decorated with PerPrimitiveEXT in the mesh shader but it's not decorated in the fragment shader. This mismatch of decorations is not caught by the validation layers and it leads to rendering errors in some implementations.
This bug is very easy to trigger when using HLSL. HLSL has the primitives keyword (which is the equivalent of PerPrimitiveEXT) but this keyword is not supported in fragment shaders. This HLSL anomaly can lead to a situation where the graphics pipeline works in DX12, it works on Vulkan with nVidia but it doesn't work on other IHVs and the reason is very difficult to figure out.
Valid Usage IDs requested
???? Not sure what that means. I was looking at 15.1.3. Interface Matching in the spec.
Yes, seems there missing spec language around this, @pmistryNV can you look into this? (we currently are so backlogged and won't be getting to Mesh Shading for a while)
Describe the situation in which you encountered the missing validation I have a graphics pipeline with some output variable (storage class: Output) that is written from the mesh shader and consumed by the fragment shader (storage class: Input). This variable is decorated with
PerPrimitiveEXT
in the mesh shader but it's not decorated in the fragment shader. This mismatch of decorations is not caught by the validation layers and it leads to rendering errors in some implementations.This bug is very easy to trigger when using HLSL. HLSL has the
primitives
keyword (which is the equivalent ofPerPrimitiveEXT
) but this keyword is not supported in fragment shaders. This HLSL anomaly can lead to a situation where the graphics pipeline works in DX12, it works on Vulkan with nVidia but it doesn't work on other IHVs and the reason is very difficult to figure out.Valid Usage IDs requested ???? Not sure what that means. I was looking at
15.1.3. Interface Matching
in the spec.Additional Context N/A