--- /dev/null
+hlsl.earlydepthstencil.frag
+Shader version: 500
+gl_FragCoord origin is upper left
+using early_fragment_tests
+0:? Sequence
+0:8 Function Definition: @main(struct-InputStruct-vf41; ( temp uint)
+0:8 Function Parameters:
+0:8 'input' ( in structure{ temp 4-component vector of float Position})
+0:? Sequence
+0:10 move second child to first child ( temp uint)
+0:10 'oldVal' ( temp uint)
+0:10 imageAtomicExchange ( temp uint)
+0:10 'Values' (layout( r32ui) uniform uimage2D)
+0:? Construct uvec2 ( temp 2-component vector of uint)
+0:10 Convert float to uint ( temp uint)
+0:10 direct index ( temp float)
+0:10 Position: direct index for structure ( temp 4-component vector of float)
+0:10 'input' ( in structure{ temp 4-component vector of float Position})
+0:10 Constant:
+0:10 0 (const int)
+0:10 Constant:
+0:10 0 (const int)
+0:10 Convert float to uint ( temp uint)
+0:10 direct index ( temp float)
+0:10 Position: direct index for structure ( temp 4-component vector of float)
+0:10 'input' ( in structure{ temp 4-component vector of float Position})
+0:10 Constant:
+0:10 0 (const int)
+0:10 Constant:
+0:10 1 (const int)
+0:10 Constant:
+0:10 1 (const uint)
+0:11 Branch: Return with expression
+0:11 'oldVal' ( temp uint)
+0:8 Function Definition: main( ( temp void)
+0:8 Function Parameters:
+0:? Sequence
+0:8 Sequence
+0:8 move second child to first child ( temp 4-component vector of float)
+0:8 Position: direct index for structure ( temp 4-component vector of float)
+0:? 'input' ( temp structure{ temp 4-component vector of float Position})
+0:8 Constant:
+0:8 0 (const int)
+0:? 'input.Position' ( in 4-component vector of float FragCoord)
+0:8 move second child to first child ( temp uint)
+0:? '@entryPointOutput' (layout( location=0) out uint)
+0:8 Function Call: @main(struct-InputStruct-vf41; ( temp uint)
+0:? 'input' ( temp structure{ temp 4-component vector of float Position})
+0:? Linker Objects
+0:? 'Values' (layout( r32ui) uniform uimage2D)
+0:? '@entryPointOutput' (layout( location=0) out uint)
+0:? 'input.Position' ( in 4-component vector of float FragCoord)
+
+
+Linked fragment stage:
+
+
+Shader version: 500
+gl_FragCoord origin is upper left
+using early_fragment_tests
+0:? Sequence
+0:8 Function Definition: @main(struct-InputStruct-vf41; ( temp uint)
+0:8 Function Parameters:
+0:8 'input' ( in structure{ temp 4-component vector of float Position})
+0:? Sequence
+0:10 move second child to first child ( temp uint)
+0:10 'oldVal' ( temp uint)
+0:10 imageAtomicExchange ( temp uint)
+0:10 'Values' (layout( r32ui) uniform uimage2D)
+0:? Construct uvec2 ( temp 2-component vector of uint)
+0:10 Convert float to uint ( temp uint)
+0:10 direct index ( temp float)
+0:10 Position: direct index for structure ( temp 4-component vector of float)
+0:10 'input' ( in structure{ temp 4-component vector of float Position})
+0:10 Constant:
+0:10 0 (const int)
+0:10 Constant:
+0:10 0 (const int)
+0:10 Convert float to uint ( temp uint)
+0:10 direct index ( temp float)
+0:10 Position: direct index for structure ( temp 4-component vector of float)
+0:10 'input' ( in structure{ temp 4-component vector of float Position})
+0:10 Constant:
+0:10 0 (const int)
+0:10 Constant:
+0:10 1 (const int)
+0:10 Constant:
+0:10 1 (const uint)
+0:11 Branch: Return with expression
+0:11 'oldVal' ( temp uint)
+0:8 Function Definition: main( ( temp void)
+0:8 Function Parameters:
+0:? Sequence
+0:8 Sequence
+0:8 move second child to first child ( temp 4-component vector of float)
+0:8 Position: direct index for structure ( temp 4-component vector of float)
+0:? 'input' ( temp structure{ temp 4-component vector of float Position})
+0:8 Constant:
+0:8 0 (const int)
+0:? 'input.Position' ( in 4-component vector of float FragCoord)
+0:8 move second child to first child ( temp uint)
+0:? '@entryPointOutput' (layout( location=0) out uint)
+0:8 Function Call: @main(struct-InputStruct-vf41; ( temp uint)
+0:? 'input' ( temp structure{ temp 4-component vector of float Position})
+0:? Linker Objects
+0:? 'Values' (layout( r32ui) uniform uimage2D)
+0:? '@entryPointOutput' (layout( location=0) out uint)
+0:? 'input.Position' ( in 4-component vector of float FragCoord)
+
+// Module Version 10000
+// Generated by (magic number): 80007
+// Id's are bound by 50
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 41 46
+ ExecutionMode 4 OriginUpperLeft
+ ExecutionMode 4 EarlyFragmentTests
+ Source HLSL 500
+ Name 4 "main"
+ Name 8 "InputStruct"
+ MemberName 8(InputStruct) 0 "Position"
+ Name 13 "@main(struct-InputStruct-vf41;"
+ Name 12 "input"
+ Name 16 "oldVal"
+ Name 19 "Values"
+ Name 39 "input"
+ Name 41 "input.Position"
+ Name 46 "@entryPointOutput"
+ Name 47 "param"
+ Decorate 19(Values) DescriptorSet 0
+ Decorate 19(Values) Binding 0
+ Decorate 41(input.Position) BuiltIn FragCoord
+ Decorate 46(@entryPointOutput) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8(InputStruct): TypeStruct 7(fvec4)
+ 9: TypePointer Function 8(InputStruct)
+ 10: TypeInt 32 0
+ 11: TypeFunction 10(int) 9(ptr)
+ 15: TypePointer Function 10(int)
+ 17: TypeImage 10(int) 2D nonsampled format:R32ui
+ 18: TypePointer UniformConstant 17
+ 19(Values): 18(ptr) Variable UniformConstant
+ 20: TypeInt 32 1
+ 21: 20(int) Constant 0
+ 22: 10(int) Constant 0
+ 23: TypePointer Function 6(float)
+ 27: 10(int) Constant 1
+ 31: TypeVector 10(int) 2
+ 33: TypePointer Image 10(int)
+ 40: TypePointer Input 7(fvec4)
+41(input.Position): 40(ptr) Variable Input
+ 43: TypePointer Function 7(fvec4)
+ 45: TypePointer Output 10(int)
+46(@entryPointOutput): 45(ptr) Variable Output
+ 4(main): 2 Function None 3
+ 5: Label
+ 39(input): 9(ptr) Variable Function
+ 47(param): 9(ptr) Variable Function
+ 42: 7(fvec4) Load 41(input.Position)
+ 44: 43(ptr) AccessChain 39(input) 21
+ Store 44 42
+ 48:8(InputStruct) Load 39(input)
+ Store 47(param) 48
+ 49: 10(int) FunctionCall 13(@main(struct-InputStruct-vf41;) 47(param)
+ Store 46(@entryPointOutput) 49
+ Return
+ FunctionEnd
+13(@main(struct-InputStruct-vf41;): 10(int) Function None 11
+ 12(input): 9(ptr) FunctionParameter
+ 14: Label
+ 16(oldVal): 15(ptr) Variable Function
+ 24: 23(ptr) AccessChain 12(input) 21 22
+ 25: 6(float) Load 24
+ 26: 10(int) ConvertFToU 25
+ 28: 23(ptr) AccessChain 12(input) 21 27
+ 29: 6(float) Load 28
+ 30: 10(int) ConvertFToU 29
+ 32: 31(ivec2) CompositeConstruct 26 30
+ 34: 33(ptr) ImageTexelPointer 19(Values) 32 22
+ 35: 10(int) AtomicExchange 34 27 22 27
+ Store 16(oldVal) 35
+ 36: 10(int) Load 16(oldVal)
+ ReturnValue 36
+ FunctionEnd