yum-mirror/slang

Making it easier to work with shaders

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

Yong HeSPIRV `Block` decoration fixes. (#4303)9a23a9aab

master
1.3 KiB50 linesraw
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