-spv.atomic.comp\r
-Warning, version 310 is not yet complete; most version-specific features are present, but some are missing.\r
-\r
-\r
-Linked compute stage:\r
-\r
-\r
-TBD functionality: Is atomic_uint an opaque handle in the uniform storage class, or an addresses in the atomic storage class?\r
-// Module Version 99\r
-// Generated by (magic number): 51a00bb\r
-// Id's are bound by 64\r
-\r
- Source ESSL 310\r
- Capability Shader\r
- 1: ExtInstImport "GLSL.std.450"\r
- MemoryModel Logical GLSL450\r
- EntryPoint GLCompute 4 "main"\r
- Name 4 "main"\r
- Name 10 "func(au1;"\r
- Name 9 "c"\r
- Name 12 "atoms("\r
- Name 20 "counter"\r
- Name 21 "param"\r
- Name 24 "val"\r
- Name 28 "countArr"\r
- Name 35 "origi"\r
- Name 37 "atomi"\r
- Name 40 "origu"\r
- Name 42 "atomu"\r
- Name 44 "value"\r
- Name 61 "arrX"\r
- Name 62 "arrY"\r
- Name 63 "arrZ"\r
- Decorate 20(counter) Binding 0\r
- Decorate 28(countArr) Binding 0\r
- Decorate 61(arrX) NoStaticUse\r
- Decorate 62(arrY) NoStaticUse\r
- Decorate 63(arrZ) NoStaticUse\r
- 2: TypeVoid\r
- 3: TypeFunction 2\r
- 6: TypeInt 32 0\r
- 7: TypePointer Function 6(int)\r
- 8: TypeFunction 6(int) 7(ptr)\r
- 14: 6(int) Constant 1\r
- 15: 6(int) Constant 0\r
- 18: 6(int) Constant 256\r
- 19: TypePointer AtomicCounter 6(int)\r
- 20(counter): 19(ptr) Variable AtomicCounter\r
- 25: 6(int) Constant 4\r
- 26: TypeArray 6(int) 25\r
- 27: TypePointer AtomicCounter 26\r
- 28(countArr): 27(ptr) Variable AtomicCounter\r
- 29: TypeInt 32 1\r
- 30: 29(int) Constant 2\r
- 34: TypePointer Function 29(int)\r
- 36: TypePointer WorkgroupLocal 29(int)\r
- 37(atomi): 36(ptr) Variable WorkgroupLocal\r
- 38: 29(int) Constant 3\r
- 41: TypePointer WorkgroupLocal 6(int)\r
- 42(atomu): 41(ptr) Variable WorkgroupLocal\r
- 43: TypePointer UniformConstant 6(int)\r
- 44(value): 43(ptr) Variable UniformConstant\r
- 47: 6(int) Constant 7\r
- 52: 29(int) Constant 7\r
- 56: 6(int) Constant 10\r
- 59: TypeArray 29(int) 14\r
- 60: TypePointer PrivateGlobal 59\r
- 61(arrX): 60(ptr) Variable PrivateGlobal\r
- 62(arrY): 60(ptr) Variable PrivateGlobal\r
- 63(arrZ): 60(ptr) Variable PrivateGlobal\r
- 4(main): 2 Function None 3\r
- 5: Label\r
- 21(param): 7(ptr) Variable Function\r
- 24(val): 7(ptr) Variable Function\r
- MemoryBarrier 14 18\r
- 22: 6(int) Load 20(counter)\r
- Store 21(param) 22\r
- 23: 6(int) FunctionCall 10(func(au1;) 21(param)\r
- 31: 19(ptr) AccessChain 28(countArr) 30\r
- 32: 6(int) AtomicLoad 31 14 15\r
- Store 24(val) 32\r
- 33: 6(int) AtomicIDecrement 20(counter) 14 15\r
- Return\r
- FunctionEnd\r
- 10(func(au1;): 6(int) Function None 8\r
- 9(c): 7(ptr) FunctionParameter\r
- 11: Label\r
- 16: 6(int) AtomicIIncrement 9(c) 14 15\r
- ReturnValue 16\r
- FunctionEnd\r
- 12(atoms(): 2 Function None 3\r
- 13: Label\r
- 35(origi): 34(ptr) Variable Function\r
- 40(origu): 7(ptr) Variable Function\r
- 39: 29(int) AtomicIAdd 37(atomi) 14 15 38\r
- Store 35(origi) 39\r
- 45: 6(int) Load 44(value)\r
- 46: 6(int) AtomicAnd 42(atomu) 14 15 45\r
- Store 40(origu) 46\r
- 48: 6(int) AtomicOr 42(atomu) 14 15 47\r
- Store 40(origu) 48\r
- 49: 6(int) AtomicXor 42(atomu) 14 15 47\r
- Store 40(origu) 49\r
- 50: 6(int) Load 44(value)\r
- 51: 6(int) AtomicUMin 42(atomu) 14 15 50\r
- Store 40(origu) 51\r
- 53: 29(int) AtomicSMax 37(atomi) 14 15 52\r
- Store 35(origi) 53\r
- 54: 29(int) Load 35(origi)\r
- 55: 29(int) AtomicExchange 37(atomi) 14 15 54\r
- Store 35(origi) 55\r
- 57: 6(int) Load 44(value)\r
- 58: 6(int) AtomicCompareExchange 42(atomu) 14 15 15 57 56\r
- Store 40(origu) 58\r
- Return\r
- FunctionEnd\r
+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