spv.atomic.comp
-Warning, version 310 is not yet complete; most version-specific features are present, but some are missing.
-
-Shader version: 310
-local_size = (1, 1, 1)
-0:? Sequence
-0:14 Function Definition: func(au1; (global highp uint)
-0:14 Function Parameters:
-0:14 'c' (in highp atomic_uint)
-0:16 Sequence
-0:16 Branch: Return with expression
-0:16 AtomicCounterIncrement (global highp uint)
-0:16 'c' (in highp atomic_uint)
-0:19 Function Definition: main( (global void)
-0:19 Function Parameters:
-0:21 Sequence
-0:21 MemoryBarrierAtomicCounter (global void)
-0:22 Function Call: func(au1; (global highp uint)
-0:22 'counter' (layout(binding=0 offset=0 ) uniform highp atomic_uint)
-0:23 Sequence
-0:23 move second child to first child (temp highp uint)
-0:23 'val' (temp highp uint)
-0:23 AtomicCounter (global highp uint)
-0:23 direct index (layout(binding=0 offset=4 ) temp highp atomic_uint)
-0:23 'countArr' (layout(binding=0 offset=4 ) uniform 4-element array of highp atomic_uint)
-0:23 Constant:
-0:23 2 (const int)
-0:24 AtomicCounterDecrement (global highp uint)
-0:24 'counter' (layout(binding=0 offset=0 ) uniform highp atomic_uint)
-0:36 Function Definition: atoms( (global void)
-0:36 Function Parameters:
-0:38 Sequence
-0:38 Sequence
-0:38 move second child to first child (temp highp int)
-0:38 'origi' (temp highp int)
-0:38 AtomicAdd (global highp int)
-0:38 'atomi' (shared highp int)
-0:38 Constant:
-0:38 3 (const int)
-0:39 Sequence
-0:39 move second child to first child (temp highp uint)
-0:39 'origu' (temp highp uint)
-0:39 AtomicAnd (global highp uint)
-0:39 'atomu' (shared highp uint)
-0:39 'value' (shared highp uint)
-0:40 move second child to first child (temp highp uint)
-0:40 'origu' (temp highp uint)
-0:40 AtomicOr (global highp uint)
-0:40 'atomu' (shared highp uint)
-0:40 Constant:
-0:40 7 (const uint)
-0:41 move second child to first child (temp highp uint)
-0:41 'origu' (temp highp uint)
-0:41 AtomicXor (global highp uint)
-0:41 'atomu' (shared highp uint)
-0:41 Constant:
-0:41 7 (const uint)
-0:42 move second child to first child (temp highp uint)
-0:42 'origu' (temp highp uint)
-0:42 AtomicMin (global highp uint)
-0:42 'atomu' (shared highp uint)
-0:42 'value' (shared highp uint)
-0:43 move second child to first child (temp highp int)
-0:43 'origi' (temp highp int)
-0:43 AtomicMax (global highp int)
-0:43 'atomi' (shared highp int)
-0:43 Constant:
-0:43 7 (const int)
-0:44 move second child to first child (temp highp int)
-0:44 'origi' (temp highp int)
-0:44 AtomicExchange (global highp int)
-0:44 'atomi' (shared highp int)
-0:44 'origi' (temp highp int)
-0:45 move second child to first child (temp highp uint)
-0:45 'origu' (temp highp uint)
-0:45 AtomicCompSwap (global highp uint)
-0:45 'atomu' (shared highp uint)
-0:45 Constant:
-0:45 10 (const uint)
-0:45 'value' (shared highp uint)
-0:46 AtomicAdd (global highp int)
-0:46 direct index (temp highp int)
-0:46 n_frames_rendered: direct index for structure (layout(column_major std140 offset=16 ) buffer highp 4-component vector of int)
-0:46 'result' (layout(binding=0 column_major std140 ) restrict buffer block{layout(column_major std140 offset=0 ) buffer highp float f, layout(column_major std140 offset=16 ) buffer highp 4-component vector of int n_frames_rendered})
-0:46 Constant:
-0:46 1 (const int)
-0:46 Constant:
-0:46 2 (const int)
-0:46 Constant:
-0:46 1 (const int)
-0:? Linker Objects
-0:? 'counter' (layout(binding=0 offset=0 ) uniform highp atomic_uint)
-0:? 'countArr' (layout(binding=0 offset=4 ) uniform 4-element array of highp atomic_uint)
-0:? 'value' (shared highp uint)
-0:? 'arrX' (global 1-element array of highp int)
-0:? 'arrY' (global 1-element array of highp int)
-0:? 'arrZ' (global 1-element array of highp int)
-0:? 'atomi' (shared highp int)
-0:? 'atomu' (shared highp uint)
-0:? 'result' (layout(binding=0 column_major std140 ) restrict buffer block{layout(column_major std140 offset=0 ) buffer highp float f, layout(column_major std140 offset=16 ) buffer highp 4-component vector of int n_frames_rendered})
+Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
Linked compute stage:
-Shader version: 310
-local_size = (1, 1, 1)
-0:? Sequence
-0:14 Function Definition: func(au1; (global highp uint)
-0:14 Function Parameters:
-0:14 'c' (in highp atomic_uint)
-0:16 Sequence
-0:16 Branch: Return with expression
-0:16 AtomicCounterIncrement (global highp uint)
-0:16 'c' (in highp atomic_uint)
-0:19 Function Definition: main( (global void)
-0:19 Function Parameters:
-0:21 Sequence
-0:21 MemoryBarrierAtomicCounter (global void)
-0:22 Function Call: func(au1; (global highp uint)
-0:22 'counter' (layout(binding=0 offset=0 ) uniform highp atomic_uint)
-0:23 Sequence
-0:23 move second child to first child (temp highp uint)
-0:23 'val' (temp highp uint)
-0:23 AtomicCounter (global highp uint)
-0:23 direct index (layout(binding=0 offset=4 ) temp highp atomic_uint)
-0:23 'countArr' (layout(binding=0 offset=4 ) uniform 4-element array of highp atomic_uint)
-0:23 Constant:
-0:23 2 (const int)
-0:24 AtomicCounterDecrement (global highp uint)
-0:24 'counter' (layout(binding=0 offset=0 ) uniform highp atomic_uint)
-0:36 Function Definition: atoms( (global void)
-0:36 Function Parameters:
-0:38 Sequence
-0:38 Sequence
-0:38 move second child to first child (temp highp int)
-0:38 'origi' (temp highp int)
-0:38 AtomicAdd (global highp int)
-0:38 'atomi' (shared highp int)
-0:38 Constant:
-0:38 3 (const int)
-0:39 Sequence
-0:39 move second child to first child (temp highp uint)
-0:39 'origu' (temp highp uint)
-0:39 AtomicAnd (global highp uint)
-0:39 'atomu' (shared highp uint)
-0:39 'value' (shared highp uint)
-0:40 move second child to first child (temp highp uint)
-0:40 'origu' (temp highp uint)
-0:40 AtomicOr (global highp uint)
-0:40 'atomu' (shared highp uint)
-0:40 Constant:
-0:40 7 (const uint)
-0:41 move second child to first child (temp highp uint)
-0:41 'origu' (temp highp uint)
-0:41 AtomicXor (global highp uint)
-0:41 'atomu' (shared highp uint)
-0:41 Constant:
-0:41 7 (const uint)
-0:42 move second child to first child (temp highp uint)
-0:42 'origu' (temp highp uint)
-0:42 AtomicMin (global highp uint)
-0:42 'atomu' (shared highp uint)
-0:42 'value' (shared highp uint)
-0:43 move second child to first child (temp highp int)
-0:43 'origi' (temp highp int)
-0:43 AtomicMax (global highp int)
-0:43 'atomi' (shared highp int)
-0:43 Constant:
-0:43 7 (const int)
-0:44 move second child to first child (temp highp int)
-0:44 'origi' (temp highp int)
-0:44 AtomicExchange (global highp int)
-0:44 'atomi' (shared highp int)
-0:44 'origi' (temp highp int)
-0:45 move second child to first child (temp highp uint)
-0:45 'origu' (temp highp uint)
-0:45 AtomicCompSwap (global highp uint)
-0:45 'atomu' (shared highp uint)
-0:45 Constant:
-0:45 10 (const uint)
-0:45 'value' (shared highp uint)
-0:46 AtomicAdd (global highp int)
-0:46 direct index (temp highp int)
-0:46 n_frames_rendered: direct index for structure (layout(column_major std140 offset=16 ) buffer highp 4-component vector of int)
-0:46 'result' (layout(binding=0 column_major std140 ) restrict buffer block{layout(column_major std140 offset=0 ) buffer highp float f, layout(column_major std140 offset=16 ) buffer highp 4-component vector of int n_frames_rendered})
-0:46 Constant:
-0:46 1 (const int)
-0:46 Constant:
-0:46 2 (const int)
-0:46 Constant:
-0:46 1 (const int)
-0:? Linker Objects
-0:? 'counter' (layout(binding=0 offset=0 ) uniform highp atomic_uint)
-0:? 'countArr' (layout(binding=0 offset=4 ) uniform 4-element array of highp atomic_uint)
-0:? 'value' (shared highp uint)
-0:? 'arrX' (global 1-element array of highp int)
-0:? 'arrY' (global 1-element array of highp int)
-0:? 'arrZ' (global 1-element array of highp int)
-0:? 'atomi' (shared highp int)
-0:? 'atomu' (shared highp uint)
-0:? 'result' (layout(binding=0 column_major std140 ) restrict buffer block{layout(column_major std140 offset=0 ) buffer highp float f, layout(column_major std140 offset=16 ) buffer highp 4-component vector of int n_frames_rendered})
+// Module Version 10000
+// Generated by (magic number): 80001
+// Id's are bound by 73
+ Capability Shader
+ Capability AtomicStorage
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint GLCompute 4 "main"
+ ExecutionMode 4 LocalSize 1 1 1
+ Source GLSL 450
+ Name 4 "main"
+ Name 10 "func(au1;"
+ Name 9 "c"
+ Name 12 "atoms("
+ Name 20 "counter"
+ Name 23 "val"
+ Name 27 "countArr"
+ Name 35 "origi"
+ Name 37 "atomi"
+ Name 40 "origu"
+ Name 42 "atomu"
+ Name 43 "value"
+ Name 60 "dataSSB"
+ MemberName 60(dataSSB) 0 "f"
+ MemberName 60(dataSSB) 1 "n_frames_rendered"
+ Name 62 "result"
+ Name 70 "arrX"
+ Name 71 "arrY"
+ Name 72 "arrZ"
+ Decorate 20(counter) Binding 0
+ Decorate 27(countArr) Binding 0
+ MemberDecorate 60(dataSSB) 0 Restrict
+ MemberDecorate 60(dataSSB) 0 Offset 0
+ MemberDecorate 60(dataSSB) 1 Restrict
+ MemberDecorate 60(dataSSB) 1 Offset 16
+ Decorate 60(dataSSB) BufferBlock
+ Decorate 62(result) DescriptorSet 0
+ Decorate 62(result) Binding 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeInt 32 0
+ 7: TypePointer AtomicCounter 6(int)
+ 8: TypeFunction 6(int) 7(ptr)
+ 14: 6(int) Constant 1
+ 15: 6(int) Constant 0
+ 19: 6(int) Constant 1024
+ 20(counter): 7(ptr) Variable AtomicCounter
+ 22: TypePointer Function 6(int)
+ 24: 6(int) Constant 4
+ 25: TypeArray 6(int) 24
+ 26: TypePointer AtomicCounter 25
+ 27(countArr): 26(ptr) Variable AtomicCounter
+ 28: TypeInt 32 1
+ 29: 28(int) Constant 2
+ 34: TypePointer Function 28(int)
+ 36: TypePointer Workgroup 28(int)
+ 37(atomi): 36(ptr) Variable Workgroup
+ 38: 28(int) Constant 3
+ 41: TypePointer Workgroup 6(int)
+ 42(atomu): 41(ptr) Variable Workgroup
+ 43(value): 41(ptr) Variable Workgroup
+ 46: 6(int) Constant 7
+ 51: 28(int) Constant 7
+ 55: 6(int) Constant 10
+ 58: TypeFloat 32
+ 59: TypeVector 28(int) 4
+ 60(dataSSB): TypeStruct 58(float) 59(ivec4)
+ 61: TypePointer Uniform 60(dataSSB)
+ 62(result): 61(ptr) Variable Uniform
+ 63: 28(int) Constant 1
+ 64: 6(int) Constant 2
+ 65: TypePointer Uniform 28(int)
+ 68: TypeArray 28(int) 14
+ 69: TypePointer Private 68
+ 70(arrX): 69(ptr) Variable Private
+ 71(arrY): 69(ptr) Variable Private
+ 72(arrZ): 69(ptr) Variable Private
+ 4(main): 2 Function None 3
+ 5: Label
+ 23(val): 22(ptr) Variable Function
+ MemoryBarrier 14 19
+ 21: 6(int) FunctionCall 10(func(au1;) 20(counter)
+ 30: 7(ptr) AccessChain 27(countArr) 29
+ 31: 6(int) AtomicLoad 30 14 15
+ Store 23(val) 31
+ 32: 6(int) AtomicIDecrement 20(counter) 14 15
+ 33: 6(int) AtomicIIncrement 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): 22(ptr) Variable Function
+ 39: 28(int) AtomicIAdd 37(atomi) 14 15 38
+ Store 35(origi) 39
+ 44: 6(int) Load 43(value)
+ 45: 6(int) AtomicAnd 42(atomu) 14 15 44
+ Store 40(origu) 45
+ 47: 6(int) AtomicOr 42(atomu) 14 15 46
+ Store 40(origu) 47
+ 48: 6(int) AtomicXor 42(atomu) 14 15 46
+ Store 40(origu) 48
+ 49: 6(int) Load 43(value)
+ 50: 6(int) AtomicUMin 42(atomu) 14 15 49
+ Store 40(origu) 50
+ 52: 28(int) AtomicSMax 37(atomi) 14 15 51
+ Store 35(origi) 52
+ 53: 28(int) Load 35(origi)
+ 54: 28(int) AtomicExchange 37(atomi) 14 15 53
+ Store 35(origi) 54
+ 56: 6(int) Load 43(value)
+ 57: 6(int) AtomicCompareExchange 42(atomu) 14 15 15 56 55
+ Store 40(origu) 57
+ 66: 65(ptr) AccessChain 62(result) 63 64
+ 67: 28(int) AtomicIAdd 66 14 15 63
+ Return
+ FunctionEnd