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
b6d3ee5a
Commit
b6d3ee5a
authored
Aug 06, 2019
by
John Kessenich
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Web: Turn off bracket-style attributes, reflection, and IO mapping.
parent
7015bd65
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
170 additions
and
103 deletions
+170
-103
StandAlone.cpp
StandAlone/StandAlone.cpp
+4
-0
ParseHelper.h
glslang/MachineIndependent/ParseHelper.h
+2
-1
ShaderLang.cpp
glslang/MachineIndependent/ShaderLang.cpp
+11
-1
attribute.cpp
glslang/MachineIndependent/attribute.cpp
+4
-1
glslang.y
glslang/MachineIndependent/glslang.y
+12
-0
glslang_tab.cpp
glslang/MachineIndependent/glslang_tab.cpp
+109
-97
iomapper.cpp
glslang/MachineIndependent/iomapper.cpp
+4
-0
iomapper.h
glslang/MachineIndependent/iomapper.h
+4
-0
reflection.cpp
glslang/MachineIndependent/reflection.cpp
+4
-0
reflection.h
glslang/MachineIndependent/reflection.h
+5
-0
ShaderLang.h
glslang/Public/ShaderLang.h
+9
-3
TestFixture.h
gtests/TestFixture.h
+2
-0
No files found.
StandAlone/StandAlone.cpp
View file @
b6d3ee5a
...
...
@@ -1071,11 +1071,13 @@ void CompileAndLinkShaderUnits(std::vector<ShaderCompUnit> compUnits)
if
(
!
(
Options
&
EOptionOutputPreprocessed
)
&&
!
program
.
link
(
messages
))
LinkFailed
=
true
;
#ifndef GLSLANG_WEB
// Map IO
if
(
Options
&
EOptionSpv
)
{
if
(
!
program
.
mapIO
())
LinkFailed
=
true
;
}
#endif
// Report
if
(
!
(
Options
&
EOptionSuppressInfolog
)
&&
...
...
@@ -1084,11 +1086,13 @@ void CompileAndLinkShaderUnits(std::vector<ShaderCompUnit> compUnits)
PutsIfNonEmpty
(
program
.
getInfoDebugLog
());
}
#ifndef GLSLANG_WEB
// Reflect
if
(
Options
&
EOptionDumpReflection
)
{
program
.
buildReflection
(
ReflectOptions
);
program
.
dumpReflection
();
}
#endif
// Dump SPIR-V
if
(
Options
&
EOptionSpv
)
{
...
...
glslang/MachineIndependent/ParseHelper.h
View file @
b6d3ee5a
...
...
@@ -421,6 +421,7 @@ public:
void
wrapupSwitchSubsequence
(
TIntermAggregate
*
statements
,
TIntermNode
*
branchNode
);
TIntermNode
*
addSwitch
(
const
TSourceLoc
&
,
TIntermTyped
*
expression
,
TIntermAggregate
*
body
);
#ifndef GLSLANG_WEB
TAttributeType
attributeFromName
(
const
TString
&
name
)
const
;
TAttributes
*
makeAttributes
(
const
TString
&
identifier
)
const
;
TAttributes
*
makeAttributes
(
const
TString
&
identifier
,
TIntermNode
*
node
)
const
;
...
...
@@ -429,9 +430,9 @@ public:
// Determine selection control from attributes
void
handleSelectionAttributes
(
const
TAttributes
&
attributes
,
TIntermNode
*
);
void
handleSwitchAttributes
(
const
TAttributes
&
attributes
,
TIntermNode
*
);
// Determine loop control from attributes
void
handleLoopAttributes
(
const
TAttributes
&
attributes
,
TIntermNode
*
);
#endif
void
checkAndResizeMeshViewDim
(
const
TSourceLoc
&
,
TType
&
,
bool
isBlockMember
);
...
...
glslang/MachineIndependent/ShaderLang.cpp
View file @
b6d3ee5a
...
...
@@ -1860,7 +1860,11 @@ const char* TShader::getInfoDebugLog()
return
infoSink
->
debug
.
c_str
();
}
TProgram
::
TProgram
()
:
reflection
(
0
),
linked
(
false
)
TProgram
::
TProgram
()
:
#ifndef GLSLANG_WEB
reflection
(
0
),
#endif
linked
(
false
)
{
pool
=
new
TPoolAllocator
;
infoSink
=
new
TInfoSink
;
...
...
@@ -1873,7 +1877,9 @@ TProgram::TProgram() : reflection(0), linked(false)
TProgram
::~
TProgram
()
{
delete
infoSink
;
#ifndef GLSLANG_WEB
delete
reflection
;
#endif
for
(
int
s
=
0
;
s
<
EShLangCount
;
++
s
)
if
(
newedIntermediate
[
s
])
...
...
@@ -1985,6 +1991,8 @@ const char* TProgram::getInfoDebugLog()
return
infoSink
->
debug
.
c_str
();
}
#ifndef GLSLANG_WEB
//
// Reflection implementation.
//
...
...
@@ -2062,4 +2070,6 @@ bool TProgram::mapIO(TIoMapResolver* pResolver, TIoMapper* pIoMapper)
return
ioMapper
->
doMap
(
pResolver
,
*
infoSink
);
}
#endif // GLSLANG_WEB
}
// end namespace glslang
glslang/MachineIndependent/attribute.cpp
View file @
b6d3ee5a
...
...
@@ -34,6 +34,8 @@
// POSSIBILITY OF SUCH DAMAGE.
//
#ifndef GLSLANG_WEB
#include "attribute.h"
#include "../Include/intermediate.h"
#include "ParseHelper.h"
...
...
@@ -339,5 +341,6 @@ void TParseContext::handleLoopAttributes(const TAttributes& attributes, TIntermN
}
}
}
// end namespace glslang
#endif // GLSLANG_WEB
glslang/MachineIndependent/glslang.y
View file @
b6d3ee5a
...
...
@@ -3662,7 +3662,9 @@ selection_statement
$$ = $1;
}
| attribute selection_statement_nonattributed {
#ifndef GLSLANG_WEB
parseContext.handleSelectionAttributes(*$1, $2);
#endif
$$ = $2;
}
...
...
@@ -3707,7 +3709,9 @@ switch_statement
$$ = $1;
}
| attribute switch_statement_nonattributed {
#ifndef GLSLANG_WEB
parseContext.handleSwitchAttributes(*$1, $2);
#endif
$$ = $2;
}
...
...
@@ -3769,7 +3773,9 @@ iteration_statement
$$ = $1;
}
| attribute iteration_statement_nonattributed {
#ifndef GLSLANG_WEB
parseContext.handleLoopAttributes(*$1, $2);
#endif
$$ = $2;
}
...
...
@@ -3943,15 +3949,21 @@ attribute_list
$$ = $1;
}
| attribute_list COMMA single_attribute {
#ifndef GLSLANG_WEB
$$ = parseContext.mergeAttributes($1, $3);
#endif
}
single_attribute
: IDENTIFIER {
#ifndef GLSLANG_WEB
$$ = parseContext.makeAttributes(*$1.string);
#endif
}
| IDENTIFIER LEFT_PAREN constant_expression RIGHT_PAREN {
#ifndef GLSLANG_WEB
$$ = parseContext.makeAttributes(*$1.string, $3);
#endif
}
%%
glslang/MachineIndependent/glslang_tab.cpp
View file @
b6d3ee5a
...
...
@@ -995,12 +995,12 @@ static const yytype_uint16 yyrline[] =
3510
,
3515
,
3526
,
3529
,
3535
,
3544
,
3547
,
3553
,
3557
,
3558
,
3564
,
3565
,
3566
,
3567
,
3568
,
3569
,
3570
,
3571
,
3575
,
3583
,
3584
,
3588
,
3584
,
3600
,
3601
,
3605
,
3605
,
3612
,
3612
,
3626
,
3629
,
3637
,
3645
,
3656
,
3657
,
3661
,
3664
,
367
0
,
3677
,
3681
,
36
89
,
3693
,
3706
,
3709
,
3715
,
3715
,
3735
,
3738
,
3744
,
3756
,
37
68
,
3771
,
3777
,
3777
,
3792
,
3792
,
3808
,
3808
,
3829
,
3832
,
38
38
,
3841
,
3847
,
3851
,
3858
,
3863
,
3868
,
3875
,
3878
,
3887
,
389
1
,
3900
,
3903
,
3906
,
3914
,
3914
,
3936
,
3942
,
3945
,
3950
,
39
5
3
3629
,
3637
,
3645
,
3656
,
3657
,
3661
,
3664
,
367
2
,
3679
,
3683
,
36
91
,
3695
,
3708
,
3711
,
3719
,
3719
,
3739
,
3742
,
3748
,
3760
,
37
72
,
3775
,
3783
,
3783
,
3798
,
3798
,
3814
,
3814
,
3835
,
3838
,
38
44
,
3847
,
3853
,
3857
,
3864
,
3869
,
3874
,
3881
,
3884
,
3893
,
389
7
,
3906
,
3909
,
3912
,
3920
,
3920
,
3942
,
3948
,
3951
,
3958
,
39
6
3
};
#endif
...
...
@@ -9956,50 +9956,52 @@ yyreduce:
case
536
:
#line 3664 "MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
#ifndef GLSLANG_WEB
parseContext
.
handleSelectionAttributes
(
*
(
yyvsp
[
-
1
].
interm
.
attributes
),
(
yyvsp
[
0
].
interm
.
intermNode
));
#endif
(
yyval
.
interm
.
intermNode
)
=
(
yyvsp
[
0
].
interm
.
intermNode
);
}
#line 996
3
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 996
5
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
537
:
#line 367
0
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 367
2
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
parseContext
.
boolCheck
((
yyvsp
[
-
4
].
lex
).
loc
,
(
yyvsp
[
-
2
].
interm
.
intermTypedNode
));
(
yyval
.
interm
.
intermNode
)
=
parseContext
.
intermediate
.
addSelection
((
yyvsp
[
-
2
].
interm
.
intermTypedNode
),
(
yyvsp
[
0
].
interm
.
nodePair
),
(
yyvsp
[
-
4
].
lex
).
loc
);
}
#line 997
2
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 997
4
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
538
:
#line 367
7
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 367
9
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
(
yyval
.
interm
.
nodePair
).
node1
=
(
yyvsp
[
-
2
].
interm
.
intermNode
);
(
yyval
.
interm
.
nodePair
).
node2
=
(
yyvsp
[
0
].
interm
.
intermNode
);
}
#line 998
1
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 998
3
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
539
:
#line 368
1
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 368
3
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
(
yyval
.
interm
.
nodePair
).
node1
=
(
yyvsp
[
0
].
interm
.
intermNode
);
(
yyval
.
interm
.
nodePair
).
node2
=
0
;
}
#line 999
0
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 999
2
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
540
:
#line 36
89
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 36
91
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
(
yyval
.
interm
.
intermTypedNode
)
=
(
yyvsp
[
0
].
interm
.
intermTypedNode
);
parseContext
.
boolCheck
((
yyvsp
[
0
].
interm
.
intermTypedNode
)
->
getLoc
(),
(
yyvsp
[
0
].
interm
.
intermTypedNode
));
}
#line
9999
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line
10001
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
541
:
#line 369
3
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 369
5
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
parseContext
.
boolCheck
((
yyvsp
[
-
2
].
lex
).
loc
,
(
yyvsp
[
-
3
].
interm
.
type
));
...
...
@@ -10010,28 +10012,30 @@ yyreduce:
else
(
yyval
.
interm
.
intermTypedNode
)
=
0
;
}
#line 1001
4
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 1001
6
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
542
:
#line 370
6
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 370
8
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
(
yyval
.
interm
.
intermNode
)
=
(
yyvsp
[
0
].
interm
.
intermNode
);
}
#line 1002
2
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 1002
4
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
543
:
#line 37
09
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 37
11
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
#ifndef GLSLANG_WEB
parseContext
.
handleSwitchAttributes
(
*
(
yyvsp
[
-
1
].
interm
.
attributes
),
(
yyvsp
[
0
].
interm
.
intermNode
));
#endif
(
yyval
.
interm
.
intermNode
)
=
(
yyvsp
[
0
].
interm
.
intermNode
);
}
#line 1003
1
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 1003
5
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
544
:
#line 371
5
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 371
9
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
// start new switch sequence on the switch stack
++
parseContext
.
controlFlowNestingLevel
;
...
...
@@ -10040,11 +10044,11 @@ yyreduce:
parseContext
.
switchLevel
.
push_back
(
parseContext
.
statementNestingLevel
);
parseContext
.
symbolTable
.
push
();
}
#line 1004
4
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 1004
8
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
545
:
#line 372
3
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 372
7
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
(
yyval
.
interm
.
intermNode
)
=
parseContext
.
addSwitch
((
yyvsp
[
-
7
].
lex
).
loc
,
(
yyvsp
[
-
5
].
interm
.
intermTypedNode
),
(
yyvsp
[
-
1
].
interm
.
intermNode
)
?
(
yyvsp
[
-
1
].
interm
.
intermNode
)
->
getAsAggregate
()
:
0
);
delete
parseContext
.
switchSequenceStack
.
back
();
...
...
@@ -10054,27 +10058,27 @@ yyreduce:
--
parseContext
.
statementNestingLevel
;
--
parseContext
.
controlFlowNestingLevel
;
}
#line 100
58
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 100
62
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
546
:
#line 373
5
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 373
9
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
(
yyval
.
interm
.
intermNode
)
=
0
;
}
#line 100
66
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 100
70
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
547
:
#line 37
38
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 37
42
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
(
yyval
.
interm
.
intermNode
)
=
(
yyvsp
[
0
].
interm
.
intermNode
);
}
#line 1007
4
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 1007
8
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
548
:
#line 374
4
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 374
8
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
(
yyval
.
interm
.
intermNode
)
=
0
;
if
(
parseContext
.
switchLevel
.
size
()
==
0
)
...
...
@@ -10087,11 +10091,11 @@ yyreduce:
(
yyval
.
interm
.
intermNode
)
=
parseContext
.
intermediate
.
addBranch
(
EOpCase
,
(
yyvsp
[
-
1
].
interm
.
intermTypedNode
),
(
yyvsp
[
-
2
].
lex
).
loc
);
}
}
#line 1009
1
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 1009
5
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
549
:
#line 37
56
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 37
60
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
(
yyval
.
interm
.
intermNode
)
=
0
;
if
(
parseContext
.
switchLevel
.
size
()
==
0
)
...
...
@@ -10101,28 +10105,30 @@ yyreduce:
else
(
yyval
.
interm
.
intermNode
)
=
parseContext
.
intermediate
.
addBranch
(
EOpDefault
,
(
yyvsp
[
-
1
].
lex
).
loc
);
}
#line 1010
5
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 1010
9
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
550
:
#line 37
68
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 37
72
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
(
yyval
.
interm
.
intermNode
)
=
(
yyvsp
[
0
].
interm
.
intermNode
);
}
#line 1011
3
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 1011
7
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
551
:
#line 377
1
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 377
5
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
#ifndef GLSLANG_WEB
parseContext
.
handleLoopAttributes
(
*
(
yyvsp
[
-
1
].
interm
.
attributes
),
(
yyvsp
[
0
].
interm
.
intermNode
));
#endif
(
yyval
.
interm
.
intermNode
)
=
(
yyvsp
[
0
].
interm
.
intermNode
);
}
#line 1012
2
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 1012
8
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
552
:
#line 37
77
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 37
83
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
if
(
!
parseContext
.
limits
.
whileLoops
)
parseContext
.
error
((
yyvsp
[
-
1
].
lex
).
loc
,
"while loops not available"
,
"limitation"
,
""
);
...
...
@@ -10131,11 +10137,11 @@ yyreduce:
++
parseContext
.
statementNestingLevel
;
++
parseContext
.
controlFlowNestingLevel
;
}
#line 101
35
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 101
41
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
553
:
#line 37
85
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 37
91
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
parseContext
.
symbolTable
.
pop
(
&
parseContext
.
defaultPrecision
[
0
]);
(
yyval
.
interm
.
intermNode
)
=
parseContext
.
intermediate
.
addLoop
((
yyvsp
[
0
].
interm
.
intermNode
),
(
yyvsp
[
-
2
].
interm
.
intermTypedNode
),
0
,
true
,
(
yyvsp
[
-
5
].
lex
).
loc
);
...
...
@@ -10143,21 +10149,21 @@ yyreduce:
--
parseContext
.
statementNestingLevel
;
--
parseContext
.
controlFlowNestingLevel
;
}
#line 101
47
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 101
53
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
554
:
#line 379
2
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 379
8
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
++
parseContext
.
loopNestingLevel
;
++
parseContext
.
statementNestingLevel
;
++
parseContext
.
controlFlowNestingLevel
;
}
#line 101
57
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 101
63
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
555
:
#line 3
797
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 3
803
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
if
(
!
parseContext
.
limits
.
whileLoops
)
parseContext
.
error
((
yyvsp
[
-
7
].
lex
).
loc
,
"do-while loops not available"
,
"limitation"
,
""
);
...
...
@@ -10169,22 +10175,22 @@ yyreduce:
--
parseContext
.
statementNestingLevel
;
--
parseContext
.
controlFlowNestingLevel
;
}
#line 1017
3
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 1017
9
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
556
:
#line 38
08
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 38
14
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
parseContext
.
symbolTable
.
push
();
++
parseContext
.
loopNestingLevel
;
++
parseContext
.
statementNestingLevel
;
++
parseContext
.
controlFlowNestingLevel
;
}
#line 101
84
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 101
90
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
557
:
#line 38
14
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 38
20
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
parseContext
.
symbolTable
.
pop
(
&
parseContext
.
defaultPrecision
[
0
]);
(
yyval
.
interm
.
intermNode
)
=
parseContext
.
intermediate
.
makeAggregate
((
yyvsp
[
-
3
].
interm
.
intermNode
),
(
yyvsp
[
-
5
].
lex
).
loc
);
...
...
@@ -10197,81 +10203,81 @@ yyreduce:
--
parseContext
.
statementNestingLevel
;
--
parseContext
.
controlFlowNestingLevel
;
}
#line 1020
1
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 1020
7
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
558
:
#line 38
29
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 38
35
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
(
yyval
.
interm
.
intermNode
)
=
(
yyvsp
[
0
].
interm
.
intermNode
);
}
#line 102
09
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 102
15
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
559
:
#line 383
2
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 383
8
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
(
yyval
.
interm
.
intermNode
)
=
(
yyvsp
[
0
].
interm
.
intermNode
);
}
#line 102
17
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 102
23
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
560
:
#line 38
38
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 38
44
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
(
yyval
.
interm
.
intermTypedNode
)
=
(
yyvsp
[
0
].
interm
.
intermTypedNode
);
}
#line 102
25
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 102
31
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
561
:
#line 384
1
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 384
7
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
(
yyval
.
interm
.
intermTypedNode
)
=
0
;
}
#line 1023
3
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 1023
9
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
562
:
#line 38
47
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 38
53
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
(
yyval
.
interm
.
nodePair
).
node1
=
(
yyvsp
[
-
1
].
interm
.
intermTypedNode
);
(
yyval
.
interm
.
nodePair
).
node2
=
0
;
}
#line 1024
2
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 1024
8
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
563
:
#line 385
1
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 385
7
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
(
yyval
.
interm
.
nodePair
).
node1
=
(
yyvsp
[
-
2
].
interm
.
intermTypedNode
);
(
yyval
.
interm
.
nodePair
).
node2
=
(
yyvsp
[
0
].
interm
.
intermTypedNode
);
}
#line 1025
1
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 1025
7
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
564
:
#line 38
58
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 38
64
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
if
(
parseContext
.
loopNestingLevel
<=
0
)
parseContext
.
error
((
yyvsp
[
-
1
].
lex
).
loc
,
"continue statement only allowed in loops"
,
""
,
""
);
(
yyval
.
interm
.
intermNode
)
=
parseContext
.
intermediate
.
addBranch
(
EOpContinue
,
(
yyvsp
[
-
1
].
lex
).
loc
);
}
#line 1026
1
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 1026
7
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
565
:
#line 386
3
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 386
9
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
if
(
parseContext
.
loopNestingLevel
+
parseContext
.
switchSequenceStack
.
size
()
<=
0
)
parseContext
.
error
((
yyvsp
[
-
1
].
lex
).
loc
,
"break statement only allowed in switch and loops"
,
""
,
""
);
(
yyval
.
interm
.
intermNode
)
=
parseContext
.
intermediate
.
addBranch
(
EOpBreak
,
(
yyvsp
[
-
1
].
lex
).
loc
);
}
#line 1027
1
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 1027
7
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
566
:
#line 38
68
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 38
74
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
(
yyval
.
interm
.
intermNode
)
=
parseContext
.
intermediate
.
addBranch
(
EOpReturn
,
(
yyvsp
[
-
1
].
lex
).
loc
);
if
(
parseContext
.
currentFunctionType
->
getBasicType
()
!=
EbtVoid
)
...
...
@@ -10279,83 +10285,83 @@ yyreduce:
if
(
parseContext
.
inMain
)
parseContext
.
postEntryPointReturn
=
true
;
}
#line 1028
3
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 1028
9
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
567
:
#line 38
75
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 38
81
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
(
yyval
.
interm
.
intermNode
)
=
parseContext
.
handleReturnValue
((
yyvsp
[
-
2
].
lex
).
loc
,
(
yyvsp
[
-
1
].
interm
.
intermTypedNode
));
}
#line 1029
1
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 1029
7
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
568
:
#line 38
78
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 38
84
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
parseContext
.
requireStage
((
yyvsp
[
-
1
].
lex
).
loc
,
EShLangFragment
,
"discard"
);
(
yyval
.
interm
.
intermNode
)
=
parseContext
.
intermediate
.
addBranch
(
EOpKill
,
(
yyvsp
[
-
1
].
lex
).
loc
);
}
#line 1030
0
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 1030
6
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
569
:
#line 38
87
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 38
93
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
(
yyval
.
interm
.
intermNode
)
=
(
yyvsp
[
0
].
interm
.
intermNode
);
parseContext
.
intermediate
.
setTreeRoot
((
yyval
.
interm
.
intermNode
));
}
#line 103
09
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 103
15
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
570
:
#line 389
1
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 389
7
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
if
((
yyvsp
[
0
].
interm
.
intermNode
)
!=
nullptr
)
{
(
yyval
.
interm
.
intermNode
)
=
parseContext
.
intermediate
.
growAggregate
((
yyvsp
[
-
1
].
interm
.
intermNode
),
(
yyvsp
[
0
].
interm
.
intermNode
));
parseContext
.
intermediate
.
setTreeRoot
((
yyval
.
interm
.
intermNode
));
}
}
#line 1032
0
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 1032
6
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
571
:
#line 390
0
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 390
6
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
(
yyval
.
interm
.
intermNode
)
=
(
yyvsp
[
0
].
interm
.
intermNode
);
}
#line 103
28
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 103
34
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
572
:
#line 390
3
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 390
9
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
(
yyval
.
interm
.
intermNode
)
=
(
yyvsp
[
0
].
interm
.
intermNode
);
}
#line 103
36
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 103
42
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
573
:
#line 39
06
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 39
12
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
parseContext
.
requireProfile
((
yyvsp
[
0
].
lex
).
loc
,
~
EEsProfile
,
"extraneous semicolon"
);
parseContext
.
profileRequires
((
yyvsp
[
0
].
lex
).
loc
,
~
EEsProfile
,
460
,
nullptr
,
"extraneous semicolon"
);
(
yyval
.
interm
.
intermNode
)
=
nullptr
;
}
#line 103
46
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 103
52
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
574
:
#line 39
14
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 39
20
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
(
yyvsp
[
0
].
interm
).
function
=
parseContext
.
handleFunctionDeclarator
((
yyvsp
[
0
].
interm
).
loc
,
*
(
yyvsp
[
0
].
interm
).
function
,
false
/* not prototype */
);
(
yyvsp
[
0
].
interm
).
intermNode
=
parseContext
.
handleFunctionDefinition
((
yyvsp
[
0
].
interm
).
loc
,
*
(
yyvsp
[
0
].
interm
).
function
);
}
#line 103
55
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 103
61
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
575
:
#line 39
18
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 39
24
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
// May be best done as post process phase on intermediate code
if
(
parseContext
.
currentFunctionType
->
getBasicType
()
!=
EbtVoid
&&
!
parseContext
.
functionReturnsValue
)
...
...
@@ -10371,52 +10377,58 @@ yyreduce:
(
yyval
.
interm
.
intermNode
)
->
getAsAggregate
()
->
setDebug
(
parseContext
.
contextPragma
.
debug
);
(
yyval
.
interm
.
intermNode
)
->
getAsAggregate
()
->
setPragmaTable
(
parseContext
.
contextPragma
.
pragmaTable
);
}
#line 103
75
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 103
81
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
576
:
#line 39
36
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 39
42
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
(
yyval
.
interm
.
attributes
)
=
(
yyvsp
[
-
2
].
interm
.
attributes
);
parseContext
.
requireExtensions
((
yyvsp
[
-
4
].
lex
).
loc
,
1
,
&
E_GL_EXT_control_flow_attributes
,
"attribute"
);
}
#line 103
84
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 103
90
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
577
:
#line 394
2
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 394
8
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
(
yyval
.
interm
.
attributes
)
=
(
yyvsp
[
0
].
interm
.
attributes
);
}
#line 1039
2
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 1039
8
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
578
:
#line 39
45
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 39
51
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
#ifndef GLSLANG_WEB
(
yyval
.
interm
.
attributes
)
=
parseContext
.
mergeAttributes
((
yyvsp
[
-
2
].
interm
.
attributes
),
(
yyvsp
[
0
].
interm
.
attributes
));
#endif
}
#line 1040
0
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 1040
8
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
579
:
#line 395
0
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 395
8
"MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
#ifndef GLSLANG_WEB
(
yyval
.
interm
.
attributes
)
=
parseContext
.
makeAttributes
(
*
(
yyvsp
[
0
].
lex
).
string
);
#endif
}
#line 104
0
8 "MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 104
1
8 "MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
case
580
:
#line 39
5
3 "MachineIndependent/glslang.y"
/* yacc.c:1646 */
#line 39
6
3 "MachineIndependent/glslang.y"
/* yacc.c:1646 */
{
#ifndef GLSLANG_WEB
(
yyval
.
interm
.
attributes
)
=
parseContext
.
makeAttributes
(
*
(
yyvsp
[
-
3
].
lex
).
string
,
(
yyvsp
[
-
1
].
interm
.
intermTypedNode
));
#endif
}
#line 104
16
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 104
28
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
break
;
#line 104
20
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
#line 104
32
"MachineIndependent/glslang_tab.cpp"
/* yacc.c:1646 */
default:
break
;
}
/* User semantic actions sometimes alter yychar, and that requires
...
...
@@ -10644,5 +10656,5 @@ yyreturn:
#endif
return
yyresult
;
}
#line 39
57
"MachineIndependent/glslang.y"
/* yacc.c:1906 */
#line 39
69
"MachineIndependent/glslang.y"
/* yacc.c:1906 */
glslang/MachineIndependent/iomapper.cpp
View file @
b6d3ee5a
...
...
@@ -33,6 +33,8 @@
// POSSIBILITY OF SUCH DAMAGE.
//
#ifndef GLSLANG_WEB
#include "../Include/Common.h"
#include "../Include/InfoSink.h"
...
...
@@ -1239,3 +1241,5 @@ bool TGlslIoMapper::doMap(TIoMapResolver* resolver, TInfoSink& infoSink) {
}
}
// end namespace glslang
#endif // GLSLANG_WEB
glslang/MachineIndependent/iomapper.h
View file @
b6d3ee5a
...
...
@@ -33,6 +33,8 @@
// POSSIBILITY OF SUCH DAMAGE.
//
#ifndef GLSLANG_WEB
#ifndef _IOMAPPER_INCLUDED
#define _IOMAPPER_INCLUDED
...
...
@@ -293,3 +295,5 @@ public:
}
// end namespace glslang
#endif // _IOMAPPER_INCLUDED
#endif // GLSLANG_WEB
glslang/MachineIndependent/reflection.cpp
View file @
b6d3ee5a
...
...
@@ -33,6 +33,8 @@
// POSSIBILITY OF SUCH DAMAGE.
//
#ifndef GLSLANG_WEB
#include "../Include/Common.h"
#include "reflection.h"
#include "LiveTraverser.h"
...
...
@@ -1198,3 +1200,5 @@ void TReflection::dump()
}
}
// end namespace glslang
#endif // GLSLANG_WEB
glslang/MachineIndependent/reflection.h
View file @
b6d3ee5a
...
...
@@ -33,6 +33,8 @@
// POSSIBILITY OF SUCH DAMAGE.
//
#ifndef GLSLANG_WEB
#ifndef _REFLECTION_INCLUDED
#define _REFLECTION_INCLUDED
...
...
@@ -201,3 +203,5 @@ protected:
}
// end namespace glslang
#endif // _REFLECTION_INCLUDED
#endif // GLSLANG_WEB
\ No newline at end of file
glslang/Public/ShaderLang.h
View file @
b6d3ee5a
...
...
@@ -617,6 +617,8 @@ private:
TShader
&
operator
=
(
TShader
&
);
};
#ifndef GLSLANG_WEB
//
// A reflection database and its interface, consistent with the OpenGL API reflection queries.
//
...
...
@@ -732,6 +734,8 @@ public:
virtual
void
addStage
(
EShLanguage
stage
)
=
0
;
};
#endif // GLSLANG_WEB
// Make one TProgram per set of shaders that will get linked together. Add all
// the shaders that are to be linked together. After calling shader.parse()
// for all shaders, call link().
...
...
@@ -751,14 +755,14 @@ public:
TIntermediate
*
getIntermediate
(
EShLanguage
stage
)
const
{
return
intermediate
[
stage
];
}
#ifndef GLSLANG_WEB
// Reflection Interface
// call first, to do liveness analysis, index mapping, etc.; returns false on failure
bool
buildReflection
(
int
opts
=
EShReflectionDefault
);
unsigned
getLocalSize
(
int
dim
)
const
;
// return dim'th local size
int
getReflectionIndex
(
const
char
*
name
)
const
;
int
getNumUniformVariables
()
const
;
const
TObjectReflection
&
getUniform
(
int
index
)
const
;
int
getNumUniformBlocks
()
const
;
...
...
@@ -837,11 +841,11 @@ public:
const
TType
*
getAttributeTType
(
int
index
)
const
{
return
getPipeInput
(
index
).
getType
();
}
void
dumpReflection
();
// I/O mapping: apply base offsets and map live unbound variables
// If resolver is not provided it uses the previous approach
// and respects auto assignment and offsets.
bool
mapIO
(
TIoMapResolver
*
pResolver
=
nullptr
,
TIoMapper
*
pIoMapper
=
nullptr
);
#endif
protected
:
bool
linkStage
(
EShLanguage
,
EShMessages
);
...
...
@@ -851,7 +855,9 @@ protected:
TIntermediate
*
intermediate
[
EShLangCount
];
bool
newedIntermediate
[
EShLangCount
];
// track which intermediate were "new" versus reusing a singleton unit in a stage
TInfoSink
*
infoSink
;
#ifndef GLSLANG_WEB
TReflection
*
reflection
;
#endif
bool
linked
;
private
:
...
...
gtests/TestFixture.h
View file @
b6d3ee5a
...
...
@@ -308,7 +308,9 @@ public:
program
.
addShader
(
&
shader
);
success
&=
program
.
link
(
controls
);
#ifndef GLSLANG_WEB
success
&=
program
.
mapIO
();
#endif
spv
::
SpvBuildLogger
logger
;
...
...
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