blob: 0e438c456d5ca2184c74e1228677a8886bca569d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
// fragment-shader-interlock.slang
// Test that explicit use of fragment-shader interlock (FSI)
// operations is supported by Slang
//TEST:SIMPLE(filecheck=CHECK):-target spirv -entry main -stage fragment
//TEST:SIMPLE(filecheck=CHECK):-emit-spirv-directly -target spirv -entry main -stage fragment
// CHECK: OpCapability FragmentShaderPixelInterlockEXT
// CHECK: OpExtension "SPV_EXT_fragment_shader_interlock"
// CHECK: OpEntryPoint Fragment %main "main"
// CHECK-DAG: OpExecutionMode %main OriginUpperLeft
// CHECK-DAG: OpExecutionMode %main PixelInterlockOrderedEXT
[shader("fragment")]
void main(
float4 coords : COORDS,
uniform RasterizerOrderedTexture2D<float4> texture,
out float4 result : SV_Target)
{
beginInvocationInterlock();
result = texture[uint2(coords.xy)];
texture[uint2(coords.xy)] = result + coords;
endInvocationInterlock();
}
|