Fix GroupSharedLimitASTest and GroupSharedLimitMSTest execution tests#8351
Conversation
JoeCitizen
commented
Apr 8, 2026
- Change Init="Zero" to Init="ByName" on UAVBuffer0 resources in ShaderOpArith.xml so the C++ callback fires to set shader text and resize the buffer.
- Update NumElements from 128 to 4096 on UAV descriptors to match the 4096 DWORDs the shaders write.
- Add dummy SV_Position write in mesh shaders to satisfy DXIL validation requirement that all output semantics have stores.
- Change Init="Zero" to Init="ByName" on UAVBuffer0 resources in ShaderOpArith.xml so the C++ callback fires to set shader text and resize the buffer. - Update NumElements from 128 to 4096 on UAV descriptors to match the 4096 DWORDs the shaders write. - Add dummy SV_Position write in mesh shaders to satisfy DXIL validation requirement that all output semantics have stores. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
tex3d
left a comment
There was a problem hiding this comment.
I think it might be safer to change output counts to output one valid primitive. We should file a validator issue and check whether it would be valid to write outside the output counts specified as a follow-up.
| out vertices MeshOutput verts[3], | ||
| out indices uint3 tris[1]) { | ||
| SetMeshOutputCounts(0, 0); | ||
| verts[0].pos = float4(0, 0, 0, 0); |
There was a problem hiding this comment.
I think a safer approach would be to set output counts to non-zero and output something (like one valid primitive). I don't think the point is to test the empty output case, right?
The requirement that we write to SV_Position even when output counts are zero is an interesting edge case the validator didn't account for. Probably warrants a validator issue being filed. I'm not positive it's technically valid to write to an output outside the count specified, so this might be something to follow up on as well.