Skip to content

Missing link-time checks when using PerPrimitiveEXT  #8398

@godlikepanos

Description

@godlikepanos

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.

Additional Context
N/A

Metadata

Metadata

Labels

IncompleteMissing Validation VUs to be added

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions