yum-mirror/slang
Making it easier to work with shaders
git clone https://git.yummers.dev/yum-mirror/slang
9a23a9aab
master
1//TEST:SIMPLE(filecheck=SPIRV): -target spirv -fvk-use-entrypoint-name 2//TEST:SIMPLE(filecheck=METAL): -target metal 3//TEST:SIMPLE(filecheck=METALASM): -target metallib 4 5 6// METAL-DAG: {{.*}}{{\[\[}}raster_order_group(0){{\]\]}} {{\[\[}}buffer(0) 7// METAL-DAG: {{.*}}{{\[\[}}raster_order_group(0){{\]\]}} {{\[\[}}texture(0) 8// METAL-DAG: {{.*}}{{\[\[}}raster_order_group(0){{\]\]}} {{\[\[}}buffer(1) 9 10// METALASM: @fragMain 11 12RasterizerOrderedByteAddressBuffer buffer; 13 14[shader("fragment")] 15float4 fragMain() : SV_Target 16{ 17 // SPIRV: %fragMain{{.*}} = OpFunction 18 // SPIRV: OpBeginInvocationInterlockEXT 19 // SPIRV: OpEndInvocationInterlockEXT 20 21 buffer.Store(0, 0x12345678); 22 return float4(1, 0, 0, 1); 23} 24 25RasterizerOrderedTexture2D tex; 26 27[shader("fragment")] 28float4 fragMain2() : SV_Target 29{ 30 // SPIRV: %fragMain2{{.*}} = OpFunction 31 // SPIRV: OpBeginInvocationInterlockEXT 32 // SPIRV: OpEndInvocationInterlockEXT 33 34 tex[uint2(0, 0)] = float4(1, 0, 0, 1); 35 return float4(1, 0, 0, 1); 36} 37 38RasterizerOrderedStructuredBuffer<float> buffer2; 39 40[shader("fragment")] 41float4 fragMain3() : SV_Target 42{ 43 // SPIRV: %fragMain3{{.*}} = OpFunction 44 // SPIRV: OpBeginInvocationInterlockEXT 45 // SPIRV: OpEndInvocationInterlockEXT 46 47 buffer2[0] = 1; 48 return float4(1, 0, 0, 1); 49} 50