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
c8b2e36f
Commit
c8b2e36f
authored
Aug 30, 2015
by
John Kessenich
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Implement GL_KHR_blend_equation_advanced.
parent
d6c37b19
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
148 additions
and
4 deletions
+148
-4
310.frag
Test/310.frag
+30
-0
310.frag.out
Test/baseResults/310.frag.out
+25
-1
Types.h
glslang/Include/Types.h
+50
-0
ParseHelper.cpp
glslang/MachineIndependent/ParseHelper.cpp
+25
-0
Versions.cpp
glslang/MachineIndependent/Versions.cpp
+2
-2
intermOut.cpp
glslang/MachineIndependent/intermOut.cpp
+9
-0
linkValidate.cpp
glslang/MachineIndependent/linkValidate.cpp
+2
-0
localintermediate.h
glslang/MachineIndependent/localintermediate.h
+5
-1
No files found.
Test/310.frag
View file @
c8b2e36f
...
@@ -397,3 +397,33 @@ void interp()
...
@@ -397,3 +397,33 @@ void interp()
res4
=
interpolateAtSample
(
outp
,
0
);
// ERROR, not interpolant
res4
=
interpolateAtSample
(
outp
,
0
);
// ERROR, not interpolant
}
}
layout
(
blend_support_softlight
)
out
;
// ERROR, need extension
#ifdef GL_KHR_blend_equation_advanced
#extension GL_KHR_blend_equation_advanced : enable
#endif
layout
(
blend_support_multiply
)
out
;
layout
(
blend_support_screen
)
out
;
layout
(
blend_support_overlay
)
out
;
layout
(
blend_support_darken
,
blend_support_lighten
)
out
;
layout
(
blend_support_colordodge
)
layout
(
blend_support_colorburn
)
out
;
layout
(
blend_support_hardlight
)
out
;
layout
(
blend_support_softlight
)
out
;
layout
(
blend_support_difference
)
out
;
layout
(
blend_support_exclusion
)
out
;
layout
(
blend_support_hsl_hue
)
out
;
layout
(
blend_support_hsl_saturation
)
out
;
layout
(
blend_support_hsl_color
)
out
;
layout
(
blend_support_hsl_luminosity
)
out
;
layout
(
blend_support_all_equations
)
out
;
layout
(
blend_support_hsl_luminosity
)
out
;
// okay to repeat
layout
(
blend_support_hsl_luminosity
)
in
;
// ERROR, only on "out"
layout
(
blend_support_hsl_luminosity
)
out
vec4
;
// ERROR, only on standalone
layout
(
blend_support_hsl_luminosity
)
out
vec4
badout
;
// ERROR, only on standalone
layout
(
blend_support_hsl_luminosity
)
struct
badS
{
int
i
;};
// ERROR, only on standalone
layout
(
blend_support_hsl_luminosity
)
void
blendFoo
()
{
}
// ERROR, only on standalone
void
blendFoo
(
layout
(
blend_support_hsl_luminosity
)
vec3
v
)
{
}
// ERROR, only on standalone
layout
(
blend_support_flizbit
)
out
;
// ERROR, no flizbit
Test/baseResults/310.frag.out
View file @
c8b2e36f
...
@@ -121,12 +121,21 @@ ERROR: 0:391: 'interpolateAtOffset' : first argument must be an interpolant, or
...
@@ -121,12 +121,21 @@ ERROR: 0:391: 'interpolateAtOffset' : first argument must be an interpolant, or
ERROR: 0:392: 'interpolateAtOffset' : first argument must be an interpolant, or interpolant-array element
ERROR: 0:392: 'interpolateAtOffset' : first argument must be an interpolant, or interpolant-array element
ERROR: 0:396: 'interpolateAtCentroid' : first argument must be an interpolant, or interpolant-array element
ERROR: 0:396: 'interpolateAtCentroid' : first argument must be an interpolant, or interpolant-array element
ERROR: 0:397: 'interpolateAtSample' : first argument must be an interpolant, or interpolant-array element
ERROR: 0:397: 'interpolateAtSample' : first argument must be an interpolant, or interpolant-array element
ERROR: 113 compilation errors. No code generated.
ERROR: 0:400: 'blend equation' : required extension not requested: GL_KHR_blend_equation_advanced
ERROR: 0:423: 'blend equation' : can only apply to 'out'
ERROR: 0:424: 'blend equation' : can only apply to a standalone qualifier
ERROR: 0:425: 'blend equation' : can only apply to a standalone qualifier
ERROR: 0:426: 'blend equation' : can only apply to a standalone qualifier
ERROR: 0:427: 'blend equation' : can only apply to a standalone qualifier
ERROR: 0:428: 'blend equation' : can only apply to a standalone qualifier
ERROR: 0:429: 'blend_support' : unknown blend equation
ERROR: 121 compilation errors. No code generated.
Shader version: 310
Shader version: 310
Requested GL_EXT_shader_io_blocks
Requested GL_EXT_shader_io_blocks
Requested GL_EXT_texture_cube_map_array
Requested GL_EXT_texture_cube_map_array
Requested GL_KHR_blend_equation_advanced
Requested GL_OES_geometry_shader
Requested GL_OES_geometry_shader
Requested GL_OES_gpu_shader5
Requested GL_OES_gpu_shader5
Requested GL_OES_sample_variables
Requested GL_OES_sample_variables
...
@@ -137,6 +146,7 @@ gl_FragCoord pixel center is integer
...
@@ -137,6 +146,7 @@ gl_FragCoord pixel center is integer
gl_FragCoord origin is upper left
gl_FragCoord origin is upper left
using early_fragment_tests
using early_fragment_tests
using depth_any
using depth_any
using blend_support_multiply blend_support_screen blend_support_overlay blend_support_darken blend_support_lighten blend_support_colordodge blend_support_colorburn blend_support_hardlight blend_support_softlight blend_support_difference blend_support_exclusion blend_support_hsl_hue blend_support_hsl_saturation blend_support_hsl_color blend_support_hsl_luminosity blend_support_all_equations
ERROR: node is still EOpNull!
ERROR: node is still EOpNull!
0:21 Function Definition: main( (global void)
0:21 Function Definition: main( (global void)
0:21 Function Parameters:
0:21 Function Parameters:
...
@@ -897,6 +907,11 @@ ERROR: node is still EOpNull!
...
@@ -897,6 +907,11 @@ ERROR: node is still EOpNull!
0:397 'outp' (out mediump 4-component vector of float)
0:397 'outp' (out mediump 4-component vector of float)
0:397 Constant:
0:397 Constant:
0:397 0 (const int)
0:397 0 (const int)
0:427 Function Definition: blendFoo( (temp void)
0:427 Function Parameters:
0:428 Function Definition: blendFoo(vf3; (global void)
0:428 Function Parameters:
0:428 'v' (in mediump 3-component vector of float)
0:? Linker Objects
0:? Linker Objects
0:? 'gl_FragCoord' (smooth in mediump 4-component vector of float)
0:? 'gl_FragCoord' (smooth in mediump 4-component vector of float)
0:? 'v3' (layout(location=2 ) smooth in mediump 3-component vector of float)
0:? 'v3' (layout(location=2 ) smooth in mediump 3-component vector of float)
...
@@ -990,6 +1005,7 @@ ERROR: node is still EOpNull!
...
@@ -990,6 +1005,7 @@ ERROR: node is still EOpNull!
0:? 'colorSampleBad' (sample out mediump 4-component vector of float)
0:? 'colorSampleBad' (sample out mediump 4-component vector of float)
0:? 'colorfsi' (flat sample in mediump 4-component vector of float)
0:? 'colorfsi' (flat sample in mediump 4-component vector of float)
0:? 'sampInArray' (smooth sample in 4-element array of mediump 3-component vector of float)
0:? 'sampInArray' (smooth sample in 4-element array of mediump 3-component vector of float)
0:? 'badout' (out mediump 4-component vector of float)
Linked fragment stage:
Linked fragment stage:
...
@@ -999,6 +1015,7 @@ ERROR: Linking fragment stage: when more than one fragment shader output, all mu
...
@@ -999,6 +1015,7 @@ ERROR: Linking fragment stage: when more than one fragment shader output, all mu
Shader version: 310
Shader version: 310
Requested GL_EXT_shader_io_blocks
Requested GL_EXT_shader_io_blocks
Requested GL_EXT_texture_cube_map_array
Requested GL_EXT_texture_cube_map_array
Requested GL_KHR_blend_equation_advanced
Requested GL_OES_geometry_shader
Requested GL_OES_geometry_shader
Requested GL_OES_gpu_shader5
Requested GL_OES_gpu_shader5
Requested GL_OES_sample_variables
Requested GL_OES_sample_variables
...
@@ -1009,6 +1026,7 @@ gl_FragCoord pixel center is integer
...
@@ -1009,6 +1026,7 @@ gl_FragCoord pixel center is integer
gl_FragCoord origin is upper left
gl_FragCoord origin is upper left
using early_fragment_tests
using early_fragment_tests
using depth_any
using depth_any
using blend_support_multiply blend_support_screen blend_support_overlay blend_support_darken blend_support_lighten blend_support_colordodge blend_support_colorburn blend_support_hardlight blend_support_softlight blend_support_difference blend_support_exclusion blend_support_hsl_hue blend_support_hsl_saturation blend_support_hsl_color blend_support_hsl_luminosity blend_support_all_equations
ERROR: node is still EOpNull!
ERROR: node is still EOpNull!
0:21 Function Definition: main( (global void)
0:21 Function Definition: main( (global void)
0:21 Function Parameters:
0:21 Function Parameters:
...
@@ -1769,6 +1787,11 @@ ERROR: node is still EOpNull!
...
@@ -1769,6 +1787,11 @@ ERROR: node is still EOpNull!
0:397 'outp' (out mediump 4-component vector of float)
0:397 'outp' (out mediump 4-component vector of float)
0:397 Constant:
0:397 Constant:
0:397 0 (const int)
0:397 0 (const int)
0:427 Function Definition: blendFoo( (temp void)
0:427 Function Parameters:
0:428 Function Definition: blendFoo(vf3; (global void)
0:428 Function Parameters:
0:428 'v' (in mediump 3-component vector of float)
0:? Linker Objects
0:? Linker Objects
0:? 'gl_FragCoord' (smooth in mediump 4-component vector of float)
0:? 'gl_FragCoord' (smooth in mediump 4-component vector of float)
0:? 'v3' (layout(location=2 ) smooth in mediump 3-component vector of float)
0:? 'v3' (layout(location=2 ) smooth in mediump 3-component vector of float)
...
@@ -1862,4 +1885,5 @@ ERROR: node is still EOpNull!
...
@@ -1862,4 +1885,5 @@ ERROR: node is still EOpNull!
0:? 'colorSampleBad' (sample out mediump 4-component vector of float)
0:? 'colorSampleBad' (sample out mediump 4-component vector of float)
0:? 'colorfsi' (flat sample in mediump 4-component vector of float)
0:? 'colorfsi' (flat sample in mediump 4-component vector of float)
0:? 'sampInArray' (smooth sample in 4-element array of mediump 3-component vector of float)
0:? 'sampInArray' (smooth sample in 4-element array of mediump 3-component vector of float)
0:? 'badout' (out mediump 4-component vector of float)
glslang/Include/Types.h
View file @
c8b2e36f
...
@@ -294,6 +294,30 @@ enum TLayoutDepth {
...
@@ -294,6 +294,30 @@ enum TLayoutDepth {
EldCount
EldCount
};
};
enum
TBlendEquationShift
{
// No 'EBlendNone':
// These are used as bit-shift amounts. A mask of such shifts will have type 'int',
// and in that space, 0 means no bits set, or none. In this enum, 0 means (1 << 0), a bit is set.
EBlendMultiply
,
EBlendScreen
,
EBlendOverlay
,
EBlendDarken
,
EBlendLighten
,
EBlendColordodge
,
EBlendColorburn
,
EBlendHardlight
,
EBlendSoftlight
,
EBlendDifference
,
EBlendExclusion
,
EBlendHslHue
,
EBlendHslSaturation
,
EBlendHslColor
,
EBlendHslLuminosity
,
EBlendAllEquations
,
EBlendCount
};
class
TQualifier
{
class
TQualifier
{
public
:
public
:
void
clear
()
void
clear
()
...
@@ -669,6 +693,28 @@ public:
...
@@ -669,6 +693,28 @@ public:
default
:
return
"none"
;
default
:
return
"none"
;
}
}
}
}
static
const
char
*
getBlendEquationString
(
TBlendEquationShift
e
)
{
switch
(
e
)
{
case
EBlendMultiply
:
return
"blend_support_multiply"
;
case
EBlendScreen
:
return
"blend_support_screen"
;
case
EBlendOverlay
:
return
"blend_support_overlay"
;
case
EBlendDarken
:
return
"blend_support_darken"
;
case
EBlendLighten
:
return
"blend_support_lighten"
;
case
EBlendColordodge
:
return
"blend_support_colordodge"
;
case
EBlendColorburn
:
return
"blend_support_colorburn"
;
case
EBlendHardlight
:
return
"blend_support_hardlight"
;
case
EBlendSoftlight
:
return
"blend_support_softlight"
;
case
EBlendDifference
:
return
"blend_support_difference"
;
case
EBlendExclusion
:
return
"blend_support_exclusion"
;
case
EBlendHslHue
:
return
"blend_support_hsl_hue"
;
case
EBlendHslSaturation
:
return
"blend_support_hsl_saturation"
;
case
EBlendHslColor
:
return
"blend_support_hsl_color"
;
case
EBlendHslLuminosity
:
return
"blend_support_hsl_luminosity"
;
case
EBlendAllEquations
:
return
"blend_support_all_equations"
;
default
:
return
"unknown"
;
}
}
static
const
char
*
getGeometryString
(
TLayoutGeometry
geometry
)
static
const
char
*
getGeometryString
(
TLayoutGeometry
geometry
)
{
{
switch
(
geometry
)
{
switch
(
geometry
)
{
...
@@ -728,6 +774,7 @@ struct TShaderQualifiers {
...
@@ -728,6 +774,7 @@ struct TShaderQualifiers {
int
localSize
[
3
];
// compute shader
int
localSize
[
3
];
// compute shader
bool
earlyFragmentTests
;
// fragment input
bool
earlyFragmentTests
;
// fragment input
TLayoutDepth
layoutDepth
;
TLayoutDepth
layoutDepth
;
bool
blendEquation
;
// true if any blend equation was specified
void
init
()
void
init
()
{
{
...
@@ -744,6 +791,7 @@ struct TShaderQualifiers {
...
@@ -744,6 +791,7 @@ struct TShaderQualifiers {
localSize
[
2
]
=
1
;
localSize
[
2
]
=
1
;
earlyFragmentTests
=
false
;
earlyFragmentTests
=
false
;
layoutDepth
=
EldNone
;
layoutDepth
=
EldNone
;
blendEquation
=
false
;
}
}
// Merge in characteristics from the 'src' qualifier. They can override when
// Merge in characteristics from the 'src' qualifier. They can override when
...
@@ -774,6 +822,8 @@ struct TShaderQualifiers {
...
@@ -774,6 +822,8 @@ struct TShaderQualifiers {
earlyFragmentTests
=
true
;
earlyFragmentTests
=
true
;
if
(
src
.
layoutDepth
)
if
(
src
.
layoutDepth
)
layoutDepth
=
src
.
layoutDepth
;
layoutDepth
=
src
.
layoutDepth
;
if
(
src
.
blendEquation
)
blendEquation
=
src
.
blendEquation
;
}
}
};
};
...
...
glslang/MachineIndependent/ParseHelper.cpp
View file @
c8b2e36f
...
@@ -2379,6 +2379,9 @@ void TParseContext::globalQualifierTypeCheck(const TSourceLoc& loc, const TQuali
...
@@ -2379,6 +2379,9 @@ void TParseContext::globalQualifierTypeCheck(const TSourceLoc& loc, const TQuali
if
(
qualifier
.
storage
!=
EvqVaryingIn
&&
qualifier
.
storage
!=
EvqVaryingOut
)
if
(
qualifier
.
storage
!=
EvqVaryingIn
&&
qualifier
.
storage
!=
EvqVaryingOut
)
return
;
return
;
if
(
publicType
.
shaderQualifiers
.
blendEquation
)
error
(
loc
,
"can only be applied to a standalone 'out'"
,
"blend equation"
,
""
);
// now, knowing it is a shader in/out, do all the in/out semantic checks
// now, knowing it is a shader in/out, do all the in/out semantic checks
if
(
publicType
.
basicType
==
EbtBool
)
{
if
(
publicType
.
basicType
==
EbtBool
)
{
...
@@ -3694,6 +3697,21 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi
...
@@ -3694,6 +3697,21 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi
return
;
return
;
}
}
}
}
if
(
id
.
compare
(
0
,
13
,
"blend_support"
)
==
0
)
{
bool
found
=
false
;
for
(
TBlendEquationShift
be
=
(
TBlendEquationShift
)
0
;
be
<
EBlendCount
;
be
=
(
TBlendEquationShift
)(
be
+
1
))
{
if
(
id
==
TQualifier
::
getBlendEquationString
(
be
))
{
requireExtensions
(
loc
,
1
,
&
E_GL_KHR_blend_equation_advanced
,
"blend equation"
);
intermediate
.
addBlendEquation
(
be
);
publicType
.
shaderQualifiers
.
blendEquation
=
true
;
found
=
true
;
break
;
}
}
if
(
!
found
)
error
(
loc
,
"unknown blend equation"
,
"blend_support"
,
""
);
return
;
}
}
}
error
(
loc
,
"unrecognized layout identifier, or qualifier requires assignment (e.g., binding = 4)"
,
id
.
c_str
(),
""
);
error
(
loc
,
"unrecognized layout identifier, or qualifier requires assignment (e.g., binding = 4)"
,
id
.
c_str
(),
""
);
}
}
...
@@ -4232,6 +4250,9 @@ void TParseContext::checkNoShaderLayouts(const TSourceLoc& loc, const TShaderQua
...
@@ -4232,6 +4250,9 @@ void TParseContext::checkNoShaderLayouts(const TSourceLoc& loc, const TShaderQua
if
(
shaderQualifiers
.
localSize
[
i
]
>
1
)
if
(
shaderQualifiers
.
localSize
[
i
]
>
1
)
error
(
loc
,
message
,
"local_size"
,
""
);
error
(
loc
,
message
,
"local_size"
,
""
);
}
}
if
(
shaderQualifiers
.
blendEquation
)
error
(
loc
,
message
,
"blend equation"
,
""
);
// TBD: correctness: are any of these missing? pixelCenterInteger, originUpperLeft, spacing, order, pointmode, earlyfragment, depth
}
}
// Correct and/or advance an object's offset layout qualifier.
// Correct and/or advance an object's offset layout qualifier.
...
@@ -5480,6 +5501,10 @@ void TParseContext::updateStandaloneQualifierDefaults(const TSourceLoc& loc, con
...
@@ -5480,6 +5501,10 @@ void TParseContext::updateStandaloneQualifierDefaults(const TSourceLoc& loc, con
else
else
error
(
loc
,
"can only apply to 'in'"
,
"early_fragment_tests"
,
""
);
error
(
loc
,
"can only apply to 'in'"
,
"early_fragment_tests"
,
""
);
}
}
if
(
publicType
.
shaderQualifiers
.
blendEquation
)
{
if
(
publicType
.
qualifier
.
storage
!=
EvqVaryingOut
)
error
(
loc
,
"can only apply to 'out'"
,
"blend equation"
,
""
);
}
const
TQualifier
&
qualifier
=
publicType
.
qualifier
;
const
TQualifier
&
qualifier
=
publicType
.
qualifier
;
...
...
glslang/MachineIndependent/Versions.cpp
View file @
c8b2e36f
...
@@ -179,8 +179,8 @@ void TParseContext::initializeExtensionBehavior()
...
@@ -179,8 +179,8 @@ void TParseContext::initializeExtensionBehavior()
extensionBehavior
[
E_GL_GOOGLE_include_directive
]
=
EBhDisable
;
extensionBehavior
[
E_GL_GOOGLE_include_directive
]
=
EBhDisable
;
// AEP
// AEP
extensionBehavior
[
E_GL_ANDROID_extension_pack_es31a
]
=
EBhDisable
Partial
;
extensionBehavior
[
E_GL_ANDROID_extension_pack_es31a
]
=
EBhDisable
;
extensionBehavior
[
E_GL_KHR_blend_equation_advanced
]
=
EBhDisable
Partial
;
extensionBehavior
[
E_GL_KHR_blend_equation_advanced
]
=
EBhDisable
;
extensionBehavior
[
E_GL_OES_sample_variables
]
=
EBhDisable
;
extensionBehavior
[
E_GL_OES_sample_variables
]
=
EBhDisable
;
extensionBehavior
[
E_GL_OES_shader_image_atomic
]
=
EBhDisable
;
extensionBehavior
[
E_GL_OES_shader_image_atomic
]
=
EBhDisable
;
extensionBehavior
[
E_GL_OES_shader_multisample_interpolation
]
=
EBhDisable
;
extensionBehavior
[
E_GL_OES_shader_multisample_interpolation
]
=
EBhDisable
;
...
...
glslang/MachineIndependent/intermOut.cpp
View file @
c8b2e36f
...
@@ -740,6 +740,15 @@ void TIntermediate::output(TInfoSink& infoSink, bool tree)
...
@@ -740,6 +740,15 @@ void TIntermediate::output(TInfoSink& infoSink, bool tree)
infoSink
.
debug
<<
"using early_fragment_tests
\n
"
;
infoSink
.
debug
<<
"using early_fragment_tests
\n
"
;
if
(
depthLayout
!=
EldNone
)
if
(
depthLayout
!=
EldNone
)
infoSink
.
debug
<<
"using "
<<
TQualifier
::
getLayoutDepthString
(
depthLayout
)
<<
"
\n
"
;
infoSink
.
debug
<<
"using "
<<
TQualifier
::
getLayoutDepthString
(
depthLayout
)
<<
"
\n
"
;
if
(
blendEquations
!=
0
)
{
infoSink
.
debug
<<
"using"
;
// blendEquations is a mask, decode it
for
(
TBlendEquationShift
be
=
(
TBlendEquationShift
)
0
;
be
<
EBlendCount
;
be
=
(
TBlendEquationShift
)(
be
+
1
))
{
if
(
blendEquations
&
(
1
<<
be
))
infoSink
.
debug
<<
" "
<<
TQualifier
::
getBlendEquationString
(
be
);
}
infoSink
.
debug
<<
"
\n
"
;
}
break
;
break
;
case
EShLangCompute
:
case
EShLangCompute
:
...
...
glslang/MachineIndependent/linkValidate.cpp
View file @
c8b2e36f
...
@@ -88,6 +88,8 @@ void TIntermediate::merge(TInfoSink& infoSink, TIntermediate& unit)
...
@@ -88,6 +88,8 @@ void TIntermediate::merge(TInfoSink& infoSink, TIntermediate& unit)
else
if
(
depthLayout
!=
unit
.
depthLayout
)
else
if
(
depthLayout
!=
unit
.
depthLayout
)
error
(
infoSink
,
"Contradictory depth layouts"
);
error
(
infoSink
,
"Contradictory depth layouts"
);
blendEquations
|=
unit
.
blendEquations
;
if
(
inputPrimitive
==
ElgNone
)
if
(
inputPrimitive
==
ElgNone
)
inputPrimitive
=
unit
.
inputPrimitive
;
inputPrimitive
=
unit
.
inputPrimitive
;
else
if
(
inputPrimitive
!=
unit
.
inputPrimitive
)
else
if
(
inputPrimitive
!=
unit
.
inputPrimitive
)
...
...
glslang/MachineIndependent/localintermediate.h
View file @
c8b2e36f
...
@@ -127,7 +127,7 @@ public:
...
@@ -127,7 +127,7 @@ public:
explicit
TIntermediate
(
EShLanguage
l
,
int
v
=
0
,
EProfile
p
=
ENoProfile
)
:
language
(
l
),
treeRoot
(
0
),
profile
(
p
),
version
(
v
),
explicit
TIntermediate
(
EShLanguage
l
,
int
v
=
0
,
EProfile
p
=
ENoProfile
)
:
language
(
l
),
treeRoot
(
0
),
profile
(
p
),
version
(
v
),
numMains
(
0
),
numErrors
(
0
),
recursive
(
false
),
numMains
(
0
),
numErrors
(
0
),
recursive
(
false
),
invocations
(
0
),
vertices
(
0
),
inputPrimitive
(
ElgNone
),
outputPrimitive
(
ElgNone
),
pixelCenterInteger
(
false
),
originUpperLeft
(
false
),
invocations
(
0
),
vertices
(
0
),
inputPrimitive
(
ElgNone
),
outputPrimitive
(
ElgNone
),
pixelCenterInteger
(
false
),
originUpperLeft
(
false
),
vertexSpacing
(
EvsNone
),
vertexOrder
(
EvoNone
),
pointMode
(
false
),
earlyFragmentTests
(
false
),
depthLayout
(
EldNone
),
xfbMode
(
false
)
vertexSpacing
(
EvsNone
),
vertexOrder
(
EvoNone
),
pointMode
(
false
),
earlyFragmentTests
(
false
),
depthLayout
(
EldNone
),
blendEquations
(
0
),
xfbMode
(
false
)
{
{
localSize
[
0
]
=
1
;
localSize
[
0
]
=
1
;
localSize
[
1
]
=
1
;
localSize
[
1
]
=
1
;
...
@@ -277,6 +277,9 @@ public:
...
@@ -277,6 +277,9 @@ public:
}
}
TLayoutDepth
getDepth
()
const
{
return
depthLayout
;
}
TLayoutDepth
getDepth
()
const
{
return
depthLayout
;
}
void
addBlendEquation
(
TBlendEquationShift
b
)
{
blendEquations
|=
(
1
<<
b
);
}
unsigned
int
getBlendEquations
()
const
{
return
blendEquations
;
}
void
addToCallGraph
(
TInfoSink
&
,
const
TString
&
caller
,
const
TString
&
callee
);
void
addToCallGraph
(
TInfoSink
&
,
const
TString
&
caller
,
const
TString
&
callee
);
void
merge
(
TInfoSink
&
,
TIntermediate
&
);
void
merge
(
TInfoSink
&
,
TIntermediate
&
);
void
finalCheck
(
TInfoSink
&
);
void
finalCheck
(
TInfoSink
&
);
...
@@ -332,6 +335,7 @@ protected:
...
@@ -332,6 +335,7 @@ protected:
int
localSize
[
3
];
int
localSize
[
3
];
bool
earlyFragmentTests
;
bool
earlyFragmentTests
;
TLayoutDepth
depthLayout
;
TLayoutDepth
depthLayout
;
int
blendEquations
;
// an 'or'ing of masks of shifts of TBlendEquationShift
bool
xfbMode
;
bool
xfbMode
;
typedef
std
::
list
<
TCall
>
TGraph
;
typedef
std
::
list
<
TCall
>
TGraph
;
...
...
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