yum-mirror/slang

Making it easier to work with shaders

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

Yong HePartially implement vk_buffer_ref proposal. (#3814)00474731a

master
748 B34 linesraw
1//TEST:SIMPLE(filecheck=CHECK): -target spirv -emit-spirv-directly -O0
2
3// Note: spirv-opt will crash on the generated spirv, so use -O0 to disable it.
4
5// CHECK: OpEntryPoint
6// CHECK: OpTypeForwardPointer
7typedef vk::BufferPointer<block_s> block_p;
8
9struct block_s
10{
11      float4 x;
12      block_p next;
13};
14
15struct TestPushConstant_t
16{
17      block_p root;
18};
19
20[[vk::push_constant]] TestPushConstant_t g_PushConstants;
21
22[shader("fragment")]
23float4 MainPs(void) : SV_Target0
24{
25#if __has_feature(hlsl_vk_buffer_pointer)
26      block_p g_p = g_PushConstants.root;
27      g_p = g_p.Get().next;
28      if ((uint64_t)g_p == 0) // Null pointer test
29          return float4(0.0, 0.0, 0.0, 0.0);
30      return g_p.Get().x;
31#else
32    return float4(0.0);
33#endif
34}