Apply memory decorations from GLSL source to the top-level OpVariable. Previously, these decorations would only be applied to individual members. While this is correct behavior, it is more convenient for some front ends to see the decorations (specifically ReadOnly and WriteOnly) applied to the whole variable rather than individual members.
131 lines
6.5 KiB
Text
131 lines
6.5 KiB
Text
spv.atomic.comp
|
|
// Module Version 10000
|
|
// Generated by (magic number): 8000b
|
|
// 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) Binding 0
|
|
Decorate 20(counter) DescriptorSet 0
|
|
Decorate 20(counter) Offset 0
|
|
Decorate 27(countArr) Binding 0
|
|
Decorate 27(countArr) DescriptorSet 0
|
|
Decorate 27(countArr) Offset 4
|
|
Decorate 62(dataSSB) BufferBlock
|
|
MemberDecorate 62(dataSSB) 0 Restrict
|
|
MemberDecorate 62(dataSSB) 0 Offset 0
|
|
MemberDecorate 62(dataSSB) 1 Restrict
|
|
MemberDecorate 62(dataSSB) 1 Offset 16
|
|
Decorate 64(result) Restrict
|
|
Decorate 64(result) Binding 0
|
|
Decorate 64(result) DescriptorSet 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
|