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
e434ad92
Commit
e434ad92
authored
Mar 30, 2017
by
John Kessenich
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix #809: smear scalar condition in OpSelect for selecting vector operands.
parent
4dc835c3
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
72 additions
and
56 deletions
+72
-56
GlslangToSpv.cpp
SPIRV/GlslangToSpv.cpp
+9
-1
spv.bool.vert.out
Test/baseResults/spv.bool.vert.out
+7
-5
spv.deepRvalue.frag.out
Test/baseResults/spv.deepRvalue.frag.out
+40
-38
spv.image.frag.out
Test/baseResults/spv.image.frag.out
+11
-9
spv.specConstantOperations.vert.out
Test/baseResults/spv.specConstantOperations.vert.out
+4
-2
revision.h
glslang/Include/revision.h
+1
-1
No files found.
SPIRV/GlslangToSpv.cpp
View file @
e434ad92
...
@@ -1823,7 +1823,15 @@ bool TGlslangToSpvTraverser::visitSelection(glslang::TVisit /* visit */, glslang
...
@@ -1823,7 +1823,15 @@ bool TGlslangToSpvTraverser::visitSelection(glslang::TVisit /* visit */, glslang
node
->
getFalseBlock
()
->
traverse
(
this
);
node
->
getFalseBlock
()
->
traverse
(
this
);
spv
::
Id
falseValue
=
accessChainLoad
(
node
->
getTrueBlock
()
->
getAsTyped
()
->
getType
());
spv
::
Id
falseValue
=
accessChainLoad
(
node
->
getTrueBlock
()
->
getAsTyped
()
->
getType
());
spv
::
Id
select
=
builder
.
createTriOp
(
spv
::
OpSelect
,
convertGlslangToSpvType
(
node
->
getType
()),
condition
,
trueValue
,
falseValue
);
// smear condition to vector, if necessary (AST is always scalar)
if
(
builder
.
isVector
(
trueValue
))
condition
=
builder
.
smearScalar
(
spv
::
NoPrecision
,
condition
,
builder
.
makeVectorType
(
builder
.
makeBoolType
(),
builder
.
getNumComponents
(
trueValue
)));
spv
::
Id
select
=
builder
.
createTriOp
(
spv
::
OpSelect
,
convertGlslangToSpvType
(
node
->
getType
()),
condition
,
trueValue
,
falseValue
);
builder
.
clearAccessChain
();
builder
.
clearAccessChain
();
builder
.
setAccessChainRValue
(
select
);
builder
.
setAccessChainRValue
(
select
);
};
};
...
...
Test/baseResults/spv.bool.vert.out
View file @
e434ad92
...
@@ -3,7 +3,7 @@ Warning, version 450 is not yet complete; most version-specific features are pre
...
@@ -3,7 +3,7 @@ Warning, version 450 is not yet complete; most version-specific features are pre
// Module Version 10000
// Module Version 10000
// Generated by (magic number): 80001
// Generated by (magic number): 80001
// Id's are bound by 4
4
// Id's are bound by 4
6
Capability Shader
Capability Shader
1: ExtInstImport "GLSL.std.450"
1: ExtInstImport "GLSL.std.450"
...
@@ -56,7 +56,8 @@ Warning, version 450 is not yet complete; most version-specific features are pre
...
@@ -56,7 +56,8 @@ Warning, version 450 is not yet complete; most version-specific features are pre
38: 18(fvec4) ConstantComposite 37 37 37 37
38: 18(fvec4) ConstantComposite 37 37 37 37
39: 17(float) Constant 1065353216
39: 17(float) Constant 1065353216
40: 18(fvec4) ConstantComposite 39 39 39 39
40: 18(fvec4) ConstantComposite 39 39 39 39
42: TypePointer Output 18(fvec4)
41: TypeVector 6(bool) 4
44: TypePointer Output 18(fvec4)
4(main): 2 Function None 3
4(main): 2 Function None 3
5: Label
5: Label
30(param): 7(ptr) Variable Function
30(param): 7(ptr) Variable Function
...
@@ -65,9 +66,10 @@ Warning, version 450 is not yet complete; most version-specific features are pre
...
@@ -65,9 +66,10 @@ Warning, version 450 is not yet complete; most version-specific features are pre
35: 6(bool) INotEqual 33 34
35: 6(bool) INotEqual 33 34
Store 30(param) 35
Store 30(param) 35
36: 6(bool) FunctionCall 10(foo(b1;) 30(param)
36: 6(bool) FunctionCall 10(foo(b1;) 30(param)
41: 18(fvec4) Select 36 38 40
42: 41(bvec4) CompositeConstruct 36 36 36 36
43: 42(ptr) AccessChain 24 26
43: 18(fvec4) Select 42 38 40
Store 43 41
45: 44(ptr) AccessChain 24 26
Store 45 43
Return
Return
FunctionEnd
FunctionEnd
10(foo(b1;): 6(bool) Function None 8
10(foo(b1;): 6(bool) Function None 8
...
...
Test/baseResults/spv.deepRvalue.frag.out
View file @
e434ad92
spv.deepRvalue.frag
spv.deepRvalue.frag
// Module Version 10000
// Module Version 10000
// Generated by (magic number): 80001
// Generated by (magic number): 80001
// Id's are bound by 15
0
// Id's are bound by 15
2
Capability Shader
Capability Shader
1: ExtInstImport "GLSL.std.450"
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 14
4
EntryPoint Fragment 4 "main" 14
6
ExecutionMode 4 OriginUpperLeft
ExecutionMode 4 OriginUpperLeft
Source GLSL 330
Source GLSL 330
Name 4 "main"
Name 4 "main"
...
@@ -21,12 +21,12 @@ spv.deepRvalue.frag
...
@@ -21,12 +21,12 @@ spv.deepRvalue.frag
Name 106 "h"
Name 106 "h"
Name 107 "i"
Name 107 "i"
Name 111 "samp2D"
Name 111 "samp2D"
Name 1
29
"str"
Name 1
31
"str"
MemberName 1
29
(str) 0 "a"
MemberName 1
31
(str) 0 "a"
MemberName 1
29
(str) 1 "b"
MemberName 1
31
(str) 1 "b"
MemberName 1
29
(str) 2 "c"
MemberName 1
31
(str) 2 "c"
Name 13
1
"t"
Name 13
3
"t"
Name 14
4
"gl_FragColor"
Name 14
6
"gl_FragColor"
Decorate 111(samp2D) DescriptorSet 0
Decorate 111(samp2D) DescriptorSet 0
2: TypeVoid
2: TypeVoid
3: TypeFunction 2
3: TypeFunction 2
...
@@ -77,19 +77,20 @@ spv.deepRvalue.frag
...
@@ -77,19 +77,20 @@ spv.deepRvalue.frag
115: 113(fvec2) ConstantComposite 114 114
115: 113(fvec2) ConstantComposite 114 114
119: 6(float) Constant 1036831949
119: 6(float) Constant 1036831949
120: TypeBool
120: TypeBool
128: TypeArray 113(fvec2) 84
124: TypeVector 120(bool) 4
129(str): TypeStruct 81(int) 128 120(bool)
130: TypeArray 113(fvec2) 84
130: TypePointer Function 129(str)
131(str): TypeStruct 81(int) 130 120(bool)
132: 113(fvec2) ConstantComposite 10 11
132: TypePointer Function 131(str)
133: 6(float) Constant 1082130432
134: 113(fvec2) ConstantComposite 10 11
134: 113(fvec2) ConstantComposite 133 12
135: 6(float) Constant 1082130432
135: 6(float) Constant 1086324736
136: 113(fvec2) ConstantComposite 135 12
136: 113(fvec2) ConstantComposite 135 13
137: 6(float) Constant 1086324736
137: 128 ConstantComposite 132 134 136
138: 113(fvec2) ConstantComposite 137 13
138: 120(bool) ConstantTrue
139: 130 ConstantComposite 134 136 138
139: 129(str) ConstantComposite 82 137 138
140: 120(bool) ConstantTrue
143: TypePointer Output 7(fvec4)
141: 131(str) ConstantComposite 82 139 140
144(gl_FragColor): 143(ptr) Variable Output
145: TypePointer Output 7(fvec4)
146(gl_FragColor): 145(ptr) Variable Output
4(main): 2 Function None 3
4(main): 2 Function None 3
5: Label
5: Label
35(m): 34(ptr) Variable Function
35(m): 34(ptr) Variable Function
...
@@ -98,7 +99,7 @@ spv.deepRvalue.frag
...
@@ -98,7 +99,7 @@ spv.deepRvalue.frag
87(g): 79(ptr) Variable Function
87(g): 79(ptr) Variable Function
106(h): 79(ptr) Variable Function
106(h): 79(ptr) Variable Function
107(i): 79(ptr) Variable Function
107(i): 79(ptr) Variable Function
13
1(t): 130
(ptr) Variable Function
13
3(t): 132
(ptr) Variable Function
Store 9(v1) 14
Store 9(v1) 14
Store 15(v2) 20
Store 15(v2) 20
Store 21(v3) 26
Store 21(v3) 26
...
@@ -174,21 +175,22 @@ spv.deepRvalue.frag
...
@@ -174,21 +175,22 @@ spv.deepRvalue.frag
121: 120(bool) FOrdGreaterThan 118 119
121: 120(bool) FOrdGreaterThan 118 119
122: 7(fvec4) Load 9(v1)
122: 7(fvec4) Load 9(v1)
123: 7(fvec4) Load 15(v2)
123: 7(fvec4) Load 15(v2)
124: 7(fvec4) Select 121 122 123
125: 124(bvec4) CompositeConstruct 121 121 121 121
125: 6(float) CompositeExtract 124 3
126: 7(fvec4) Select 125 122 123
126: 6(float) Load 107(i)
127: 6(float) CompositeExtract 126 3
127: 6(float) FAdd 126 125
128: 6(float) Load 107(i)
Store 107(i) 127
129: 6(float) FAdd 128 127
Store 131(t) 139
Store 107(i) 129
140: 6(float) CompositeExtract 139 1 2 1
Store 133(t) 141
141: 6(float) Load 107(i)
142: 6(float) CompositeExtract 141 1 2 1
142: 6(float) FAdd 141 140
143: 6(float) Load 107(i)
Store 107(i) 142
144: 6(float) FAdd 143 142
145: 6(float) Load 80(f)
Store 107(i) 144
146: 6(float) Load 87(g)
147: 6(float) Load 80(f)
147: 6(float) Load 106(h)
148: 6(float) Load 87(g)
148: 6(float) Load 107(i)
149: 6(float) Load 106(h)
149: 7(fvec4) CompositeConstruct 145 146 147 148
150: 6(float) Load 107(i)
Store 144(gl_FragColor) 149
151: 7(fvec4) CompositeConstruct 147 148 149 150
Store 146(gl_FragColor) 151
Return
Return
FunctionEnd
FunctionEnd
Test/baseResults/spv.image.frag.out
View file @
e434ad92
...
@@ -3,7 +3,7 @@ Warning, version 450 is not yet complete; most version-specific features are pre
...
@@ -3,7 +3,7 @@ Warning, version 450 is not yet complete; most version-specific features are pre
// Module Version 10000
// Module Version 10000
// Generated by (magic number): 80001
// Generated by (magic number): 80001
// Id's are bound by 37
4
// Id's are bound by 37
6
Capability Shader
Capability Shader
Capability SampledRect
Capability SampledRect
...
@@ -16,7 +16,7 @@ Warning, version 450 is not yet complete; most version-specific features are pre
...
@@ -16,7 +16,7 @@ Warning, version 450 is not yet complete; most version-specific features are pre
Capability StorageImageWriteWithoutFormat
Capability StorageImageWriteWithoutFormat
1: ExtInstImport "GLSL.std.450"
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 132 142 152 248 362 37
3
EntryPoint Fragment 4 "main" 132 142 152 248 362 37
5
ExecutionMode 4 OriginUpperLeft
ExecutionMode 4 OriginUpperLeft
Source GLSL 450
Source GLSL 450
Name 4 "main"
Name 4 "main"
...
@@ -42,7 +42,7 @@ Warning, version 450 is not yet complete; most version-specific features are pre
...
@@ -42,7 +42,7 @@ Warning, version 450 is not yet complete; most version-specific features are pre
Name 248 "value"
Name 248 "value"
Name 357 "wo2D"
Name 357 "wo2D"
Name 362 "fragData"
Name 362 "fragData"
Name 37
3
"ic4D"
Name 37
5
"ic4D"
Decorate 15(i1D) DescriptorSet 0
Decorate 15(i1D) DescriptorSet 0
Decorate 15(i1D) Binding 0
Decorate 15(i1D) Binding 0
Decorate 27(i2D) DescriptorSet 0
Decorate 27(i2D) DescriptorSet 0
...
@@ -76,7 +76,7 @@ Warning, version 450 is not yet complete; most version-specific features are pre
...
@@ -76,7 +76,7 @@ Warning, version 450 is not yet complete; most version-specific features are pre
Decorate 357(wo2D) DescriptorSet 0
Decorate 357(wo2D) DescriptorSet 0
Decorate 357(wo2D) Binding 1
Decorate 357(wo2D) Binding 1
Decorate 357(wo2D) NonReadable
Decorate 357(wo2D) NonReadable
Decorate 37
3
(ic4D) Flat
Decorate 37
5
(ic4D) Flat
2: TypeVoid
2: TypeVoid
3: TypeFunction 2
3: TypeFunction 2
6: TypeInt 32 1
6: TypeInt 32 1
...
@@ -164,9 +164,10 @@ Warning, version 450 is not yet complete; most version-specific features are pre
...
@@ -164,9 +164,10 @@ Warning, version 450 is not yet complete; most version-specific features are pre
361: TypePointer Output 125(fvec4)
361: TypePointer Output 125(fvec4)
362(fragData): 361(ptr) Variable Output
362(fragData): 361(ptr) Variable Output
367: TypeBool
367: TypeBool
371: TypeVector 6(int) 4
370: TypeVector 367(bool) 4
372: TypePointer Input 371(ivec4)
373: TypeVector 6(int) 4
373(ic4D): 372(ptr) Variable Input
374: TypePointer Input 373(ivec4)
375(ic4D): 374(ptr) Variable Input
4(main): 2 Function None 3
4(main): 2 Function None 3
5: Label
5: Label
9(iv): 8(ptr) Variable Function
9(iv): 8(ptr) Variable Function
...
@@ -503,7 +504,8 @@ Warning, version 450 is not yet complete; most version-specific features are pre
...
@@ -503,7 +504,8 @@ Warning, version 450 is not yet complete; most version-specific features are pre
366: 18(int) Bitcast 365
366: 18(int) Bitcast 365
368: 367(bool) INotEqual 363 366
368: 367(bool) INotEqual 363 366
369: 125(fvec4) Load 127(v)
369: 125(fvec4) Load 127(v)
370: 125(fvec4) Select 368 369 129
371: 370(bvec4) CompositeConstruct 368 368 368 368
Store 362(fragData) 370
372: 125(fvec4) Select 371 369 129
Store 362(fragData) 372
Return
Return
FunctionEnd
FunctionEnd
Test/baseResults/spv.specConstantOperations.vert.out
View file @
e434ad92
...
@@ -3,7 +3,7 @@ Warning, version 450 is not yet complete; most version-specific features are pre
...
@@ -3,7 +3,7 @@ Warning, version 450 is not yet complete; most version-specific features are pre
// Module Version 10000
// Module Version 10000
// Generated by (magic number): 80001
// Generated by (magic number): 80001
// Id's are bound by 16
0
// Id's are bound by 16
2
Capability Shader
Capability Shader
Capability Float64
Capability Float64
...
@@ -168,7 +168,9 @@ Warning, version 450 is not yet complete; most version-specific features are pre
...
@@ -168,7 +168,9 @@ Warning, version 450 is not yet complete; most version-specific features are pre
156: 154(fvec2) ConstantComposite 155 155
156: 154(fvec2) ConstantComposite 155 155
157: 39(float) Constant 1073741824
157: 39(float) Constant 1073741824
158: 154(fvec2) ConstantComposite 157 157
158: 154(fvec2) ConstantComposite 157 157
159: 154(fvec2) SpecConstantOp 169 153 156 158
159: TypeVector 22(bool) 2
160: 159(bvec2) SpecConstantComposite 153 153
161: 154(fvec2) SpecConstantOp 169 160 156 158
4(main): 2 Function None 3
4(main): 2 Function None 3
5: Label
5: Label
Return
Return
...
...
glslang/Include/revision.h
View file @
e434ad92
...
@@ -3,4 +3,4 @@
...
@@ -3,4 +3,4 @@
// For the date, it uses the current date (when then script is run).
// For the date, it uses the current date (when then script is run).
#define GLSLANG_REVISION "Overload400-PrecQual.1939"
#define GLSLANG_REVISION "Overload400-PrecQual.1939"
#define GLSLANG_DATE "
28
-Mar-2017"
#define GLSLANG_DATE "
30
-Mar-2017"
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