Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
glslang
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Chen Yisong
glslang
Commits
73e3ce78
Commit
73e3ce78
authored
Apr 27, 2016
by
Rex Xu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
SPV: Handle matrix's OpFConvert vector by vector.
parent
9db3117e
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
163 additions
and
133 deletions
+163
-133
GlslangToSpv.cpp
SPIRV/GlslangToSpv.cpp
+5
-3
spv.matrix.frag.out
Test/baseResults/spv.matrix.frag.out
+152
-125
spv.matrix.frag
Test/spv.matrix.frag
+6
-5
No files found.
SPIRV/GlslangToSpv.cpp
View file @
73e3ce78
...
...
@@ -137,7 +137,7 @@ protected:
spv
::
Id
createBinaryMatrixOperation
(
spv
::
Op
,
spv
::
Decoration
precision
,
spv
::
Decoration
noContraction
,
spv
::
Id
typeId
,
spv
::
Id
left
,
spv
::
Id
right
);
spv
::
Id
createUnaryOperation
(
glslang
::
TOperator
op
,
spv
::
Decoration
precision
,
spv
::
Decoration
noContraction
,
spv
::
Id
typeId
,
spv
::
Id
operand
,
glslang
::
TBasicType
typeProxy
);
spv
::
Id
createUnaryMatrixOperation
(
spv
::
Op
,
spv
::
Decoration
precision
,
spv
::
Decoration
noContraction
,
spv
::
Id
typeId
,
spv
::
Id
operand
,
glslang
::
TBasicType
typeProxy
);
spv
::
Id
createConversion
(
glslang
::
TOperator
op
,
spv
::
Decoration
precision
,
spv
::
Id
destTypeId
,
spv
::
Id
operand
);
spv
::
Id
createConversion
(
glslang
::
TOperator
op
,
spv
::
Decoration
precision
,
spv
::
Decoration
noContraction
,
spv
::
Id
destTypeId
,
spv
::
Id
operand
,
glslang
::
TBasicType
typeProxy
);
spv
::
Id
makeSmearedConstant
(
spv
::
Id
constant
,
int
vectorSize
);
spv
::
Id
createAtomicOperation
(
glslang
::
TOperator
op
,
spv
::
Decoration
precision
,
spv
::
Id
typeId
,
std
::
vector
<
spv
::
Id
>&
operands
,
glslang
::
TBasicType
typeProxy
);
spv
::
Id
createInvocationsOperation
(
glslang
::
TOperator
,
spv
::
Id
typeId
,
spv
::
Id
operand
);
...
...
@@ -1071,7 +1071,7 @@ bool TGlslangToSpvTraverser::visitUnary(glslang::TVisit /* visit */, glslang::TI
// it could be a conversion
if
(
!
result
)
result
=
createConversion
(
node
->
getOp
(),
precision
,
convertGlslangToSpvType
(
node
->
getType
()),
operand
);
result
=
createConversion
(
node
->
getOp
(),
precision
,
noContraction
,
convertGlslangToSpvType
(
node
->
getType
()),
operand
,
node
->
getOperand
()
->
getBasicType
()
);
// if not, then possibly an operation
if
(
!
result
)
...
...
@@ -3331,7 +3331,7 @@ spv::Id TGlslangToSpvTraverser::createUnaryMatrixOperation(spv::Op op, spv::Deco
return
builder
.
setPrecision
(
builder
.
createCompositeConstruct
(
typeId
,
results
),
precision
);
}
spv
::
Id
TGlslangToSpvTraverser
::
createConversion
(
glslang
::
TOperator
op
,
spv
::
Decoration
precision
,
spv
::
Id
destType
,
spv
::
Id
operand
)
spv
::
Id
TGlslangToSpvTraverser
::
createConversion
(
glslang
::
TOperator
op
,
spv
::
Decoration
precision
,
spv
::
Decoration
noContraction
,
spv
::
Id
destType
,
spv
::
Id
operand
,
glslang
::
TBasicType
typeProxy
)
{
spv
::
Op
convOp
=
spv
::
OpNop
;
spv
::
Id
zero
=
0
;
...
...
@@ -3400,6 +3400,8 @@ spv::Id TGlslangToSpvTraverser::createConversion(glslang::TOperator op, spv::Dec
case
glslang
:
:
EOpConvDoubleToFloat
:
case
glslang
:
:
EOpConvFloatToDouble
:
convOp
=
spv
::
OpFConvert
;
if
(
builder
.
isMatrixType
(
destType
))
return
createUnaryMatrixOperation
(
convOp
,
precision
,
noContraction
,
destType
,
operand
,
typeProxy
);
break
;
case
glslang
:
:
EOpConvFloatToInt
:
...
...
Test/baseResults/spv.matrix.frag.out
View file @
73e3ce78
spv.matrix.frag
Warning, version 420 is not yet complete; most version-specific features are present, but some are missing.
Linked fragment stage:
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 2
40
// Id's are bound by 2
61
Capability Shader
Capability Float64
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 12 14 28 1
40 148 166
EntryPoint Fragment 4 "main" 12 14 28 1
61 169 187
ExecutionMode 4 OriginUpperLeft
Source GLSL
14
0
Source GLSL
42
0
Name 4 "main"
Name 10 "sum34"
Name 12 "m1"
Name 14 "m2"
Name 28 "f"
Name 138 "sum3"
Name 140 "v4"
Name 145 "sum4"
Name 148 "v3"
Name 153 "m43"
Name 158 "m4"
Name 166 "color"
Name 140 "dm"
Name 159 "sum3"
Name 161 "v4"
Name 166 "sum4"
Name 169 "v3"
Name 174 "m43"
Name 179 "m4"
Name 187 "color"
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
...
...
@@ -37,27 +41,32 @@ Linked fragment stage:
27: TypePointer Input 6(float)
28(f): 27(ptr) Variable Input
81: 6(float) Constant 1065353216
136: TypeVector 6(float) 3
137: TypePointer Function 136(fvec3)
139: TypePointer Input 7(fvec4)
140(v4): 139(ptr) Variable Input
144: TypePointer Function 7(fvec4)
147: TypePointer Input 136(fvec3)
148(v3): 147(ptr) Variable Input
151: TypeMatrix 136(fvec3) 4
152: TypePointer Function 151
156: TypeMatrix 7(fvec4) 4
157: TypePointer Function 156
165: TypePointer Output 7(fvec4)
166(color): 165(ptr) Variable Output
187: 6(float) Constant 0
136: TypeFloat 64
137: TypeVector 136(float) 4
138: TypeMatrix 137(fvec4) 3
139: TypePointer Function 138
157: TypeVector 6(float) 3
158: TypePointer Function 157(fvec3)
160: TypePointer Input 7(fvec4)
161(v4): 160(ptr) Variable Input
165: TypePointer Function 7(fvec4)
168: TypePointer Input 157(fvec3)
169(v3): 168(ptr) Variable Input
172: TypeMatrix 157(fvec3) 4
173: TypePointer Function 172
177: TypeMatrix 7(fvec4) 4
178: TypePointer Function 177
186: TypePointer Output 7(fvec4)
187(color): 186(ptr) Variable Output
208: 6(float) Constant 0
4(main): 2 Function None 3
5: Label
10(sum34): 9(ptr) Variable Function
138(sum3): 137(ptr) Variable Function
145(sum4): 144(ptr) Variable Function
153(m43): 152(ptr) Variable Function
158(m4): 157(ptr) Variable Function
140(dm): 139(ptr) Variable Function
159(sum3): 158(ptr) Variable Function
166(sum4): 165(ptr) Variable Function
174(m43): 173(ptr) Variable Function
179(m4): 178(ptr) Variable Function
13: 8 Load 12(m1)
15: 8 Load 14(m2)
16: 7(fvec4) CompositeExtract 13 0
...
...
@@ -185,102 +194,120 @@ Linked fragment stage:
134: 7(fvec4) FSub 133 128
135: 8 CompositeConstruct 130 132 134
Store 10(sum34) 135
141: 7(fvec4) Load 140(v4)
142: 8 Load 14(m2)
143: 136(fvec3) VectorTimesMatrix 141 142
Store 138(sum3) 143
146: 8 Load 14(m2)
149: 136(fvec3) Load 148(v3)
150: 7(fvec4) MatrixTimesVector 146 149
Store 145(sum4) 150
154: 8 Load 10(sum34)
155: 151 Transpose 154
Store 153(m43) 155
159: 8 Load 12(m1)
160: 151 Load 153(m43)
161: 156 MatrixTimesMatrix 159 160
Store 158(m4) 161
162: 7(fvec4) Load 140(v4)
163: 156 Load 158(m4)
164: 7(fvec4) VectorTimesMatrix 162 163
Store 145(sum4) 164
167: 7(fvec4) Load 145(sum4)
Store 166(color) 167
168: 8 Load 10(sum34)
169: 7(fvec4) CompositeConstruct 81 81 81 81
170: 7(fvec4) CompositeExtract 168 0
171: 7(fvec4) FAdd 170 169
172: 7(fvec4) CompositeExtract 168 1
173: 7(fvec4) FAdd 172 169
174: 7(fvec4) CompositeExtract 168 2
175: 7(fvec4) FAdd 174 169
176: 8 CompositeConstruct 171 173 175
Store 10(sum34) 176
177: 8 Load 10(sum34)
178: 7(fvec4) CompositeConstruct 81 81 81 81
179: 7(fvec4) CompositeExtract 177 0
180: 7(fvec4) FSub 179 178
181: 7(fvec4) CompositeExtract 177 1
182: 7(fvec4) FSub 181 178
183: 7(fvec4) CompositeExtract 177 2
184: 7(fvec4) FSub 183 178
185: 8 CompositeConstruct 180 182 184
Store 10(sum34) 185
186: 6(float) Load 28(f)
188: 7(fvec4) CompositeConstruct 186 187 187 187
189: 7(fvec4) CompositeConstruct 187 186 187 187
190: 7(fvec4) CompositeConstruct 187 187 186 187
191: 8 CompositeConstruct 188 189 190
192: 8 Load 10(sum34)
193: 7(fvec4) CompositeExtract 192 0
194: 7(fvec4) CompositeExtract 191 0
195: 7(fvec4) FAdd 193 194
196: 7(fvec4) CompositeExtract 192 1
197: 7(fvec4) CompositeExtract 191 1
198: 7(fvec4) FAdd 196 197
199: 7(fvec4) CompositeExtract 192 2
200: 7(fvec4) CompositeExtract 191 2
201: 7(fvec4) FAdd 199 200
202: 8 CompositeConstruct 195 198 201
Store 10(sum34) 202
203: 136(fvec3) Load 148(v3)
204: 6(float) Load 28(f)
205: 136(fvec3) Load 148(v3)
206: 6(float) Load 28(f)
207: 136(fvec3) Load 148(v3)
208: 6(float) Load 28(f)
209: 6(float) CompositeExtract 203 0
210: 6(float) CompositeExtract 203 1
211: 6(float) CompositeExtract 203 2
212: 6(float) CompositeExtract 205 0
213: 6(float) CompositeExtract 205 1
214: 6(float) CompositeExtract 205 2
215: 6(float) CompositeExtract 207 0
216: 6(float) CompositeExtract 207 1
217: 6(float) CompositeExtract 207 2
218: 7(fvec4) CompositeConstruct 209 210 211 204
219: 7(fvec4) CompositeConstruct 212 213 214 206
220: 7(fvec4) CompositeConstruct 215 216 217 208
221: 8 CompositeConstruct 218 219 220
222: 8 Load 10(sum34)
223: 7(fvec4) CompositeExtract 222 0
224: 7(fvec4) CompositeExtract 221 0
225: 7(fvec4) FAdd 223 224
226: 7(fvec4) CompositeExtract 222 1
227: 7(fvec4) CompositeExtract 221 1
228: 7(fvec4) FAdd 226 227
229: 7(fvec4) CompositeExtract 222 2
230: 7(fvec4) CompositeExtract 221 2
231: 7(fvec4) FAdd 229 230
232: 8 CompositeConstruct 225 228 231
Store 10(sum34) 232
233: 136(fvec3) Load 138(sum3)
234: 151 Load 153(m43)
235: 7(fvec4) VectorTimesMatrix 233 234
236: 7(fvec4) Load 145(sum4)
237: 7(fvec4) FAdd 235 236
238: 7(fvec4) Load 166(color)
239: 7(fvec4) FAdd 238 237
Store 166(color) 239
141: 8 Load 10(sum34)
142: 137(fvec4) CompositeExtract 141 0
143: 137(fvec4) FConvert 142
144: 137(fvec4) CompositeExtract 141 1
145: 137(fvec4) FConvert 144
146: 137(fvec4) CompositeExtract 141 2
147: 137(fvec4) FConvert 146
148: 138 CompositeConstruct 143 145 147
Store 140(dm) 148
149: 138 Load 140(dm)
150: 7(fvec4) CompositeExtract 149 0
151: 7(fvec4) FConvert 150
152: 7(fvec4) CompositeExtract 149 1
153: 7(fvec4) FConvert 152
154: 7(fvec4) CompositeExtract 149 2
155: 7(fvec4) FConvert 154
156: 8 CompositeConstruct 151 153 155
Store 10(sum34) 156
162: 7(fvec4) Load 161(v4)
163: 8 Load 14(m2)
164: 157(fvec3) VectorTimesMatrix 162 163
Store 159(sum3) 164
167: 8 Load 14(m2)
170: 157(fvec3) Load 169(v3)
171: 7(fvec4) MatrixTimesVector 167 170
Store 166(sum4) 171
175: 8 Load 10(sum34)
176: 172 Transpose 175
Store 174(m43) 176
180: 8 Load 12(m1)
181: 172 Load 174(m43)
182: 177 MatrixTimesMatrix 180 181
Store 179(m4) 182
183: 7(fvec4) Load 161(v4)
184: 177 Load 179(m4)
185: 7(fvec4) VectorTimesMatrix 183 184
Store 166(sum4) 185
188: 7(fvec4) Load 166(sum4)
Store 187(color) 188
189: 8 Load 10(sum34)
190: 7(fvec4) CompositeConstruct 81 81 81 81
191: 7(fvec4) CompositeExtract 189 0
192: 7(fvec4) FAdd 191 190
193: 7(fvec4) CompositeExtract 189 1
194: 7(fvec4) FAdd 193 190
195: 7(fvec4) CompositeExtract 189 2
196: 7(fvec4) FAdd 195 190
197: 8 CompositeConstruct 192 194 196
Store 10(sum34) 197
198: 8 Load 10(sum34)
199: 7(fvec4) CompositeConstruct 81 81 81 81
200: 7(fvec4) CompositeExtract 198 0
201: 7(fvec4) FSub 200 199
202: 7(fvec4) CompositeExtract 198 1
203: 7(fvec4) FSub 202 199
204: 7(fvec4) CompositeExtract 198 2
205: 7(fvec4) FSub 204 199
206: 8 CompositeConstruct 201 203 205
Store 10(sum34) 206
207: 6(float) Load 28(f)
209: 7(fvec4) CompositeConstruct 207 208 208 208
210: 7(fvec4) CompositeConstruct 208 207 208 208
211: 7(fvec4) CompositeConstruct 208 208 207 208
212: 8 CompositeConstruct 209 210 211
213: 8 Load 10(sum34)
214: 7(fvec4) CompositeExtract 213 0
215: 7(fvec4) CompositeExtract 212 0
216: 7(fvec4) FAdd 214 215
217: 7(fvec4) CompositeExtract 213 1
218: 7(fvec4) CompositeExtract 212 1
219: 7(fvec4) FAdd 217 218
220: 7(fvec4) CompositeExtract 213 2
221: 7(fvec4) CompositeExtract 212 2
222: 7(fvec4) FAdd 220 221
223: 8 CompositeConstruct 216 219 222
Store 10(sum34) 223
224: 157(fvec3) Load 169(v3)
225: 6(float) Load 28(f)
226: 157(fvec3) Load 169(v3)
227: 6(float) Load 28(f)
228: 157(fvec3) Load 169(v3)
229: 6(float) Load 28(f)
230: 6(float) CompositeExtract 224 0
231: 6(float) CompositeExtract 224 1
232: 6(float) CompositeExtract 224 2
233: 6(float) CompositeExtract 226 0
234: 6(float) CompositeExtract 226 1
235: 6(float) CompositeExtract 226 2
236: 6(float) CompositeExtract 228 0
237: 6(float) CompositeExtract 228 1
238: 6(float) CompositeExtract 228 2
239: 7(fvec4) CompositeConstruct 230 231 232 225
240: 7(fvec4) CompositeConstruct 233 234 235 227
241: 7(fvec4) CompositeConstruct 236 237 238 229
242: 8 CompositeConstruct 239 240 241
243: 8 Load 10(sum34)
244: 7(fvec4) CompositeExtract 243 0
245: 7(fvec4) CompositeExtract 242 0
246: 7(fvec4) FAdd 244 245
247: 7(fvec4) CompositeExtract 243 1
248: 7(fvec4) CompositeExtract 242 1
249: 7(fvec4) FAdd 247 248
250: 7(fvec4) CompositeExtract 243 2
251: 7(fvec4) CompositeExtract 242 2
252: 7(fvec4) FAdd 250 251
253: 8 CompositeConstruct 246 249 252
Store 10(sum34) 253
254: 157(fvec3) Load 159(sum3)
255: 172 Load 174(m43)
256: 7(fvec4) VectorTimesMatrix 254 255
257: 7(fvec4) Load 166(sum4)
258: 7(fvec4) FAdd 256 257
259: 7(fvec4) Load 187(color)
260: 7(fvec4) FAdd 259 258
Store 187(color) 260
Return
FunctionEnd
Test/spv.matrix.frag
View file @
73e3ce78
#version
14
0
#version
42
0
in
mat3x4
m1
;
in
mat3x4
m2
;
...
...
@@ -11,6 +11,7 @@ out vec4 color;
void
main
()
{
mat3x4
sum34
;
dmat3x4
dm
;
vec3
sum3
;
vec4
sum4
;
...
...
@@ -22,6 +23,8 @@ void main()
sum34
+=
f
/
m1
;
sum34
+=
f
;
sum34
-=
f
;
dm
=
dmat3x4
(
sum34
);
sum34
=
mat3x4
(
dm
);
sum3
=
v4
*
m2
;
sum4
=
m2
*
v3
;
...
...
@@ -33,10 +36,8 @@ void main()
color
=
sum4
;
//spv if (m1 != sum34)
++
sum34
;
// else
--
sum34
;
++
sum34
;
--
sum34
;
sum34
+=
mat3x4
(
f
);
sum34
+=
mat3x4
(
v3
,
f
,
v3
,
f
,
v3
,
f
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment