spv.atomic.comp
Warning, version 310 is not yet complete; most version-specific features are present, but some are missing.


Linked compute stage:


TBD functionality: Is atomic_uint an opaque handle in the uniform storage class, or an addresses in the atomic storage class?
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 74

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint GLCompute 4  "main"
                              ExecutionMode 4 LocalSize 1 1 1
                              Source ESSL 310
                              Name 4  "main"
                              Name 10  "func(au1;"
                              Name 9  "c"
                              Name 12  "atoms("
                              Name 20  "counter"
                              Name 21  "param"
                              Name 24  "val"
                              Name 28  "countArr"
                              Name 35  "origi"
                              Name 37  "atomi"
                              Name 40  "origu"
                              Name 42  "atomu"
                              Name 44  "value"
                              Name 61  "dataSSB"
                              MemberName 61(dataSSB) 0  "f"
                              MemberName 61(dataSSB) 1  "n_frames_rendered"
                              Name 63  "result"
                              Name 71  "arrX"
                              Name 72  "arrY"
                              Name 73  "arrZ"
                              Decorate 20(counter) Binding 0
                              Decorate 28(countArr) Binding 0
                              MemberDecorate 61(dataSSB) 0 Offset 0
                              MemberDecorate 61(dataSSB) 1 Offset 16
                              Decorate 61(dataSSB) BufferBlock
                              Decorate 63(result) Binding 0
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeInt 32 0
               7:             TypePointer Function 6(int)
               8:             TypeFunction 6(int) 7(ptr)
              14:      6(int) Constant 1
              15:      6(int) Constant 0
              18:      6(int) Constant 1024
              19:             TypePointer AtomicCounter 6(int)
     20(counter):     19(ptr) Variable AtomicCounter
              25:      6(int) Constant 4
              26:             TypeArray 6(int) 25
              27:             TypePointer AtomicCounter 26
    28(countArr):     27(ptr) Variable AtomicCounter
              29:             TypeInt 32 1
              30:     29(int) Constant 2
              34:             TypePointer Function 29(int)
              36:             TypePointer Workgroup 29(int)
       37(atomi):     36(ptr) Variable Workgroup
              38:     29(int) Constant 3
              41:             TypePointer Workgroup 6(int)
       42(atomu):     41(ptr) Variable Workgroup
              43:             TypePointer UniformConstant 6(int)
       44(value):     43(ptr) Variable UniformConstant
              47:      6(int) Constant 7
              52:     29(int) Constant 7
              56:      6(int) Constant 10
              59:             TypeFloat 32
              60:             TypeVector 29(int) 4
     61(dataSSB):             TypeStruct 59(float) 60(ivec4)
              62:             TypePointer Uniform 61(dataSSB)
      63(result):     62(ptr) Variable Uniform
              64:     29(int) Constant 1
              65:      6(int) Constant 2
              66:             TypePointer Uniform 29(int)
              69:             TypeArray 29(int) 14
              70:             TypePointer Private 69
        71(arrX):     70(ptr) Variable Private
        72(arrY):     70(ptr) Variable Private
        73(arrZ):     70(ptr) Variable Private
         4(main):           2 Function None 3
               5:             Label
       21(param):      7(ptr) Variable Function
         24(val):      7(ptr) Variable Function
                              MemoryBarrier 14 18
              22:      6(int) Load 20(counter)
                              Store 21(param) 22
              23:      6(int) FunctionCall 10(func(au1;) 21(param)
              31:     19(ptr) AccessChain 28(countArr) 30
              32:      6(int) AtomicLoad 31 14 15
                              Store 24(val) 32
              33:      6(int) AtomicIDecrement 20(counter) 14 15
                              Return
                              FunctionEnd
   10(func(au1;):      6(int) Function None 8
            9(c):      7(ptr) FunctionParameter
              11:             Label
              16:      6(int) AtomicIIncrement 9(c) 14 15
                              ReturnValue 16
                              FunctionEnd
      12(atoms():           2 Function None 3
              13:             Label
       35(origi):     34(ptr) Variable Function
       40(origu):      7(ptr) Variable Function
              39:     29(int) AtomicIAdd 37(atomi) 14 15 38
                              Store 35(origi) 39
              45:      6(int) Load 44(value)
              46:      6(int) AtomicAnd 42(atomu) 14 15 45
                              Store 40(origu) 46
              48:      6(int) AtomicOr 42(atomu) 14 15 47
                              Store 40(origu) 48
              49:      6(int) AtomicXor 42(atomu) 14 15 47
                              Store 40(origu) 49
              50:      6(int) Load 44(value)
              51:      6(int) AtomicUMin 42(atomu) 14 15 50
                              Store 40(origu) 51
              53:     29(int) AtomicSMax 37(atomi) 14 15 52
                              Store 35(origi) 53
              54:     29(int) Load 35(origi)
              55:     29(int) AtomicExchange 37(atomi) 14 15 54
                              Store 35(origi) 55
              57:      6(int) Load 44(value)
              58:      6(int) AtomicCompareExchange 42(atomu) 14 15 15 57 56
                              Store 40(origu) 58
              67:     66(ptr) AccessChain 63(result) 64 65
              68:     29(int) AtomicIAdd 67 14 15 64
                              Return
                              FunctionEnd
