Full vector and fully specified vector swizzle stores are not affected by this change, only partial swizzles ie swizzles with fewer components than the vector being stored to. Previously the vector being stored to loaded and any components not specified in the swizzle were used to create a full store to the vector. While this change generates more SPIR-V instructions, it is necessary for correctness. Fixes #2518.
189 lines
9.5 KiB
Plaintext
189 lines
9.5 KiB
Plaintext
spv.memoryQualifier.frag
|
|
Validation failed
|
|
// Module Version 10000
|
|
// Generated by (magic number): 8000a
|
|
// Id's are bound by 105
|
|
|
|
Capability Shader
|
|
Capability ImageRect
|
|
Capability Image1D
|
|
1: ExtInstImport "GLSL.std.450"
|
|
MemoryModel Logical GLSL450
|
|
EntryPoint Fragment 4 "main"
|
|
ExecutionMode 4 OriginUpperLeft
|
|
Source GLSL 450
|
|
Name 4 "main"
|
|
Name 9 "texel"
|
|
Name 12 "i1D"
|
|
Name 19 "i2D"
|
|
Name 28 "i2DRect"
|
|
Name 35 "i3D"
|
|
Name 44 "iCube"
|
|
Name 49 "Data"
|
|
MemberName 49(Data) 0 "f1"
|
|
MemberName 49(Data) 1 "f2"
|
|
Name 50 "Buffer"
|
|
MemberName 50(Buffer) 0 "f1"
|
|
MemberName 50(Buffer) 1 "f2"
|
|
MemberName 50(Buffer) 2 "f3"
|
|
MemberName 50(Buffer) 3 "f4"
|
|
MemberName 50(Buffer) 4 "i1"
|
|
MemberName 50(Buffer) 5 "data"
|
|
Name 52 ""
|
|
Decorate 12(i1D) DescriptorSet 0
|
|
Decorate 12(i1D) Binding 0
|
|
Decorate 12(i1D) Coherent
|
|
Decorate 19(i2D) DescriptorSet 0
|
|
Decorate 19(i2D) Binding 1
|
|
Decorate 19(i2D) Volatile
|
|
Decorate 19(i2D) Coherent
|
|
Decorate 28(i2DRect) DescriptorSet 0
|
|
Decorate 28(i2DRect) Binding 2
|
|
Decorate 28(i2DRect) Restrict
|
|
Decorate 35(i3D) DescriptorSet 0
|
|
Decorate 35(i3D) Binding 3
|
|
Decorate 35(i3D) NonWritable
|
|
Decorate 44(iCube) DescriptorSet 0
|
|
Decorate 44(iCube) Binding 3
|
|
Decorate 44(iCube) NonReadable
|
|
MemberDecorate 49(Data) 0 Offset 0
|
|
MemberDecorate 49(Data) 1 Offset 8
|
|
MemberDecorate 50(Buffer) 0 Coherent
|
|
MemberDecorate 50(Buffer) 0 Volatile
|
|
MemberDecorate 50(Buffer) 0 Coherent
|
|
MemberDecorate 50(Buffer) 0 Offset 0
|
|
MemberDecorate 50(Buffer) 1 Coherent
|
|
MemberDecorate 50(Buffer) 1 Restrict
|
|
MemberDecorate 50(Buffer) 1 Offset 8
|
|
MemberDecorate 50(Buffer) 2 Coherent
|
|
MemberDecorate 50(Buffer) 2 NonWritable
|
|
MemberDecorate 50(Buffer) 2 Offset 16
|
|
MemberDecorate 50(Buffer) 3 Coherent
|
|
MemberDecorate 50(Buffer) 3 NonReadable
|
|
MemberDecorate 50(Buffer) 3 Offset 32
|
|
MemberDecorate 50(Buffer) 4 Coherent
|
|
MemberDecorate 50(Buffer) 4 Offset 48
|
|
MemberDecorate 50(Buffer) 5 Coherent
|
|
MemberDecorate 50(Buffer) 5 Offset 56
|
|
Decorate 50(Buffer) BufferBlock
|
|
Decorate 52 DescriptorSet 0
|
|
Decorate 52 Binding 4
|
|
2: TypeVoid
|
|
3: TypeFunction 2
|
|
6: TypeFloat 32
|
|
7: TypeVector 6(float) 4
|
|
8: TypePointer Function 7(fvec4)
|
|
10: TypeImage 6(float) 1D nonsampled format:R32f
|
|
11: TypePointer UniformConstant 10
|
|
12(i1D): 11(ptr) Variable UniformConstant
|
|
14: TypeInt 32 1
|
|
15: 14(int) Constant 1
|
|
17: TypeImage 6(float) 2D nonsampled format:R32f
|
|
18: TypePointer UniformConstant 17
|
|
19(i2D): 18(ptr) Variable UniformConstant
|
|
21: TypeVector 14(int) 2
|
|
22: 21(ivec2) ConstantComposite 15 15
|
|
26: TypeImage 6(float) Rect nonsampled format:R32f
|
|
27: TypePointer UniformConstant 26
|
|
28(i2DRect): 27(ptr) Variable UniformConstant
|
|
33: TypeImage 6(float) 3D nonsampled format:R32f
|
|
34: TypePointer UniformConstant 33
|
|
35(i3D): 34(ptr) Variable UniformConstant
|
|
37: TypeVector 14(int) 3
|
|
38: 37(ivec3) ConstantComposite 15 15 15
|
|
42: TypeImage 6(float) Cube nonsampled format:R32f
|
|
43: TypePointer UniformConstant 42
|
|
44(iCube): 43(ptr) Variable UniformConstant
|
|
47: TypeVector 6(float) 2
|
|
48: TypeVector 6(float) 3
|
|
49(Data): TypeStruct 6(float) 47(fvec2)
|
|
50(Buffer): TypeStruct 6(float) 47(fvec2) 48(fvec3) 7(fvec4) 14(int) 49(Data)
|
|
51: TypePointer Uniform 50(Buffer)
|
|
52: 51(ptr) Variable Uniform
|
|
53: 14(int) Constant 4
|
|
54: TypePointer Uniform 14(int)
|
|
57: 14(int) Constant 0
|
|
58: TypePointer Uniform 6(float)
|
|
61: TypePointer Function 6(float)
|
|
63: TypePointer Uniform 47(fvec2)
|
|
69: TypeInt 32 0
|
|
70: 69(int) Constant 0
|
|
73: 69(int) Constant 1
|
|
76: 14(int) Constant 2
|
|
77: TypePointer Uniform 48(fvec3)
|
|
87: 69(int) Constant 2
|
|
90: 14(int) Constant 5
|
|
96: 69(int) Constant 3
|
|
101: 14(int) Constant 3
|
|
103: TypePointer Uniform 7(fvec4)
|
|
4(main): 2 Function None 3
|
|
5: Label
|
|
9(texel): 8(ptr) Variable Function
|
|
13: 10 Load 12(i1D)
|
|
16: 7(fvec4) ImageRead 13 15
|
|
Store 9(texel) 16
|
|
20: 17 Load 19(i2D)
|
|
23: 7(fvec4) ImageRead 20 22
|
|
24: 7(fvec4) Load 9(texel)
|
|
25: 7(fvec4) FAdd 24 23
|
|
Store 9(texel) 25
|
|
29: 26 Load 28(i2DRect)
|
|
30: 7(fvec4) ImageRead 29 22
|
|
31: 7(fvec4) Load 9(texel)
|
|
32: 7(fvec4) FAdd 31 30
|
|
Store 9(texel) 32
|
|
36: 33 Load 35(i3D)
|
|
39: 7(fvec4) ImageRead 36 38
|
|
40: 7(fvec4) Load 9(texel)
|
|
41: 7(fvec4) FAdd 40 39
|
|
Store 9(texel) 41
|
|
45: 42 Load 44(iCube)
|
|
46: 7(fvec4) Load 9(texel)
|
|
ImageWrite 45 38 46
|
|
55: 54(ptr) AccessChain 52 53
|
|
56: 14(int) Load 55
|
|
59: 58(ptr) AccessChain 52 57
|
|
60: 6(float) Load 59
|
|
62: 61(ptr) AccessChain 9(texel) 56
|
|
Store 62 60
|
|
64: 63(ptr) AccessChain 52 15
|
|
65: 47(fvec2) Load 64
|
|
66: 7(fvec4) Load 9(texel)
|
|
67: 47(fvec2) VectorShuffle 66 66 0 1
|
|
68: 47(fvec2) FAdd 67 65
|
|
71: 61(ptr) AccessChain 9(texel) 70
|
|
72: 6(float) CompositeExtract 68 0
|
|
Store 71 72
|
|
74: 61(ptr) AccessChain 9(texel) 73
|
|
75: 6(float) CompositeExtract 68 1
|
|
Store 74 75
|
|
78: 77(ptr) AccessChain 52 76
|
|
79: 48(fvec3) Load 78
|
|
80: 7(fvec4) Load 9(texel)
|
|
81: 48(fvec3) VectorShuffle 80 80 0 1 2
|
|
82: 48(fvec3) FSub 81 79
|
|
83: 61(ptr) AccessChain 9(texel) 70
|
|
84: 6(float) CompositeExtract 82 0
|
|
Store 83 84
|
|
85: 61(ptr) AccessChain 9(texel) 73
|
|
86: 6(float) CompositeExtract 82 1
|
|
Store 85 86
|
|
88: 61(ptr) AccessChain 9(texel) 87
|
|
89: 6(float) CompositeExtract 82 2
|
|
Store 88 89
|
|
91: 58(ptr) AccessChain 52 90 57
|
|
92: 6(float) Load 91
|
|
93: 58(ptr) AccessChain 52 90 15 73
|
|
94: 6(float) Load 93
|
|
95: 6(float) FAdd 92 94
|
|
97: 61(ptr) AccessChain 9(texel) 96
|
|
98: 6(float) Load 97
|
|
99: 6(float) FAdd 98 95
|
|
100: 61(ptr) AccessChain 9(texel) 96
|
|
Store 100 99
|
|
102: 7(fvec4) Load 9(texel)
|
|
104: 103(ptr) AccessChain 52 101
|
|
Store 104 102
|
|
Return
|
|
FunctionEnd
|