yum-mirror/slang

Making it easier to work with shaders

git clone https://git.yummers.dev/yum-mirror/slang

CopilotReplace [KnownBuiltin] string-based comparisons with enum-based system (#7714)d964555d2

master
781 B31 linesraw
1//TEST:SIMPLE(filecheck=CHECK): -target spirv
2
3//CHECK: OpEntryPoint
4
5struct TypeA {
6  float4 placeholder;
7};
8struct TypeB {
9  float4 placeholder;
10};
11
12[[vk::binding(0, 0)]]
13StructuredBuffer<TypeA> a_buffers[] : register(t0, space0);
14[[vk::binding(0, 1)]]
15StructuredBuffer<TypeB> b_buffer : register(t0, space0);
16
17struct VertexIn {
18  int32_t vert_idx : SV_VertexID;
19  [[KnownBuiltin(0)]]
20  uint32_t draw_idx : POSITION0;
21};
22
23[shader("vertex")]
24float4 vert(VertexIn i) : SV_POSITION {
25  // Proper usage of NonUniformResourceIndex works fine
26  float4 a =
27      a_buffers[NonUniformResourceIndex(i.draw_idx)][i.vert_idx].placeholder;
28  // Incorrect usage but dxc compiles this with no warning  
29  float4 b = b_buffer[NonUniformResourceIndex(i.draw_idx)].placeholder;
30  return a + b;
31}