From 6d917a02bb307300ac14c8b028c47fcdcc07100b Mon Sep 17 00:00:00 2001 From: Yong He Date: Wed, 8 May 2024 10:41:52 -0700 Subject: Fix NonUniformResourceIndex legalization for SPIRV. (#4133) * Fix NonUniformResourceIndex legalization for SPIRV. * Update gh-4131.slang --- tests/bugs/gh-4131.slang | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 tests/bugs/gh-4131.slang (limited to 'tests/bugs') diff --git a/tests/bugs/gh-4131.slang b/tests/bugs/gh-4131.slang new file mode 100644 index 000000000..d72bc5d0d --- /dev/null +++ b/tests/bugs/gh-4131.slang @@ -0,0 +1,31 @@ +//TEST:SIMPLE(filecheck=CHECK): -target spirv + +//CHECK: OpEntryPoint + +struct TypeA { + float4 placeholder; +}; +struct TypeB { + float4 placeholder; +}; + +[[vk::binding(0, 0)]] +StructuredBuffer a_buffers[] : register(t0, space0); +[[vk::binding(0, 1)]] +StructuredBuffer b_buffer : register(t0, space0); + +struct VertexIn { + int32_t vert_idx : SV_VertexID; + [[KnownBuiltin("DrawIndex")]] + uint32_t draw_idx : POSITION0; +}; + +[shader("vertex")] +float4 vert(VertexIn i) : SV_POSITION { + // Proper usage of NonUniformResourceIndex works fine + float4 a = + a_buffers[NonUniformResourceIndex(i.draw_idx)][i.vert_idx].placeholder; + // Incorrect usage but dxc compiles this with no warning + float4 b = b_buffer[NonUniformResourceIndex(i.draw_idx)].placeholder; + return a + b; +} -- cgit v1.2.3