summaryrefslogtreecommitdiffstats
path: root/tests/bugs/gh-4131.slang
blob: 59eaff868ec262228a14eca93d983b59a7889139 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
//TEST:SIMPLE(filecheck=CHECK): -target spirv

//CHECK: OpEntryPoint

struct TypeA {
  float4 placeholder;
};
struct TypeB {
  float4 placeholder;
};

[[vk::binding(0, 0)]]
StructuredBuffer<TypeA> a_buffers[] : register(t0, space0);
[[vk::binding(0, 1)]]
StructuredBuffer<TypeB> b_buffer : register(t0, space0);

struct VertexIn {
  int32_t vert_idx : SV_VertexID;
  [[KnownBuiltin(0)]]
  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;
}