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
e3933d68
Commit
e3933d68
authored
Jul 15, 2015
by
John Kessenich
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Front-end: Implement GL_OES_gpu_shader5.
parent
ace4c45a
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
197 additions
and
96 deletions
+197
-96
310.frag
Test/310.frag
+31
-2
310.vert
Test/310.vert
+42
-0
300.frag.out
Test/baseResults/300.frag.out
+1
-1
300block.frag.out
Test/baseResults/300block.frag.out
+1
-1
310.frag.out
Test/baseResults/310.frag.out
+0
-0
310.tesc.out
Test/baseResults/310.tesc.out
+11
-5
310.vert.out
Test/baseResults/310.vert.out
+0
-0
preprocessor.extensions.vert.err
Test/baseResults/preprocessor.extensions.vert.err
+0
-1
preprocessor.line.frag.err
Test/baseResults/preprocessor.line.frag.err
+2
-2
preprocessor.line.frag.out
Test/baseResults/preprocessor.line.frag.out
+5
-5
preprocessor.line.vert.out
Test/baseResults/preprocessor.line.vert.out
+39
-39
Initialize.cpp
glslang/MachineIndependent/Initialize.cpp
+40
-26
ParseHelper.cpp
glslang/MachineIndependent/ParseHelper.cpp
+13
-4
Scan.cpp
glslang/MachineIndependent/Scan.cpp
+7
-5
SymbolTable.h
glslang/MachineIndependent/SymbolTable.h
+3
-3
Versions.cpp
glslang/MachineIndependent/Versions.cpp
+2
-2
No files found.
Test/310.frag
View file @
e3933d68
...
...
@@ -30,11 +30,11 @@ void main()
iv4
=
textureGatherOffset
(
isamp2DA
,
vec3
(
0
.
1
),
ivec2
(
1
),
i
);
// ERROR, last argument not const
iv4
=
textureGatherOffset
(
isamp2DA
,
vec3
(
0
.
1
),
ivec2
(
1
),
4
);
// ERROR, last argument out of range
iv4
=
textureGatherOffset
(
isamp2DA
,
vec3
(
0
.
1
),
ivec2
(
1
),
1
+
2
);
iv4
=
textureGatherOffset
(
isamp2DA
,
vec3
(
0
.
1
),
ivec2
(
i
));
iv4
=
textureGatherOffset
(
isamp2DA
,
vec3
(
0
.
1
),
ivec2
(
0
.
5
));
iv4
=
textureGatherOffset
(
isamp2DA
,
vec3
(
0
.
1
),
ivec2
(
i
));
// ERROR, offset not constant
}
out
vec4
outp
;
void
foo23
()
{
const
ivec2
[
3
]
offsets
=
ivec2
[
3
](
ivec2
(
1
,
2
),
ivec2
(
3
,
4
),
ivec2
(
15
,
16
));
...
...
@@ -193,3 +193,32 @@ void foo_GS()
highp
int
l
=
gl_Layer
;
highp
int
p
=
gl_PrimitiveID
;
}
in
vec2
inf
,
ing
;
uniform
ivec2
offsets
[
4
];
uniform
sampler2D
sArray
[
4
];
uniform
int
sIndex
;
layout
(
binding
=
0
)
uniform
atomic_uint
auArray
[
2
];
uniform
ubName
{
int
i
;
}
ubInst
[
4
];
buffer
bbName
{
int
i
;
}
bbInst
[
4
];
uniform
writeonly
image2D
iArray
[
5
];
const
ivec2
constOffsets
[
4
]
=
ivec2
[
4
](
ivec2
(
0
.
1
),
ivec2
(
0
.
2
),
ivec2
(
0
.
3
),
ivec2
(
0
.
4
));
void
pfooBad
()
{
precise
vec2
h
;
// ERROR reserved
h
=
fma
(
inf
,
ing
,
h
);
// ERROR, not available
textureGatherOffset
(
sArray
[
0
],
vec2
(
0
.
1
),
ivec2
(
inf
));
// ERROR, offset not constant
textureGatherOffsets
(
sArray
[
0
],
vec2
(
0
.
1
),
constOffsets
);
// ERROR, not available
}
#extension GL_OES_gpu_shader5 : enable
void
pfoo
()
{
precise
vec2
h
;
h
=
fma
(
inf
,
ing
,
h
);
textureGatherOffset
(
sArray
[
0
],
vec2
(
0
.
1
),
ivec2
(
inf
));
textureGatherOffsets
(
sArray
[
0
],
vec2
(
0
.
1
),
constOffsets
);
textureGatherOffsets
(
sArray
[
0
],
vec2
(
0
.
1
),
offsets
);
// ERROR, offset not constant
}
Test/310.vert
View file @
e3933d68
...
...
@@ -139,3 +139,45 @@ centroid out cmo { // ERROR, no centroid on a block
invariant
out
imo
{
// ERROR, no invariant on a block
int
i
;
}
imon
;
in
vec2
inf
,
ing
;
uniform
ivec2
offsets
[
4
];
uniform
sampler2D
sArray
[
4
];
uniform
int
sIndex
;
layout
(
binding
=
0
)
uniform
atomic_uint
auArray
[
2
];
uniform
ubName
{
int
i
;
}
ubInst
[
4
];
buffer
bbName
{
int
i
;
}
bbInst
[
4
];
uniform
writeonly
image2D
iArray
[
5
];
const
ivec2
constOffsets
[
4
]
=
ivec2
[
4
](
ivec2
(
0
.
1
),
ivec2
(
0
.
2
),
ivec2
(
0
.
3
),
ivec2
(
0
.
4
));
void
pfooBad
()
{
precise
vec2
h
;
// ERROR reserved
h
=
fma
(
inf
,
ing
,
h
);
// ERROR, not available
sArray
[
sIndex
+
1
];
// ERRRO, not supported
auArray
[
sIndex
+
1
];
ubInst
[
1
];
bbInst
[
2
];
ubInst
[
sIndex
+
1
];
// ERRRO, not supported
bbInst
[
sIndex
];
// ERRRO, not supported
iArray
[
2
];
iArray
[
sIndex
*
2
];
// ERRRO, not supported
textureGatherOffset
(
sArray
[
0
],
vec2
(
0
.
1
),
ivec2
(
inf
));
// ERROR, offset not constant
textureGatherOffsets
(
sArray
[
0
],
vec2
(
0
.
1
),
constOffsets
);
// ERROR, not available
}
#extension GL_OES_gpu_shader5 : enable
void
pfoo
()
{
precise
vec2
h
;
h
=
fma
(
inf
,
ing
,
h
);
sArray
[
sIndex
+
1
];
ubInst
[
sIndex
+
1
];
bbInst
[
sIndex
-
2
];
// ERROR, still not supported
iArray
[
2
];
iArray
[
sIndex
-
2
];
textureGatherOffset
(
sArray
[
0
],
vec2
(
0
.
1
),
ivec2
(
inf
));
textureGatherOffsets
(
sArray
[
0
],
vec2
(
0
.
1
),
constOffsets
);
textureGatherOffsets
(
sArray
[
0
],
vec2
(
0
.
1
),
offsets
);
// ERROR, offset not constant
}
Test/baseResults/300.frag.out
View file @
e3933d68
...
...
@@ -10,7 +10,7 @@ ERROR: 0:63: 'texel offset' : argument must be compile-time constant
ERROR: 0:64: 'texel offset' : argument must be compile-time constant
ERROR: 0:66: 'texel offset' : argument must be compile-time constant
ERROR: 0:68: 'texel offset' : argument must be compile-time constant
ERROR: 0:69: 'variable indexing sampler array' : not supported
with this profile: es
ERROR: 0:69: 'variable indexing sampler array' : not supported
for this version or the enabled extensions
ERROR: 0:73: 'texel offset' : argument must be compile-time constant
ERROR: 0:83: 'double' : Reserved word.
ERROR: 0:83: 'double' : not supported with this profile: es
...
...
Test/baseResults/300block.frag.out
View file @
e3933d68
...
...
@@ -2,7 +2,7 @@
ERROR: 0:10: '' : cannot nest a structure definition inside a structure or block
ERROR: 0:21: '' : cannot nest a structure definition inside a structure or block
ERROR: 0:20: 'sampler' : member of block cannot be a sampler type
ERROR: 0:45: 'variable indexing
block array' : not supported with this profile: es
ERROR: 0:45: 'variable indexing
uniform block array' : not supported for this version or the enabled extensions
ERROR: 4 compilation errors. No code generated.
...
...
Test/baseResults/310.frag.out
View file @
e3933d68
This diff is collapsed.
Click to expand it.
Test/baseResults/310.tesc.out
View file @
e3933d68
...
...
@@ -31,7 +31,9 @@ ERROR: 0:80: '' : array size required
ERROR: 0:86: 'location' : overlapping use of location 4
ERROR: 0:90: 'location' : overlapping use of location 4
ERROR: 0:94: 'precise' : Reserved word.
ERROR: 0:95: 'fma' : no matching overloaded function found
ERROR: 0:95: 'fma' : required extension not requested: Possible extensions include:
GL_EXT_gpu_shader5
GL_OES_gpu_shader5
ERROR: 0:104: 'sample' : Reserved word.
ERROR: 0:106: 'vertices' : can only apply to a standalone qualifier
ERROR: 0:107: 'vertices' : inconsistent output number of vertices for array size of misSized
...
...
@@ -188,8 +190,10 @@ ERROR: node is still EOpNull!
0:? Sequence
0:95 move second child to first child (temp highp float)
0:95 'd' (temp highp float)
0:95 Constant:
0:95 0.000000
0:95 Function Call: fma(f1;f1;f1; (global highp float)
0:95 'd' (temp highp float)
0:95 'd' (temp highp float)
0:95 'd' (temp highp float)
0:112 Function Definition: pointSize2( (global void)
0:112 Function Parameters:
0:114 Sequence
...
...
@@ -390,8 +394,10 @@ ERROR: node is still EOpNull!
0:? Sequence
0:95 move second child to first child (temp highp float)
0:95 'd' (temp highp float)
0:95 Constant:
0:95 0.000000
0:95 Function Call: fma(f1;f1;f1; (global highp float)
0:95 'd' (temp highp float)
0:95 'd' (temp highp float)
0:95 'd' (temp highp float)
0:112 Function Definition: pointSize2( (global void)
0:112 Function Parameters:
0:114 Sequence
...
...
Test/baseResults/310.vert.out
View file @
e3933d68
This diff is collapsed.
Click to expand it.
Test/baseResults/preprocessor.extensions.vert.err
View file @
e3933d68
Warning, version 310 is not yet complete; most version-specific features are present, but some are missing.
WARNING: 0:5: '#extension' : extension is only partially supported: GL_EXT_gpu_shader5
WARNING: 0:6: '#extension' : extension not supported: GL_EXT_shader_texture_image_samples
Test/baseResults/preprocessor.line.frag.err
View file @
e3933d68
Warning, version 310 is not yet complete; most version-specific features are present, but some are missing.
Warning, version 310 is not yet complete; most version-specific features are present, but some are missing.
Test/baseResults/preprocessor.line.frag.out
View file @
e3933d68
#version 310 es
#line 1 2
#pragma something
void main(){ }
#version 310 es
#line 1 2
#pragma something
void main(){ }
Test/baseResults/preprocessor.line.vert.out
View file @
e3933d68
#line 300
#line 2
#line 10
#line 2
#line 0
#line 4
#line 8
void main(){
gl_Position = vec4(10);
}
#line 8 4
#line 12 3
#line 1
#line 300
#line 2
#line 10
#line 2
#line 0
#line 4
#line 8
void main(){
gl_Position = vec4(10);
}
#line 8 4
#line 12 3
#line 1
glslang/MachineIndependent/Initialize.cpp
View file @
e3933d68
...
...
@@ -493,19 +493,24 @@ void TBuiltIns::initialize(int version, EProfile profile)
"
\n
"
);
}
if
(
profile
!=
EEsProfile
&&
version
>=
400
)
{
if
((
profile
!=
EEsProfile
&&
version
>=
400
)
||
(
profile
==
EEsProfile
&&
version
>=
310
))
{
// GL_OES_gpu_shader5
commonBuiltins
.
append
(
"float fma(float, float, float );"
"vec2 fma(vec2, vec2, vec2 );"
"vec3 fma(vec3, vec3, vec3 );"
"vec4 fma(vec4, vec4, vec4 );"
"double fma(double, double, double);"
"dvec2 fma(dvec2, dvec2, dvec2 );"
"dvec3 fma(dvec3, dvec3, dvec3 );"
"dvec4 fma(dvec4, dvec4, dvec4 );"
"
\n
"
);
if
(
profile
!=
EEsProfile
)
{
commonBuiltins
.
append
(
"double fma(double, double, double);"
"dvec2 fma(dvec2, dvec2, dvec2 );"
"dvec3 fma(dvec3, dvec3, dvec3 );"
"dvec4 fma(dvec4, dvec4, dvec4 );"
"
\n
"
);
}
}
if
((
profile
==
EEsProfile
&&
version
>=
310
)
||
...
...
@@ -2221,9 +2226,6 @@ void TBuiltIns::addGatherFunctions(TSampler sampler, TString& typeName, int vers
for
(
int
offset
=
0
;
offset
<
3
;
++
offset
)
{
// loop over three forms of offset in the call name: none, Offset, and Offsets
if
(
profile
==
EEsProfile
&&
offset
==
2
)
continue
;
for
(
int
comp
=
0
;
comp
<
2
;
++
comp
)
{
// loop over presence of comp argument
if
(
comp
>
0
&&
sampler
.
shadow
)
...
...
@@ -2802,8 +2804,11 @@ void IdentifyBuiltIns(int version, EProfile profile, EShLanguage language, TSymb
//
// N.B.: a symbol should only be tagged once, and this function is called multiple times, once
// per stage that's used for this profile. So, stick common ones in the fragment stage to
// ensure they are tagged exactly once.
// per stage that's used for this profile. So
// - generally, stick common ones in the fragment stage to ensure they are tagged exactly once
// - for ES, which has different precisions for different stages, the coarsest-grained tagging
// for a built-in used in many stages needs to be once for the fragment stage and once for
// the vertex stage
switch
(
language
)
{
case
EShLangVertex
:
...
...
@@ -2822,6 +2827,15 @@ void IdentifyBuiltIns(int version, EProfile profile, EShLanguage language, TSymb
BuiltInVariable
(
"gl_MultiTexCoord7"
,
EbvMultiTexCoord7
,
symbolTable
);
BuiltInVariable
(
"gl_FogCoord"
,
EbvFogFragCoord
,
symbolTable
);
if
(
profile
==
EEsProfile
)
{
symbolTable
.
setFunctionExtensions
(
"texture2DGradEXT"
,
1
,
&
E_GL_EXT_shader_texture_lod
);
symbolTable
.
setFunctionExtensions
(
"texture2DProjGradEXT"
,
1
,
&
E_GL_EXT_shader_texture_lod
);
symbolTable
.
setFunctionExtensions
(
"textureCubeGradEXT"
,
1
,
&
E_GL_EXT_shader_texture_lod
);
symbolTable
.
setFunctionExtensions
(
"textureGatherOffsets"
,
Num_AEP_gpu_shader5
,
AEP_gpu_shader5
);
if
(
version
>=
310
)
symbolTable
.
setFunctionExtensions
(
"fma"
,
Num_AEP_gpu_shader5
,
AEP_gpu_shader5
);
}
// Fall through
case
EShLangTessControl
:
...
...
@@ -2931,15 +2945,21 @@ void IdentifyBuiltIns(int version, EProfile profile, EShLanguage language, TSymb
// built-in functions
if
(
version
==
100
)
{
symbolTable
.
setFunctionExtensions
(
"dFdx"
,
1
,
&
E_GL_OES_standard_derivatives
);
symbolTable
.
setFunctionExtensions
(
"dFdy"
,
1
,
&
E_GL_OES_standard_derivatives
);
symbolTable
.
setFunctionExtensions
(
"fwidth"
,
1
,
&
E_GL_OES_standard_derivatives
);
}
if
(
profile
==
EEsProfile
)
{
symbolTable
.
setFunctionExtensions
(
"texture2DLodEXT"
,
1
,
&
E_GL_EXT_shader_texture_lod
);
symbolTable
.
setFunctionExtensions
(
"texture2DProjLodEXT"
,
1
,
&
E_GL_EXT_shader_texture_lod
);
symbolTable
.
setFunctionExtensions
(
"textureCubeLodEXT"
,
1
,
&
E_GL_EXT_shader_texture_lod
);
symbolTable
.
setFunctionExtensions
(
"texture2DLodEXT"
,
1
,
&
E_GL_EXT_shader_texture_lod
);
symbolTable
.
setFunctionExtensions
(
"texture2DProjLodEXT"
,
1
,
&
E_GL_EXT_shader_texture_lod
);
symbolTable
.
setFunctionExtensions
(
"textureCubeLodEXT"
,
1
,
&
E_GL_EXT_shader_texture_lod
);
symbolTable
.
setFunctionExtensions
(
"texture2DGradEXT"
,
1
,
&
E_GL_EXT_shader_texture_lod
);
symbolTable
.
setFunctionExtensions
(
"texture2DProjGradEXT"
,
1
,
&
E_GL_EXT_shader_texture_lod
);
symbolTable
.
setFunctionExtensions
(
"textureCubeGradEXT"
,
1
,
&
E_GL_EXT_shader_texture_lod
);
symbolTable
.
setFunctionExtensions
(
"textureGatherOffsets"
,
Num_AEP_gpu_shader5
,
AEP_gpu_shader5
);
if
(
version
==
100
)
{
symbolTable
.
setFunctionExtensions
(
"dFdx"
,
1
,
&
E_GL_OES_standard_derivatives
);
symbolTable
.
setFunctionExtensions
(
"dFdy"
,
1
,
&
E_GL_OES_standard_derivatives
);
symbolTable
.
setFunctionExtensions
(
"fwidth"
,
1
,
&
E_GL_OES_standard_derivatives
);
}
if
(
version
>=
310
)
symbolTable
.
setFunctionExtensions
(
"fma"
,
Num_AEP_gpu_shader5
,
AEP_gpu_shader5
);
}
else
if
(
version
<
130
)
{
symbolTable
.
setFunctionExtensions
(
"texture1DLod"
,
1
,
&
E_GL_ARB_shader_texture_lod
);
symbolTable
.
setFunctionExtensions
(
"texture2DLod"
,
1
,
&
E_GL_ARB_shader_texture_lod
);
...
...
@@ -2973,12 +2993,6 @@ void IdentifyBuiltIns(int version, EProfile profile, EShLanguage language, TSymb
symbolTable
.
setFunctionExtensions
(
"shadow2DRectProjGradARB"
,
1
,
&
E_GL_ARB_shader_texture_lod
);
}
if
(
profile
==
EEsProfile
)
{
symbolTable
.
setFunctionExtensions
(
"texture2DGradEXT"
,
1
,
&
E_GL_EXT_shader_texture_lod
);
symbolTable
.
setFunctionExtensions
(
"texture2DProjGradEXT"
,
1
,
&
E_GL_EXT_shader_texture_lod
);
symbolTable
.
setFunctionExtensions
(
"textureCubeGradEXT"
,
1
,
&
E_GL_EXT_shader_texture_lod
);
}
// E_GL_ARB_shader_image_load_store
if
(
profile
!=
EEsProfile
&&
version
<
420
)
symbolTable
.
setFunctionExtensions
(
"memoryBarrier"
,
1
,
&
E_GL_ARB_shader_image_load_store
);
...
...
glslang/MachineIndependent/ParseHelper.cpp
View file @
e3933d68
...
...
@@ -505,13 +505,19 @@ TIntermTyped* TParseContext::handleBracketDereference(TSourceLoc loc, TIntermTyp
else
error
(
loc
,
""
,
"["
,
"array must be redeclared with a size before being indexed with a variable"
);
}
if
(
base
->
getBasicType
()
==
EbtBlock
)
requireProfile
(
base
->
getLoc
(),
~
EEsProfile
,
"variable indexing block array"
);
else
if
(
language
==
EShLangFragment
&&
base
->
getQualifier
().
isPipeOutput
())
if
(
base
->
getBasicType
()
==
EbtBlock
)
{
if
(
base
->
getQualifier
().
storage
==
EvqBuffer
)
requireProfile
(
base
->
getLoc
(),
~
EEsProfile
,
"variable indexing buffer block array"
);
else
if
(
base
->
getQualifier
().
storage
==
EvqUniform
)
profileRequires
(
base
->
getLoc
(),
EEsProfile
,
0
,
Num_AEP_gpu_shader5
,
AEP_gpu_shader5
,
"variable indexing uniform block array"
);
else
requireProfile
(
base
->
getLoc
(),
~
EEsProfile
,
"variable indexing in/out block array"
);
}
else
if
(
language
==
EShLangFragment
&&
base
->
getQualifier
().
isPipeOutput
())
requireProfile
(
base
->
getLoc
(),
~
EEsProfile
,
"variable indexing fragment shader ouput array"
);
else
if
(
base
->
getBasicType
()
==
EbtSampler
&&
version
>=
130
)
{
const
char
*
explanation
=
"variable indexing sampler array"
;
requireProfile
(
base
->
getLoc
(),
ECoreProfile
|
ECompatibilityProfile
,
explanation
);
requireProfile
(
base
->
getLoc
(),
EEsProfile
|
ECoreProfile
|
ECompatibilityProfile
,
explanation
);
profileRequires
(
base
->
getLoc
(),
EEsProfile
,
0
,
Num_AEP_gpu_shader5
,
AEP_gpu_shader5
,
explanation
);
profileRequires
(
base
->
getLoc
(),
ECoreProfile
|
ECompatibilityProfile
,
400
,
nullptr
,
explanation
);
}
...
...
@@ -1332,6 +1338,9 @@ void TParseContext::nonOpBuiltInCheck(TSourceLoc loc, const TFunction& fnCandida
profileRequires
(
loc
,
~
EEsProfile
,
400
,
E_GL_ARB_texture_gather
,
feature
);
else
profileRequires
(
loc
,
~
EEsProfile
,
400
,
E_GL_ARB_gpu_shader5
,
feature
);
int
offsetArg
=
fnCandidate
[
0
].
type
->
getSampler
().
shadow
?
3
:
2
;
if
(
!
callNode
.
getSequence
()[
offsetArg
]
->
getAsConstantUnion
())
profileRequires
(
loc
,
EEsProfile
,
0
,
Num_AEP_gpu_shader5
,
AEP_gpu_shader5
,
"non-constant offset argument"
);
if
(
!
fnCandidate
[
0
].
type
->
getSampler
().
shadow
)
compArg
=
3
;
}
else
if
(
fnCandidate
.
getName
().
compare
(
"textureGatherOffsets"
)
==
0
)
{
...
...
glslang/MachineIndependent/Scan.cpp
View file @
e3933d68
...
...
@@ -941,12 +941,14 @@ int TScanContext::tokenizeIdentifier()
return
keyword
;
case
PRECISE
:
if
(
parseContext
.
profile
==
EEsProfile
&&
parseContext
.
version
>=
310
)
if
((
parseContext
.
profile
==
EEsProfile
&&
parseContext
.
extensionsTurnedOn
(
Num_AEP_gpu_shader5
,
AEP_gpu_shader5
))
||
(
parseContext
.
profile
!=
EEsProfile
&&
parseContext
.
version
>=
400
))
return
keyword
;
if
(
parseContext
.
profile
==
EEsProfile
&&
parseContext
.
version
==
310
)
{
reservedWord
();
else
if
(
parseContext
.
profile
==
EEsProfile
||
(
parseContext
.
profile
!=
EEsProfile
&&
parseContext
.
version
<
400
))
return
identifierOrType
();
return
keyword
;
return
keyword
;
}
return
identifierOrType
();
case
INVARIANT
:
if
(
parseContext
.
profile
!=
EEsProfile
&&
parseContext
.
version
<
120
)
...
...
glslang/MachineIndependent/SymbolTable.h
View file @
e3933d68
...
...
@@ -200,7 +200,7 @@ public:
TSymbol
(
name
),
mangledName
(
*
name
+
'('
),
op
(
tOp
),
defined
(
false
),
prototyped
(
false
)
{
returnType
.
shallowCopy
(
retType
);
}
defined
(
false
),
prototyped
(
false
)
{
returnType
.
shallowCopy
(
retType
);
}
virtual
TFunction
*
clone
()
const
;
virtual
~
TFunction
();
...
...
@@ -486,8 +486,8 @@ public:
//
protected
:
static
const
int
globalLevel
=
3
;
bool
isSharedLevel
(
int
level
)
{
return
level
<=
1
;
}
// exclude all per-compile levels
bool
isBuiltInLevel
(
int
level
)
{
return
level
<=
2
;
}
// exclude user globals
bool
isSharedLevel
(
int
level
)
{
return
level
<=
1
;
}
// exclude all per-compile levels
bool
isBuiltInLevel
(
int
level
)
{
return
level
<=
2
;
}
// exclude user globals
bool
isGlobalLevel
(
int
level
)
{
return
level
<=
globalLevel
;
}
// include user globals
public
:
bool
isEmpty
()
{
return
table
.
size
()
==
0
;
}
...
...
glslang/MachineIndependent/Versions.cpp
View file @
e3933d68
...
...
@@ -183,7 +183,7 @@ void TParseContext::initializeExtensionBehavior()
extensionBehavior
[
E_GL_OES_texture_storage_multisample_2d_array
]
=
EBhDisablePartial
;
extensionBehavior
[
E_GL_EXT_geometry_shader
]
=
EBhDisable
;
extensionBehavior
[
E_GL_EXT_geometry_point_size
]
=
EBhDisable
;
extensionBehavior
[
E_GL_EXT_gpu_shader5
]
=
EBhDisable
Partial
;
extensionBehavior
[
E_GL_EXT_gpu_shader5
]
=
EBhDisable
;
extensionBehavior
[
E_GL_EXT_primitive_bounding_box
]
=
EBhDisablePartial
;
extensionBehavior
[
E_GL_EXT_shader_io_blocks
]
=
EBhDisable
;
extensionBehavior
[
E_GL_EXT_tessellation_shader
]
=
EBhDisable
;
...
...
@@ -194,7 +194,7 @@ void TParseContext::initializeExtensionBehavior()
// OES matching AEP
extensionBehavior
[
E_GL_OES_geometry_shader
]
=
EBhDisable
;
extensionBehavior
[
E_GL_OES_geometry_point_size
]
=
EBhDisable
;
extensionBehavior
[
E_GL_OES_gpu_shader5
]
=
EBhDisable
Partial
;
extensionBehavior
[
E_GL_OES_gpu_shader5
]
=
EBhDisable
;
extensionBehavior
[
E_GL_OES_primitive_bounding_box
]
=
EBhDisablePartial
;
extensionBehavior
[
E_GL_OES_shader_io_blocks
]
=
EBhDisable
;
extensionBehavior
[
E_GL_OES_tessellation_shader
]
=
EBhDisable
;
...
...
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