You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

131 lines
6.4 KiB

spv.atomic.comp
// Module Version 10000
// Generated by (magic number): 8000a
// Id's are bound by 74
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 37 "origi"
Name 39 "atomi"
Name 42 "origu"
Name 44 "atomu"
Name 45 "value"
Name 62 "dataSSB"
MemberName 62(dataSSB) 0 "f"
MemberName 62(dataSSB) 1 "n_frames_rendered"
Name 64 "result"
Name 71 "arrX"
Name 72 "arrY"
Name 73 "arrZ"
Decorate 20(counter) Offset 0
Decorate 20(counter) DescriptorSet 0
Decorate 20(counter) Binding 0
Decorate 27(countArr) Offset 4
Decorate 27(countArr) DescriptorSet 0
Decorate 27(countArr) Binding 0
MemberDecorate 62(dataSSB) 0 Restrict
MemberDecorate 62(dataSSB) 0 Offset 0
MemberDecorate 62(dataSSB) 1 Restrict
MemberDecorate 62(dataSSB) 1 Offset 16
Decorate 62(dataSSB) BufferBlock
Decorate 64(result) DescriptorSet 0
Decorate 64(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 1032
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
33: 28(int) Constant 1
36: TypePointer Function 28(int)
38: TypePointer Workgroup 28(int)
39(atomi): 38(ptr) Variable Workgroup
40: 28(int) Constant 3
43: TypePointer Workgroup 6(int)
44(atomu): 43(ptr) Variable Workgroup
45(value): 43(ptr) Variable Workgroup
48: 6(int) Constant 7
53: 28(int) Constant 7
57: 6(int) Constant 10
60: TypeFloat 32
61: TypeVector 28(int) 4
62(dataSSB): TypeStruct 60(float) 61(ivec4)
63: TypePointer Uniform 62(dataSSB)
64(result): 63(ptr) Variable Uniform
65: 6(int) Constant 2
66: TypePointer Uniform 28(int)
69: TypeArray 28(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
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
34: 6(int) ISub 32 33
35: 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
37(origi): 36(ptr) Variable Function
42(origu): 22(ptr) Variable Function
41: 28(int) AtomicIAdd 39(atomi) 14 15 40
Store 37(origi) 41
46: 6(int) Load 45(value)
47: 6(int) AtomicAnd 44(atomu) 14 15 46
Store 42(origu) 47
49: 6(int) AtomicOr 44(atomu) 14 15 48
Store 42(origu) 49
50: 6(int) AtomicXor 44(atomu) 14 15 48
Store 42(origu) 50
51: 6(int) Load 45(value)
52: 6(int) AtomicUMin 44(atomu) 14 15 51
Store 42(origu) 52
54: 28(int) AtomicSMax 39(atomi) 14 15 53
Store 37(origi) 54
55: 28(int) Load 37(origi)
56: 28(int) AtomicExchange 39(atomi) 14 15 55
Store 37(origi) 56
58: 6(int) Load 45(value)
59: 6(int) AtomicCompareExchange 44(atomu) 14 15 15 58 57
Store 42(origu) 59
67: 66(ptr) AccessChain 64(result) 33 65
68: 28(int) AtomicIAdd 67 14 15 33
Return
FunctionEnd