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 75 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 21 "counter" Name 22 "param" Name 25 "val" Name 29 "countArr" Name 36 "origi" Name 38 "atomi" Name 41 "origu" Name 43 "atomu" Name 45 "value" Name 62 "dataSSB" MemberName 62(dataSSB) 0 "f" MemberName 62(dataSSB) 1 "n_frames_rendered" Name 64 "result" Name 72 "arrX" Name 73 "arrY" Name 74 "arrZ" Decorate 21(counter) Binding 0 Decorate 29(countArr) Binding 0 MemberDecorate 62(dataSSB) 0 Offset 0 MemberDecorate 62(dataSSB) 1 Offset 16 Decorate 62(dataSSB) BufferBlock Decorate 64(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 19: 6(int) Constant 1024 20: TypePointer AtomicCounter 6(int) 21(counter): 20(ptr) Variable AtomicCounter 26: 6(int) Constant 4 27: TypeArray 6(int) 26 28: TypePointer AtomicCounter 27 29(countArr): 28(ptr) Variable AtomicCounter 30: TypeInt 32 1 31: 30(int) Constant 2 35: TypePointer Function 30(int) 37: TypePointer Workgroup 30(int) 38(atomi): 37(ptr) Variable Workgroup 39: 30(int) Constant 3 42: TypePointer Workgroup 6(int) 43(atomu): 42(ptr) Variable Workgroup 44: TypePointer UniformConstant 6(int) 45(value): 44(ptr) Variable UniformConstant 48: 6(int) Constant 7 53: 30(int) Constant 7 57: 6(int) Constant 10 60: TypeFloat 32 61: TypeVector 30(int) 4 62(dataSSB): TypeStruct 60(float) 61(ivec4) 63: TypePointer Uniform 62(dataSSB) 64(result): 63(ptr) Variable Uniform 65: 30(int) Constant 1 66: 6(int) Constant 2 67: TypePointer Uniform 30(int) 70: TypeArray 30(int) 14 71: TypePointer Private 70 72(arrX): 71(ptr) Variable Private 73(arrY): 71(ptr) Variable Private 74(arrZ): 71(ptr) Variable Private 4(main): 2 Function None 3 5: Label 22(param): 7(ptr) Variable Function 25(val): 7(ptr) Variable Function MemoryBarrier 14 19 23: 6(int) Load 21(counter) Store 22(param) 23 24: 6(int) FunctionCall 10(func(au1;) 22(param) 32: 20(ptr) AccessChain 29(countArr) 31 33: 6(int) AtomicLoad 32 14 15 Store 25(val) 33 34: 6(int) AtomicIDecrement 21(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 36(origi): 35(ptr) Variable Function 41(origu): 7(ptr) Variable Function 40: 30(int) AtomicIAdd 38(atomi) 14 15 39 Store 36(origi) 40 46: 6(int) Load 45(value) 47: 6(int) AtomicAnd 43(atomu) 14 15 46 Store 41(origu) 47 49: 6(int) AtomicOr 43(atomu) 14 15 48 Store 41(origu) 49 50: 6(int) AtomicXor 43(atomu) 14 15 48 Store 41(origu) 50 51: 6(int) Load 45(value) 52: 6(int) AtomicUMin 43(atomu) 14 15 51 Store 41(origu) 52 54: 30(int) AtomicSMax 38(atomi) 14 15 53 Store 36(origi) 54 55: 30(int) Load 36(origi) 56: 30(int) AtomicExchange 38(atomi) 14 15 55 Store 36(origi) 56 58: 6(int) Load 45(value) 59: 6(int) AtomicCompareExchange 43(atomu) 14 15 15 58 57 Store 41(origu) 59 68: 67(ptr) AccessChain 64(result) 65 66 69: 30(int) AtomicIAdd 68 14 15 65 Return FunctionEnd