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:10          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:10          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): 8000b
// 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
