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;
}
|