glslang: Finish turn on of AEP geometry shaders for ES 3.1.

git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@31532 e7fa87d3-cd2b-0410-9028-fcbf551c1848
This commit is contained in:
John Kessenich 2015-06-19 06:28:59 +00:00
parent 6626cadbad
commit 105704eff2
6 changed files with 325 additions and 194 deletions

View File

@ -179,6 +179,17 @@ layout(depth_any) out float gl_FragDepth; // ERROR, non-ES
void foo_IO() void foo_IO()
{ {
gl_FragDepth = 0.2; // ERROR, early_fragment_tests declared gl_FragDepth = 0.2; // ERROR, early_fragment_tests declared
gl_Layer; // ERROR, not present
gl_PrimitiveID; // ERROR, not present
bool f = gl_FrontFacing;
} }
out float gl_FragDepth; out float gl_FragDepth;
#extension GL_OES_geometry_shader : enable
void foo_GS()
{
highp int l = gl_Layer;
highp int p = gl_PrimitiveID;
}

View File

@ -1,6 +1,14 @@
#version 310 es #version 310 es
#ifdef GL_EXT_geometry_shader
#extension GL_EXT_geometry_shader : enable #extension GL_EXT_geometry_shader : enable
#else
#error no GL_EXT_geometry_shader
#endif
#ifndef GL_OES_geometry_shader
#error no GL_OES_geometry_shader
#endif
precision mediump float; precision mediump float;
@ -18,15 +26,15 @@ out fromVertex { // okay to reuse a block name for another block name
vec3 color; vec3 color;
}; };
out fooB { out fooB { // ERROR, cannot reuse block name as block instance
vec2 color; vec2 color;
} fromVertex; // ERROR, cannot reuse block name as block instance } fromVertex;
int fromVertex; // ERROR, cannot reuse a block name for something else int fromVertex; // ERROR, cannot reuse a block name for something else
out fooC { out fooC { // ERROR, cannot have same name for block and instance name
vec2 color; vec2 color;
} fooC; // ERROR, cannot have same name for block and instance name } fooC;
void main() void main()
{ {
@ -74,7 +82,7 @@ layout(lines) out; // ERROR, not on output
layout(lines_adjacency) in; layout(lines_adjacency) in;
layout(triangles) in; // ERROR, can't change it layout(triangles) in; // ERROR, can't change it
layout(triangles_adjacency) in; // ERROR, can't change it layout(triangles_adjacency) in; // ERROR, can't change it
layout(invocations = 4) in; // ERROR, not until 4.0 layout(invocations = 4) in;
in sameName { in sameName {
int a15; int a15;
@ -107,4 +115,25 @@ void fooe1()
{ {
gl_ViewportIndex; // ERROR, not in ES gl_ViewportIndex; // ERROR, not in ES
gl_MaxViewports; // ERROR, not in ES gl_MaxViewports; // ERROR, not in ES
insn.length(); // 4: lines_adjacency
int inv = gl_InvocationID;
} }
in vec4 explArray[4];
in vec4 explArrayBad[5]; // ERROR, wrong size
in vec4 nonArrayed; // ERROR, not an array
flat out vec3 myColor1;
centroid out vec3 myColor2;
centroid in vec3 centr[];
sample out vec4 perSampleColor; // ERROR without sample extensions
layout(max_vertices = 200) out; // matching redecl
layout(location = 7, component = 2) in float comp[]; // ERROR, es has no component
void notHere()
{
gl_MaxGeometryVaryingComponents; // ERROR, not in ES
gl_VerticesIn; // ERROR, not in ES
}

View File

@ -54,11 +54,19 @@ ERROR: 0:173: 'pixel_center_integer' : not supported with this profile: es
ERROR: 0:173: 'redeclaration' : cannot redeclare with different qualification: gl_FragCoord ERROR: 0:173: 'redeclaration' : cannot redeclare with different qualification: gl_FragCoord
ERROR: 0:177: 'depth layout qualifier' : not supported with this profile: es ERROR: 0:177: 'depth layout qualifier' : not supported with this profile: es
ERROR: 0:181: 'assign' : l-value required "gl_FragDepth" (can't modify gl_FragDepth if using early_fragment_tests) ERROR: 0:181: 'assign' : l-value required "gl_FragDepth" (can't modify gl_FragDepth if using early_fragment_tests)
ERROR: 54 compilation errors. No code generated. ERROR: 0:182: 'gl_Layer' : required extension not requested: Possible extensions include:
GL_EXT_geometry_shader
GL_OES_geometry_shader
ERROR: 0:183: 'gl_PrimitiveID' : required extension not requested: Possible extensions include:
GL_EXT_geometry_shader
GL_OES_geometry_shader
ERROR: 56 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_OES_geometry_shader
Requested GL_OES_shader_io_blocks
gl_FragCoord pixel center is integer 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
@ -315,6 +323,23 @@ ERROR: node is still EOpNull!
0:181 'gl_FragDepth' (gl_FragDepth highp float FragDepth) 0:181 'gl_FragDepth' (gl_FragDepth highp float FragDepth)
0:181 Constant: 0:181 Constant:
0:181 0.200000 0:181 0.200000
0:182 'gl_Layer' (flat in highp int Layer)
0:183 'gl_PrimitiveID' (flat in highp int PrimitiveID)
0:184 Sequence
0:184 move second child to first child (temp bool)
0:184 'f' (temp bool)
0:184 'gl_FrontFacing' (gl_FrontFacing bool Face)
0:191 Function Definition: foo_GS( (global void)
0:191 Function Parameters:
0:193 Sequence
0:193 Sequence
0:193 move second child to first child (temp highp int)
0:193 'l' (temp highp int)
0:193 'gl_Layer' (flat in highp int Layer)
0:194 Sequence
0:194 move second child to first child (temp highp int)
0:194 'p' (temp highp int)
0:194 'gl_PrimitiveID' (flat in highp int PrimitiveID)
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)
@ -371,6 +396,8 @@ 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_OES_geometry_shader
Requested GL_OES_shader_io_blocks
gl_FragCoord pixel center is integer 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
@ -627,6 +654,23 @@ ERROR: node is still EOpNull!
0:181 'gl_FragDepth' (gl_FragDepth highp float FragDepth) 0:181 'gl_FragDepth' (gl_FragDepth highp float FragDepth)
0:181 Constant: 0:181 Constant:
0:181 0.200000 0:181 0.200000
0:182 'gl_Layer' (flat in highp int Layer)
0:183 'gl_PrimitiveID' (flat in highp int PrimitiveID)
0:184 Sequence
0:184 move second child to first child (temp bool)
0:184 'f' (temp bool)
0:184 'gl_FrontFacing' (gl_FrontFacing bool Face)
0:191 Function Definition: foo_GS( (global void)
0:191 Function Parameters:
0:193 Sequence
0:193 Sequence
0:193 move second child to first child (temp highp int)
0:193 'l' (temp highp int)
0:193 'gl_Layer' (flat in highp int Layer)
0:194 Sequence
0:194 move second child to first child (temp highp int)
0:194 'p' (temp highp int)
0:194 'gl_PrimitiveID' (flat in highp int PrimitiveID)
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)

View File

@ -1,36 +1,41 @@
310.geom 310.geom
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.
WARNING: 0:3: '#extension' : extension is only partially supported: GL_EXT_geometry_shader ERROR: 0:29: 'fromVertex' : block instance name redefinition
ERROR: 0:21: 'fromVertex' : block instance name redefinition ERROR: 0:33: 'fromVertex' : redefinition
ERROR: 0:25: 'fromVertex' : redefinition ERROR: 0:35: 'fooC' : block instance name redefinition
ERROR: 0:27: 'fooC' : block instance name redefinition ERROR: 0:43: 'EmitStreamVertex' : no matching overloaded function found
ERROR: 0:35: 'EmitStreamVertex' : no matching overloaded function found ERROR: 0:44: 'EndStreamPrimitive' : no matching overloaded function found
ERROR: 0:36: 'EndStreamPrimitive' : no matching overloaded function found ERROR: 0:47: 'gl_ClipDistance' : undeclared identifier
ERROR: 0:39: 'gl_ClipDistance' : undeclared identifier ERROR: 0:47: 'gl_ClipDistance' : left of '[' is not of type array, matrix, or vector
ERROR: 0:39: 'gl_ClipDistance' : left of '[' is not of type array, matrix, or vector ERROR: 0:48: 'gl_ClipDistance' : no such field in structure
ERROR: 0:40: 'gl_ClipDistance' : no such field in structure ERROR: 0:48: 'expression' : left of '[' is not of type array, matrix, or vector
ERROR: 0:40: 'expression' : left of '[' is not of type array, matrix, or vector ERROR: 0:47: 'assign' : l-value required (can't modify a const)
ERROR: 0:39: 'assign' : l-value required (can't modify a const) ERROR: 0:55: 'selecting output stream' : not supported with this profile: es
ERROR: 0:47: 'selecting output stream' : not supported with this profile: es ERROR: 0:62: 'max_vertices' : too large, must be less than gl_MaxGeometryOutputVertices
ERROR: 0:54: 'max_vertices' : too large, must be less than gl_MaxGeometryOutputVertices ERROR: 0:62: 'max_vertices' : cannot change previously set layout value
ERROR: 0:54: 'max_vertices' : cannot change previously set layout value ERROR: 0:63: 'max_vertices' : can only apply to a standalone qualifier
ERROR: 0:55: 'max_vertices' : can only apply to a standalone qualifier ERROR: 0:68: 'points' : cannot change previously set output primitive
ERROR: 0:60: 'points' : cannot change previously set output primitive ERROR: 0:69: 'points' : cannot change previously set output primitive
ERROR: 0:61: 'points' : cannot change previously set output primitive ERROR: 0:70: 'triangle_strip' : cannot apply to input
ERROR: 0:62: 'triangle_strip' : cannot apply to input ERROR: 0:71: 'triangle_strip' : cannot apply to: uniform
ERROR: 0:63: 'triangle_strip' : cannot apply to: uniform ERROR: 0:72: 'triangle_strip' : can only apply to a standalone qualifier
ERROR: 0:64: 'triangle_strip' : can only apply to a standalone qualifier ERROR: 0:73: 'triangle_strip' : can only apply to a standalone qualifier
ERROR: 0:65: 'triangle_strip' : can only apply to a standalone qualifier ERROR: 0:74: 'invocations' : can only apply to a standalone qualifier
ERROR: 0:66: 'invocations' : can only apply to a standalone qualifier ERROR: 0:76: 'invocations' : can only apply to a standalone qualifier
ERROR: 0:68: 'invocations' : can only apply to a standalone qualifier ERROR: 0:77: 'max_vertices' : can only apply to a standalone qualifier
ERROR: 0:69: 'max_vertices' : can only apply to a standalone qualifier ERROR: 0:78: 'triangle_strip' : can only apply to a standalone qualifier
ERROR: 0:70: 'triangle_strip' : can only apply to a standalone qualifier ERROR: 0:81: 'lines' : cannot apply to 'out'
ERROR: 0:73: 'lines' : cannot apply to 'out' ERROR: 0:83: 'triangles' : cannot change previously set input primitive
ERROR: 0:75: 'triangles' : cannot change previously set input primitive ERROR: 0:84: 'triangles_adjacency' : cannot change previously set input primitive
ERROR: 0:76: 'triangles_adjacency' : cannot change previously set input primitive ERROR: 0:116: 'gl_ViewportIndex' : undeclared identifier
ERROR: 0:108: 'gl_ViewportIndex' : undeclared identifier ERROR: 0:117: 'gl_MaxViewports' : undeclared identifier
ERROR: 0:109: 'gl_MaxViewports' : undeclared identifier ERROR: 0:123: 'lines_adjacency' : inconsistent input primitive for array size of explArrayBad
ERROR: 29 compilation errors. No code generated. ERROR: 0:124: 'in' : type must be an array: nonArrayed
ERROR: 0:128: 'sample' : Reserved word.
ERROR: 0:132: 'component' : not supported with this profile: es
ERROR: 0:136: 'gl_MaxGeometryVaryingComponents' : undeclared identifier
ERROR: 0:137: 'gl_VerticesIn' : undeclared identifier
ERROR: 35 compilation errors. No code generated.
Shader version: 310 Shader version: 310
@ -41,82 +46,93 @@ max_vertices = 200
input primitive = lines_adjacency input primitive = lines_adjacency
output primitive = triangle_strip output primitive = triangle_strip
ERROR: node is still EOpNull! ERROR: node is still EOpNull!
0:31 Function Definition: main( (global void) 0:39 Function Definition: main( (global void)
0:31 Function Parameters: 0:39 Function Parameters:
0:33 Sequence 0:41 Sequence
0:33 EmitVertex (global void) 0:41 EmitVertex (global void)
0:34 EndPrimitive (global void) 0:42 EndPrimitive (global void)
0:35 Constant: 0:43 Constant:
0:35 0.000000 0:43 0.000000
0:36 Constant: 0:44 Constant:
0:36 0.000000 0:44 0.000000
0:38 move second child to first child (temp mediump 3-component vector of float) 0:46 move second child to first child (temp mediump 3-component vector of float)
0:38 color: direct index for structure (layout(stream=0 ) out mediump 3-component vector of float) 0:46 color: direct index for structure (layout(stream=0 ) out mediump 3-component vector of float)
0:38 'anon@0' (layout(stream=0 ) out block{layout(stream=0 ) out mediump 3-component vector of float color}) 0:46 'anon@0' (layout(stream=0 ) out block{layout(stream=0 ) out mediump 3-component vector of float color})
0:38 Constant: 0:46 Constant:
0:38 0 (const uint) 0:46 0 (const uint)
0:38 color: direct index for structure (in mediump 3-component vector of float) 0:46 color: direct index for structure (in mediump 3-component vector of float)
0:38 direct index (temp block{in mediump 3-component vector of float color}) 0:46 direct index (temp block{in mediump 3-component vector of float color})
0:38 'fromV' (in 4-element array of block{in mediump 3-component vector of float color}) 0:46 'fromV' (in 4-element array of block{in mediump 3-component vector of float color})
0:38 Constant: 0:46 Constant:
0:38 0 (const int) 0:46 0 (const int)
0:38 Constant: 0:46 Constant:
0:38 0 (const int) 0:46 0 (const int)
0:39 move second child to first child (temp float) 0:47 move second child to first child (temp float)
0:39 Constant: 0:47 Constant:
0:39 0.000000 0:47 0.000000
0:40 Constant: 0:48 Constant:
0:40 0.000000 0:48 0.000000
0:41 move second child to first child (temp highp 4-component vector of float) 0:49 move second child to first child (temp highp 4-component vector of float)
0:41 gl_Position: direct index for structure (layout(stream=0 ) gl_Position highp 4-component vector of float Position) 0:49 gl_Position: direct index for structure (layout(stream=0 ) gl_Position highp 4-component vector of float Position)
0:41 'anon@1' (layout(stream=0 ) out block{layout(stream=0 ) gl_Position highp 4-component vector of float Position gl_Position, layout(stream=0 ) gl_PointSize highp float PointSize gl_PointSize}) 0:49 'anon@1' (layout(stream=0 ) out block{layout(stream=0 ) gl_Position highp 4-component vector of float Position gl_Position, layout(stream=0 ) gl_PointSize highp float PointSize gl_PointSize})
0:41 Constant: 0:49 Constant:
0:41 0 (const uint) 0:49 0 (const uint)
0:41 gl_Position: direct index for structure (in highp 4-component vector of float Position) 0:49 gl_Position: direct index for structure (in highp 4-component vector of float Position)
0:41 direct index (temp block{in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize}) 0:49 direct index (temp block{in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize})
0:41 'gl_in' (in 4-element array of block{in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize}) 0:49 'gl_in' (in 4-element array of block{in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize})
0:41 Constant: 0:49 Constant:
0:41 0 (const int) 0:49 0 (const int)
0:41 Constant: 0:49 Constant:
0:41 0 (const int) 0:49 0 (const int)
0:42 move second child to first child (temp highp float) 0:50 move second child to first child (temp highp float)
0:42 gl_PointSize: direct index for structure (layout(stream=0 ) gl_PointSize highp float PointSize) 0:50 gl_PointSize: direct index for structure (layout(stream=0 ) gl_PointSize highp float PointSize)
0:42 'anon@1' (layout(stream=0 ) out block{layout(stream=0 ) gl_Position highp 4-component vector of float Position gl_Position, layout(stream=0 ) gl_PointSize highp float PointSize gl_PointSize}) 0:50 'anon@1' (layout(stream=0 ) out block{layout(stream=0 ) gl_Position highp 4-component vector of float Position gl_Position, layout(stream=0 ) gl_PointSize highp float PointSize gl_PointSize})
0:42 Constant: 0:50 Constant:
0:42 1 (const uint) 0:50 1 (const uint)
0:42 gl_PointSize: direct index for structure (in highp float PointSize) 0:50 gl_PointSize: direct index for structure (in highp float PointSize)
0:42 direct index (temp block{in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize}) 0:50 direct index (temp block{in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize})
0:42 'gl_in' (in 4-element array of block{in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize}) 0:50 'gl_in' (in 4-element array of block{in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize})
0:42 Constant: 0:50 Constant:
0:42 3 (const int) 0:50 3 (const int)
0:42 Constant: 0:50 Constant:
0:42 1 (const int) 0:50 1 (const int)
0:43 move second child to first child (temp highp int) 0:51 move second child to first child (temp highp int)
0:43 'gl_PrimitiveID' (layout(stream=0 ) out highp int PrimitiveID) 0:51 'gl_PrimitiveID' (layout(stream=0 ) out highp int PrimitiveID)
0:43 'gl_PrimitiveIDIn' (in highp int PrimitiveID) 0:51 'gl_PrimitiveIDIn' (in highp int PrimitiveID)
0:44 move second child to first child (temp highp int) 0:52 move second child to first child (temp highp int)
0:44 'gl_Layer' (layout(stream=0 ) out highp int Layer) 0:52 'gl_Layer' (layout(stream=0 ) out highp int Layer)
0:44 Constant: 0:52 Constant:
0:44 2 (const int) 0:52 2 (const int)
0:55 Function Definition: foo(i1; (global void) 0:63 Function Definition: foo(i1; (global void)
0:55 Function Parameters: 0:63 Function Parameters:
0:55 'a' (in highp int) 0:63 'a' (in highp int)
0:57 Sequence 0:65 Sequence
0:57 move second child to first child (temp mediump 4-component vector of float) 0:65 move second child to first child (temp mediump 4-component vector of float)
0:57 a: direct index for structure (layout(stream=0 ) out mediump 4-component vector of float) 0:65 a: direct index for structure (layout(stream=0 ) out mediump 4-component vector of float)
0:57 'ouuaa6' (layout(stream=0 ) out block{layout(stream=0 ) out mediump 4-component vector of float a}) 0:65 'ouuaa6' (layout(stream=0 ) out block{layout(stream=0 ) out mediump 4-component vector of float a})
0:57 Constant: 0:65 Constant:
0:57 0 (const int) 0:65 0 (const int)
0:57 Constant: 0:65 Constant:
0:57 1.000000 0:65 1.000000
0:57 1.000000 0:65 1.000000
0:57 1.000000 0:65 1.000000
0:57 1.000000 0:65 1.000000
0:106 Function Definition: fooe1( (global void) 0:114 Function Definition: fooe1( (global void)
0:106 Function Parameters: 0:114 Function Parameters:
0:108 Sequence 0:116 Sequence
0:108 'gl_ViewportIndex' (temp float) 0:116 'gl_ViewportIndex' (temp float)
0:109 'gl_MaxViewports' (temp float) 0:117 'gl_MaxViewports' (temp float)
0:118 Constant:
0:118 4 (const int)
0:119 Sequence
0:119 move second child to first child (temp highp int)
0:119 'inv' (temp highp int)
0:119 'gl_InvocationID' (in highp int InvocationID)
0:134 Function Definition: notHere( (global void)
0:134 Function Parameters:
0:136 Sequence
0:136 'gl_MaxGeometryVaryingComponents' (temp float)
0:137 'gl_VerticesIn' (temp float)
0:? Linker Objects 0:? Linker Objects
0:? 'fromV' (in 4-element array of block{in mediump 3-component vector of float color}) 0:? 'fromV' (in 4-element array of block{in mediump 3-component vector of float color})
0:? 'nonBlockUnsized' (in 4-element array of mediump 4-component vector of float) 0:? 'nonBlockUnsized' (in 4-element array of mediump 4-component vector of float)
@ -134,6 +150,14 @@ ERROR: node is still EOpNull!
0:? 'anon@3' (layout(column_major shared ) uniform block{layout(column_major shared ) uniform bool b15}) 0:? 'anon@3' (layout(column_major shared ) uniform block{layout(column_major shared ) uniform bool b15})
0:? 'summ' (const highp int) 0:? 'summ' (const highp int)
0:? 2752 (const int) 0:? 2752 (const int)
0:? 'explArray' (in 4-element array of mediump 4-component vector of float)
0:? 'explArrayBad' (in 5-element array of mediump 4-component vector of float)
0:? 'nonArrayed' (in mediump 4-component vector of float)
0:? 'myColor1' (layout(stream=0 ) flat out mediump 3-component vector of float)
0:? 'myColor2' (layout(stream=0 ) centroid out mediump 3-component vector of float)
0:? 'centr' (centroid in 4-element array of mediump 3-component vector of float)
0:? 'perSampleColor' (layout(stream=0 ) sample out mediump 4-component vector of float)
0:? 'comp' (layout(location=7 component=2 ) in 4-element array of mediump float)
Linked geometry stage: Linked geometry stage:
@ -147,82 +171,93 @@ max_vertices = 200
input primitive = lines_adjacency input primitive = lines_adjacency
output primitive = triangle_strip output primitive = triangle_strip
ERROR: node is still EOpNull! ERROR: node is still EOpNull!
0:31 Function Definition: main( (global void) 0:39 Function Definition: main( (global void)
0:31 Function Parameters: 0:39 Function Parameters:
0:33 Sequence 0:41 Sequence
0:33 EmitVertex (global void) 0:41 EmitVertex (global void)
0:34 EndPrimitive (global void) 0:42 EndPrimitive (global void)
0:35 Constant: 0:43 Constant:
0:35 0.000000 0:43 0.000000
0:36 Constant: 0:44 Constant:
0:36 0.000000 0:44 0.000000
0:38 move second child to first child (temp mediump 3-component vector of float) 0:46 move second child to first child (temp mediump 3-component vector of float)
0:38 color: direct index for structure (layout(stream=0 ) out mediump 3-component vector of float) 0:46 color: direct index for structure (layout(stream=0 ) out mediump 3-component vector of float)
0:38 'anon@0' (layout(stream=0 ) out block{layout(stream=0 ) out mediump 3-component vector of float color}) 0:46 'anon@0' (layout(stream=0 ) out block{layout(stream=0 ) out mediump 3-component vector of float color})
0:38 Constant: 0:46 Constant:
0:38 0 (const uint) 0:46 0 (const uint)
0:38 color: direct index for structure (in mediump 3-component vector of float) 0:46 color: direct index for structure (in mediump 3-component vector of float)
0:38 direct index (temp block{in mediump 3-component vector of float color}) 0:46 direct index (temp block{in mediump 3-component vector of float color})
0:38 'fromV' (in 4-element array of block{in mediump 3-component vector of float color}) 0:46 'fromV' (in 4-element array of block{in mediump 3-component vector of float color})
0:38 Constant: 0:46 Constant:
0:38 0 (const int) 0:46 0 (const int)
0:38 Constant: 0:46 Constant:
0:38 0 (const int) 0:46 0 (const int)
0:39 move second child to first child (temp float) 0:47 move second child to first child (temp float)
0:39 Constant: 0:47 Constant:
0:39 0.000000 0:47 0.000000
0:40 Constant: 0:48 Constant:
0:40 0.000000 0:48 0.000000
0:41 move second child to first child (temp highp 4-component vector of float) 0:49 move second child to first child (temp highp 4-component vector of float)
0:41 gl_Position: direct index for structure (layout(stream=0 ) gl_Position highp 4-component vector of float Position) 0:49 gl_Position: direct index for structure (layout(stream=0 ) gl_Position highp 4-component vector of float Position)
0:41 'anon@1' (layout(stream=0 ) out block{layout(stream=0 ) gl_Position highp 4-component vector of float Position gl_Position, layout(stream=0 ) gl_PointSize highp float PointSize gl_PointSize}) 0:49 'anon@1' (layout(stream=0 ) out block{layout(stream=0 ) gl_Position highp 4-component vector of float Position gl_Position, layout(stream=0 ) gl_PointSize highp float PointSize gl_PointSize})
0:41 Constant: 0:49 Constant:
0:41 0 (const uint) 0:49 0 (const uint)
0:41 gl_Position: direct index for structure (in highp 4-component vector of float Position) 0:49 gl_Position: direct index for structure (in highp 4-component vector of float Position)
0:41 direct index (temp block{in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize}) 0:49 direct index (temp block{in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize})
0:41 'gl_in' (in 4-element array of block{in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize}) 0:49 'gl_in' (in 4-element array of block{in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize})
0:41 Constant: 0:49 Constant:
0:41 0 (const int) 0:49 0 (const int)
0:41 Constant: 0:49 Constant:
0:41 0 (const int) 0:49 0 (const int)
0:42 move second child to first child (temp highp float) 0:50 move second child to first child (temp highp float)
0:42 gl_PointSize: direct index for structure (layout(stream=0 ) gl_PointSize highp float PointSize) 0:50 gl_PointSize: direct index for structure (layout(stream=0 ) gl_PointSize highp float PointSize)
0:42 'anon@1' (layout(stream=0 ) out block{layout(stream=0 ) gl_Position highp 4-component vector of float Position gl_Position, layout(stream=0 ) gl_PointSize highp float PointSize gl_PointSize}) 0:50 'anon@1' (layout(stream=0 ) out block{layout(stream=0 ) gl_Position highp 4-component vector of float Position gl_Position, layout(stream=0 ) gl_PointSize highp float PointSize gl_PointSize})
0:42 Constant: 0:50 Constant:
0:42 1 (const uint) 0:50 1 (const uint)
0:42 gl_PointSize: direct index for structure (in highp float PointSize) 0:50 gl_PointSize: direct index for structure (in highp float PointSize)
0:42 direct index (temp block{in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize}) 0:50 direct index (temp block{in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize})
0:42 'gl_in' (in 4-element array of block{in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize}) 0:50 'gl_in' (in 4-element array of block{in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize})
0:42 Constant: 0:50 Constant:
0:42 3 (const int) 0:50 3 (const int)
0:42 Constant: 0:50 Constant:
0:42 1 (const int) 0:50 1 (const int)
0:43 move second child to first child (temp highp int) 0:51 move second child to first child (temp highp int)
0:43 'gl_PrimitiveID' (layout(stream=0 ) out highp int PrimitiveID) 0:51 'gl_PrimitiveID' (layout(stream=0 ) out highp int PrimitiveID)
0:43 'gl_PrimitiveIDIn' (in highp int PrimitiveID) 0:51 'gl_PrimitiveIDIn' (in highp int PrimitiveID)
0:44 move second child to first child (temp highp int) 0:52 move second child to first child (temp highp int)
0:44 'gl_Layer' (layout(stream=0 ) out highp int Layer) 0:52 'gl_Layer' (layout(stream=0 ) out highp int Layer)
0:44 Constant: 0:52 Constant:
0:44 2 (const int) 0:52 2 (const int)
0:55 Function Definition: foo(i1; (global void) 0:63 Function Definition: foo(i1; (global void)
0:55 Function Parameters: 0:63 Function Parameters:
0:55 'a' (in highp int) 0:63 'a' (in highp int)
0:57 Sequence 0:65 Sequence
0:57 move second child to first child (temp mediump 4-component vector of float) 0:65 move second child to first child (temp mediump 4-component vector of float)
0:57 a: direct index for structure (layout(stream=0 ) out mediump 4-component vector of float) 0:65 a: direct index for structure (layout(stream=0 ) out mediump 4-component vector of float)
0:57 'ouuaa6' (layout(stream=0 ) out block{layout(stream=0 ) out mediump 4-component vector of float a}) 0:65 'ouuaa6' (layout(stream=0 ) out block{layout(stream=0 ) out mediump 4-component vector of float a})
0:57 Constant: 0:65 Constant:
0:57 0 (const int) 0:65 0 (const int)
0:57 Constant: 0:65 Constant:
0:57 1.000000 0:65 1.000000
0:57 1.000000 0:65 1.000000
0:57 1.000000 0:65 1.000000
0:57 1.000000 0:65 1.000000
0:106 Function Definition: fooe1( (global void) 0:114 Function Definition: fooe1( (global void)
0:106 Function Parameters: 0:114 Function Parameters:
0:108 Sequence 0:116 Sequence
0:108 'gl_ViewportIndex' (temp float) 0:116 'gl_ViewportIndex' (temp float)
0:109 'gl_MaxViewports' (temp float) 0:117 'gl_MaxViewports' (temp float)
0:118 Constant:
0:118 4 (const int)
0:119 Sequence
0:119 move second child to first child (temp highp int)
0:119 'inv' (temp highp int)
0:119 'gl_InvocationID' (in highp int InvocationID)
0:134 Function Definition: notHere( (global void)
0:134 Function Parameters:
0:136 Sequence
0:136 'gl_MaxGeometryVaryingComponents' (temp float)
0:137 'gl_VerticesIn' (temp float)
0:? Linker Objects 0:? Linker Objects
0:? 'fromV' (in 4-element array of block{in mediump 3-component vector of float color}) 0:? 'fromV' (in 4-element array of block{in mediump 3-component vector of float color})
0:? 'nonBlockUnsized' (in 4-element array of mediump 4-component vector of float) 0:? 'nonBlockUnsized' (in 4-element array of mediump 4-component vector of float)
@ -240,4 +275,12 @@ ERROR: node is still EOpNull!
0:? 'anon@3' (layout(column_major shared ) uniform block{layout(column_major shared ) uniform bool b15}) 0:? 'anon@3' (layout(column_major shared ) uniform block{layout(column_major shared ) uniform bool b15})
0:? 'summ' (const highp int) 0:? 'summ' (const highp int)
0:? 2752 (const int) 0:? 2752 (const int)
0:? 'explArray' (in 4-element array of mediump 4-component vector of float)
0:? 'explArrayBad' (in 5-element array of mediump 4-component vector of float)
0:? 'nonArrayed' (in mediump 4-component vector of float)
0:? 'myColor1' (layout(stream=0 ) flat out mediump 3-component vector of float)
0:? 'myColor2' (layout(stream=0 ) centroid out mediump 3-component vector of float)
0:? 'centr' (centroid in 4-element array of mediump 3-component vector of float)
0:? 'perSampleColor' (layout(stream=0 ) sample out mediump 4-component vector of float)
0:? 'comp' (layout(location=7 component=2 ) in 4-element array of mediump float)

View File

@ -1474,7 +1474,7 @@ void TBuiltIns::initialize(int version, EProfile profile)
stageBuiltins[EShLangVertex].append( stageBuiltins[EShLangVertex].append(
"out gl_PerVertex {" "out gl_PerVertex {"
"highp vec4 gl_Position;" // needs qualifier fixed later "highp vec4 gl_Position;" // needs qualifier fixed later
"highp float gl_PointSize;" // needs qualifier fixed later "highp float gl_PointSize;" // needs qualifier fixed later
"};" "};"
); );
} }
@ -1674,7 +1674,7 @@ void TBuiltIns::initialize(int version, EProfile profile)
stageBuiltins[EShLangTessEvaluation].append( stageBuiltins[EShLangTessEvaluation].append(
"};" "};"
"\n"); "\n");
} else { } else if (profile == EEsProfile && version >= 310) {
// Note: "in gl_PerVertex {...} gl_in[gl_MaxPatchVertices];" is declared in initialize() below, // Note: "in gl_PerVertex {...} gl_in[gl_MaxPatchVertices];" is declared in initialize() below,
// as it depends on the resource sizing of gl_MaxPatchVertices. // as it depends on the resource sizing of gl_MaxPatchVertices.
@ -1792,7 +1792,9 @@ void TBuiltIns::initialize(int version, EProfile profile)
); );
if (version >= 310) if (version >= 310)
stageBuiltins[EShLangFragment].append( stageBuiltins[EShLangFragment].append(
"bool gl_HelperInvocation;" // needs qualifier fixed later "bool gl_HelperInvocation;" // needs qualifier fixed later
"flat in highp int gl_PrimitiveID;" // needs qualifier fixed later
"flat in highp int gl_Layer;" // needs qualifier fixed later
); );
} }
stageBuiltins[EShLangFragment].append( stageBuiltins[EShLangFragment].append(
@ -2946,6 +2948,8 @@ void IdentifyBuiltIns(int version, EProfile profile, EShLanguage language, TSymb
} }
symbolTable.setVariableExtensions("gl_FragDepthEXT", 1, &GL_EXT_frag_depth); symbolTable.setVariableExtensions("gl_FragDepthEXT", 1, &GL_EXT_frag_depth);
symbolTable.setVariableExtensions("gl_PrimitiveID", Num_AEP_geometry_shader, AEP_geometry_shader);
symbolTable.setVariableExtensions("gl_Layer", Num_AEP_geometry_shader, AEP_geometry_shader);
break; break;
case EShLangCompute: case EShLangCompute:

View File

@ -181,7 +181,7 @@ void TParseContext::initializeExtensionBehavior()
extensionBehavior[GL_OES_shader_image_atomic] = EBhDisablePartial; extensionBehavior[GL_OES_shader_image_atomic] = EBhDisablePartial;
extensionBehavior[GL_OES_shader_multisample_interpolation] = EBhDisablePartial; extensionBehavior[GL_OES_shader_multisample_interpolation] = EBhDisablePartial;
extensionBehavior[GL_OES_texture_storage_multisample_2d_array] = EBhDisablePartial; extensionBehavior[GL_OES_texture_storage_multisample_2d_array] = EBhDisablePartial;
extensionBehavior[GL_EXT_geometry_shader] = EBhDisablePartial; extensionBehavior[GL_EXT_geometry_shader] = EBhDisable;
extensionBehavior[GL_EXT_geometry_point_size] = EBhDisablePartial; extensionBehavior[GL_EXT_geometry_point_size] = EBhDisablePartial;
extensionBehavior[GL_EXT_gpu_shader5] = EBhDisablePartial; extensionBehavior[GL_EXT_gpu_shader5] = EBhDisablePartial;
extensionBehavior[GL_EXT_primitive_bounding_box] = EBhDisablePartial; extensionBehavior[GL_EXT_primitive_bounding_box] = EBhDisablePartial;
@ -192,7 +192,7 @@ void TParseContext::initializeExtensionBehavior()
extensionBehavior[GL_EXT_texture_cube_map_array] = EBhDisablePartial; extensionBehavior[GL_EXT_texture_cube_map_array] = EBhDisablePartial;
// OES matching AEP // OES matching AEP
extensionBehavior[GL_OES_geometry_shader] = EBhDisablePartial; extensionBehavior[GL_OES_geometry_shader] = EBhDisable;
extensionBehavior[GL_OES_gpu_shader5] = EBhDisablePartial; extensionBehavior[GL_OES_gpu_shader5] = EBhDisablePartial;
extensionBehavior[GL_OES_primitive_bounding_box] = EBhDisablePartial; extensionBehavior[GL_OES_primitive_bounding_box] = EBhDisablePartial;
extensionBehavior[GL_OES_shader_io_blocks] = EBhDisable; extensionBehavior[GL_OES_shader_io_blocks] = EBhDisable;