yum-mirror/slang
Making it easier to work with shaders
git clone https://git.yummers.dev/yum-mirror/slang
00474731a
master
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}