-#version 330
+#version 330 compatibility
in vec4 inVar;
out vec4 outVar;
gl_FragData[1] = inVar;
int buffer = 4;
}
+
+#extension GL_ARB_separate_shader_objects : enable
+
+in gl_PerFragment {
+ vec4 gl_Color;
+};
+
+void foo()
+{
+ vec4 c = gl_Color;
+}
{\r
gl_ViewportIndex = 7;\r
}\r
+\r
+in gl_PerVertex {\r
+ float gl_PointSize;\r
+} myIn[]; // ERROR, can't redeclare a different name\r
+\r
+in gl_PerVertex {\r
+ float gl_PointSize;\r
+} gl_myIn[]; // ERROR, can't redeclare a different name\r
+\r
+in gl_PerVertex {\r
+ float gl_PointSize;\r
+} gl_in[];\r
+\r
+in gl_PerVertex {\r
+ float gl_PointSize;\r
+} gl_in[]; // ERROR, can't do it again\r
+\r
+out gl_PerVertex {\r
+ float gl_PointSize;\r
+};\r
+\r
+void foo()\r
+{\r
+ float p = gl_in[1].gl_PointSize; // use of redeclared\r
+ gl_PointSize = p; // use of redeclared\r
+}\r
\r
layout(location = 2) in inb1 { vec4 v; } b1; // ERROR\r
layout(location = 2) out outb1 { vec4 v; } b2; // ERROR\r
+\r
+out gl_PerVertex {\r
+ float gl_ClipDistance[];\r
+};\r
+\r
+void foo()\r
+{\r
+ gl_ClipDistance[2] = 3.7;\r
+}\r
0:29 'b' (mediump int)\r
0:29 Constant:\r
0:29 3 (const int)\r
-0:36 move second child to first child (structure)\r
-0:36 's1' (structure)\r
-0:36 's2' (structure)\r
+0:36 move second child to first child (structure{f,a})\r
+0:36 's1' (structure{f,a})\r
+0:36 's2' (structure{f,a})\r
0:37 Test condition and select (void)\r
0:37 Condition\r
0:37 Compare Equal (bool)\r
-0:37 's1' (structure)\r
-0:37 's2' (structure)\r
+0:37 's1' (structure{f,a})\r
+0:37 's2' (structure{f,a})\r
0:37 true case is null\r
0:38 Test condition and select (void)\r
0:38 Condition\r
0:38 Compare Not Equal (bool)\r
-0:38 's1' (structure)\r
-0:38 's2' (structure)\r
+0:38 's1' (structure{f,a})\r
+0:38 's2' (structure{f,a})\r
0:38 true case is null\r
0:40 'b' (mediump int)\r
0:? Linker Objects\r
0:? 'uint' (mediump int)\r
0:? 'v' (smooth in 3-element array of mediump 4-component vector of float)\r
0:? 'f' (mediump float)\r
-0:? '__anon__0' (layout(column_major shared ) uniform block)\r
+0:? '__anon__0' (layout(column_major shared ) uniform block{x})\r
0:? 'fa' (unsized array of mediump float)\r
\r
0:53 'x' (highp int)\r
0:61 Sequence\r
0:61 Sequence\r
-0:61 move second child to first child (structure)\r
-0:61 'S' (structure)\r
+0:61 move second child to first child (structure{x})\r
+0:61 'S' (structure{x})\r
0:61 Constant:\r
0:61 0 (const int)\r
0:62 x: direct index for structure (highp int)\r
-0:62 'S' (structure)\r
+0:62 'S' (structure{x})\r
0:62 Constant:\r
0:62 0 (const int)\r
0:? Linker Objects\r
0:23 Construct mat2x3 (2X3 matrix of float)\r
0:23 'm' (uniform 4X2 matrix of float)\r
0:27 Sequence\r
-0:27 move second child to first child (structure)\r
-0:27 'sv' (structure)\r
-0:27 Construct structure (structure)\r
+0:27 move second child to first child (structure{f})\r
+0:27 'sv' (structure{f})\r
+0:27 Construct structure (structure{f})\r
0:27 Convert int to float (float)\r
0:27 'a' (int)\r
0:28 Sequence\r
0:51 false case\r
0:51 'a' (int)\r
0:52 Sequence\r
-0:52 move second child to first child (structure)\r
-0:52 'news' (structure)\r
-0:52 'sv' (structure)\r
+0:52 move second child to first child (structure{f})\r
+0:52 'news' (structure{f})\r
+0:52 'sv' (structure{f})\r
0:54 vector swizzle (2-component vector of float)\r
0:54 'i' (smooth in 4-component vector of float)\r
0:54 Sequence\r
0:30 0.000000\r
0:32 move second child to first child (3-component vector of float)\r
0:32 color: direct index for structure (layout(stream=0 ) 3-component vector of float)\r
-0:32 '__anon__0' (layout(stream=0 ) out block)\r
+0:32 '__anon__0' (layout(stream=0 ) out block{color})\r
0:32 Constant:\r
0:32 0 (const uint)\r
0:32 color: direct index for structure (3-component vector of float)\r
-0:32 'fromV' (in block)\r
+0:32 'fromV' (in block{color})\r
0:32 Constant:\r
0:32 0 (const int)\r
0:33 move second child to first child (float)\r
0:33 direct index (layout(stream=0 ) float)\r
0:33 gl_ClipDistance: direct index for structure (layout(stream=0 ) unsized array of float)\r
-0:33 '__anon__1' (layout(stream=0 ) out block)\r
+0:33 '__anon__1' (layout(stream=0 ) out block{gl_Position,gl_PointSize,gl_ClipDistance})\r
0:33 Constant:\r
0:33 2 (const uint)\r
0:33 Constant:\r
0:33 3 (const int)\r
0:33 direct index (float)\r
0:33 gl_ClipDistance: direct index for structure (unsized array of float)\r
-0:33 direct index (in block)\r
-0:33 'gl_in' (in unsized array of block)\r
+0:33 direct index (in block{gl_Position,gl_PointSize,gl_ClipDistance})\r
+0:33 'gl_in' (in unsized array of block{gl_Position,gl_PointSize,gl_ClipDistance})\r
0:33 Constant:\r
0:33 1 (const int)\r
0:33 Constant:\r
0:33 2 (const int)\r
0:34 move second child to first child (4-component vector of float)\r
0:34 gl_Position: direct index for structure (layout(stream=0 ) 4-component vector of float)\r
-0:34 '__anon__1' (layout(stream=0 ) out block)\r
+0:34 '__anon__1' (layout(stream=0 ) out block{gl_Position,gl_PointSize,gl_ClipDistance})\r
0:34 Constant:\r
0:34 0 (const uint)\r
0:34 gl_Position: direct index for structure (4-component vector of float)\r
-0:34 direct index (in block)\r
-0:34 'gl_in' (in unsized array of block)\r
+0:34 direct index (in block{gl_Position,gl_PointSize,gl_ClipDistance})\r
+0:34 'gl_in' (in unsized array of block{gl_Position,gl_PointSize,gl_ClipDistance})\r
0:34 Constant:\r
0:34 0 (const int)\r
0:34 Constant:\r
0:34 0 (const int)\r
0:35 move second child to first child (float)\r
0:35 gl_PointSize: direct index for structure (layout(stream=0 ) float)\r
-0:35 '__anon__1' (layout(stream=0 ) out block)\r
+0:35 '__anon__1' (layout(stream=0 ) out block{gl_Position,gl_PointSize,gl_ClipDistance})\r
0:35 Constant:\r
0:35 1 (const uint)\r
0:35 gl_PointSize: direct index for structure (float)\r
-0:35 direct index (in block)\r
-0:35 'gl_in' (in unsized array of block)\r
+0:35 direct index (in block{gl_Position,gl_PointSize,gl_ClipDistance})\r
+0:35 'gl_in' (in unsized array of block{gl_Position,gl_PointSize,gl_ClipDistance})\r
0:35 Constant:\r
0:35 3 (const int)\r
0:35 Constant:\r
0:67 Sequence\r
0:67 move second child to first child (4-component vector of float)\r
0:67 a: direct index for structure (layout(stream=6 ) 4-component vector of float)\r
-0:67 'ouuaa6' (layout(stream=6 ) out block)\r
+0:67 'ouuaa6' (layout(stream=6 ) out block{a})\r
0:67 Constant:\r
0:67 0 (const int)\r
0:67 Constant:\r
0:67 1.000000\r
0:67 1.000000\r
0:? Linker Objects\r
-0:? 'fromV' (in block)\r
-0:? 'toF' (layout(stream=0 ) out block)\r
-0:? '__anon__0' (layout(stream=0 ) out block)\r
+0:? 'fromV' (in block{color})\r
+0:? 'toF' (layout(stream=0 ) out block{color})\r
+0:? '__anon__0' (layout(stream=0 ) out block{color})\r
0:? 'ov0' (layout(stream=0 ) out 4-component vector of float)\r
0:? 'ov4' (layout(stream=4 ) out 4-component vector of float)\r
0:? 'o1v0' (layout(stream=0 ) out 4-component vector of float)\r
0:? 'ua' (layout(stream=3 ) uniform int)\r
-0:? 'ibb' (layout(stream=3 column_major shared ) uniform block)\r
+0:? 'ibb' (layout(stream=3 column_major shared ) uniform block{ua})\r
0:? 'ov3' (layout(stream=3 ) out 4-component vector of float)\r
-0:? 'ouuaa6' (layout(stream=6 ) out block)\r
-0:? 'ouua6' (layout(stream=6 ) out block)\r
-0:? 'ouua7' (layout(stream=7 ) out block)\r
+0:? 'ouuaa6' (layout(stream=6 ) out block{a})\r
+0:? 'ouua6' (layout(stream=6 ) out block{a})\r
+0:? 'ouua7' (layout(stream=7 ) out block{a})\r
0:? 'ov2s3' (layout(stream=3 ) out 4-component vector of float)\r
0:? 'badv4' (layout(stream=3 ) out 4-component vector of float)\r
0:? 'bad2v4' (in 4-component vector of float)\r
-0:? '__anon__1' (layout(stream=3 ) out block)\r
-0:? 'outbi' (layout(stream=3 ) out block)\r
-0:? 'inbi' (in block)\r
+0:? '__anon__1' (layout(stream=3 ) out block{a})\r
+0:? 'outbi' (layout(stream=3 ) out block{a,b,c})\r
+0:? 'inbi' (in block{a})\r
\r
0:11 Sequence\r
0:11 move second child to first child (4-component vector of float)\r
0:11 gl_Position: direct index for structure (invariant gl_Position 4-component vector of float)\r
-0:11 '__anon__0' (out block)\r
+0:11 '__anon__0' (out block{gl_Position,gl_PointSize,gl_ClipDistance,gl_ClipVertex,gl_FrontColor,gl_BackColor,gl_FrontSecondaryColor,gl_BackSecondaryColor,gl_TexCoord,gl_FogFragCoord})\r
0:11 Constant:\r
0:11 0 (const uint)\r
0:11 'iv4' (in 4-component vector of float)\r
0:12 move second child to first child (float)\r
0:12 gl_PointSize: direct index for structure (gl_PointSize float)\r
-0:12 '__anon__0' (out block)\r
+0:12 '__anon__0' (out block{gl_Position,gl_PointSize,gl_ClipDistance,gl_ClipVertex,gl_FrontColor,gl_BackColor,gl_FrontSecondaryColor,gl_BackSecondaryColor,gl_TexCoord,gl_FogFragCoord})\r
0:12 Constant:\r
0:12 1 (const uint)\r
0:12 'ps' (uniform float)\r
0:13 move second child to first child (float)\r
0:13 direct index (float)\r
0:13 gl_ClipDistance: direct index for structure (4-element array of float)\r
-0:13 '__anon__0' (out block)\r
+0:13 '__anon__0' (out block{gl_Position,gl_PointSize,gl_ClipDistance,gl_ClipVertex,gl_FrontColor,gl_BackColor,gl_FrontSecondaryColor,gl_BackSecondaryColor,gl_TexCoord,gl_FogFragCoord})\r
0:13 Constant:\r
0:13 2 (const uint)\r
0:13 Constant:\r
0:? Linker Objects\r
0:? 'iv4' (in 4-component vector of float)\r
0:? 'ps' (uniform float)\r
-0:? '__anon__1' (layout(column_major shared ) uniform block)\r
+0:? '__anon__1' (layout(column_major shared ) uniform block{a})\r
0:? 'gl_VertexID' (gl_VertexId int)\r
0:? 'gl_InstanceID' (gl_InstanceId int)\r
\r
0:91 move second child to first child (lowp 3-component vector of float)\r
0:91 'sc' (out lowp 3-component vector of float)\r
0:91 c: direct index for structure (lowp 3-component vector of float)\r
-0:91 's2' (smooth in structure)\r
+0:91 's2' (smooth in structure{c,f})\r
0:91 Constant:\r
0:91 0 (const int)\r
0:92 move second child to first child (lowp float)\r
0:92 'sf' (out lowp float)\r
0:92 f: direct index for structure (lowp float)\r
-0:92 's2' (smooth in structure)\r
+0:92 's2' (smooth in structure{c,f})\r
0:92 Constant:\r
0:92 1 (const int)\r
0:94 add (lowp 2-component vector of float)\r
0:? 'ic4D' (flat in mediump 4-component vector of int)\r
0:? 'badv' (noperspective in lowp 4-component vector of float)\r
0:? 'bads' (smooth in lowp sampler2D)\r
-0:? 'badout' (out structure)\r
-0:? 's2' (smooth in structure)\r
+0:? 'badout' (out structure{i,s})\r
+0:? 's2' (smooth in structure{c,f})\r
0:? 'sc' (out lowp 3-component vector of float)\r
0:? 'sf' (out lowp float)\r
0:? 'arrayedSampler' (uniform 5-element array of lowp sampler2D)\r
-0:? 'multiInst' (layout(column_major shared ) uniform 2-element array of block)\r
+0:? 'multiInst' (layout(column_major shared ) uniform 2-element array of block{a,b,c})\r
\r
0:50 1 (const int)\r
0:52 move second child to first child (highp 3-component vector of float)\r
0:52 c: direct index for structure (highp 3-component vector of float)\r
-0:52 's' (smooth out structure)\r
+0:52 's' (smooth out structure{c,f})\r
0:52 Constant:\r
0:52 0 (const int)\r
0:52 'v3' (in highp 3-component vector of float)\r
0:53 move second child to first child (highp float)\r
0:53 f: direct index for structure (highp float)\r
-0:53 's' (smooth out structure)\r
+0:53 's' (smooth out structure{c,f})\r
0:53 Constant:\r
0:53 1 (const int)\r
0:53 'dm' (highp float)\r
0:? 'rep' (smooth flat out highp 4-component vector of float)\r
0:? 'rep2' (centroid smooth sample out highp 4-component vector of float)\r
0:? 'rep3' (in highp 4-component vector of float)\r
-0:? 's' (smooth out structure)\r
+0:? 's' (smooth out structure{c,f})\r
0:? 'badsize' (unsized array of highp float)\r
0:? 'badsize2' (unsized array of highp float)\r
-0:? 'ubInst' (layout(column_major shared ) uniform unsized array of block)\r
+0:? 'ubInst' (layout(column_major shared ) uniform unsized array of block{a})\r
0:? 'okayA' (2-element array of highp float)\r
0:? 'gl_VertexID' (gl_VertexId highp int)\r
0:? 'gl_InstanceID' (gl_InstanceId highp int)\r
0:44 Sequence\r
0:44 Function Call: texture(is31;vf3; (mediump 4-component vector of int)\r
0:44 sampler: direct index for structure (lowp isampler3D)\r
-0:44 's' (uniform structure)\r
+0:44 's' (uniform structure{u,v,sampler,w,t})\r
0:44 Constant:\r
0:44 2 (const int)\r
0:44 Construct vec3 (3-component vector of float)\r
0:44 Convert int to float (float)\r
0:44 ni: direct index for structure (layout(column_major shared ) mediump int)\r
-0:44 'inst' (layout(column_major shared ) uniform block)\r
+0:44 'inst' (layout(column_major shared ) uniform block{nbv,ni})\r
0:44 Constant:\r
0:44 1 (const int)\r
0:44 Convert uint to float (float)\r
0:44 direct index (mediump uint)\r
0:44 bv: direct index for structure (layout(column_major shared ) mediump 4-component vector of uint)\r
-0:44 '__anon__0' (layout(column_major shared ) uniform block)\r
+0:44 '__anon__0' (layout(column_major shared ) uniform block{bv,bm2,sampler,t,fbs})\r
0:44 Constant:\r
0:44 0 (const uint)\r
0:44 Constant:\r
0:44 Convert uint to float (float)\r
0:44 direct index (mediump uint)\r
0:44 nbv: direct index for structure (layout(column_major shared ) mediump 4-component vector of uint)\r
-0:44 direct index (layout(column_major shared ) uniform block)\r
-0:44 'insts' (layout(column_major shared ) uniform 4-element array of block)\r
+0:44 direct index (layout(column_major shared ) uniform block{nbv,ni})\r
+0:44 'insts' (layout(column_major shared ) uniform 4-element array of block{nbv,ni})\r
0:44 Constant:\r
0:44 2 (const int)\r
0:44 Constant:\r
0:44 0 (const int)\r
0:44 Constant:\r
0:44 2 (const int)\r
-0:45 indirect index (layout(column_major shared ) uniform block)\r
-0:45 'insts' (layout(column_major shared ) uniform 4-element array of block)\r
+0:45 indirect index (layout(column_major shared ) uniform block{nbv,ni})\r
+0:45 'insts' (layout(column_major shared ) uniform 4-element array of block{nbv,ni})\r
0:45 direct index (mediump uint)\r
0:45 v: direct index for structure (mediump 4-component vector of uint)\r
-0:45 's' (uniform structure)\r
+0:45 's' (uniform structure{u,v,sampler,w,t})\r
0:45 Constant:\r
0:45 1 (const int)\r
0:45 Constant:\r
0:45 0 (const int)\r
0:? Linker Objects\r
-0:? 's' (uniform structure)\r
-0:? '__anon__0' (layout(column_major shared ) uniform block)\r
-0:? 'inst' (layout(column_major shared ) uniform block)\r
-0:? 'insts' (layout(column_major shared ) uniform 4-element array of block)\r
-0:? '__anon__1' (layout(column_major shared ) uniform block)\r
+0:? 's' (uniform structure{u,v,sampler,w,t})\r
+0:? '__anon__0' (layout(column_major shared ) uniform block{bv,bm2,sampler,t,fbs})\r
+0:? 'inst' (layout(column_major shared ) uniform block{nbv,ni})\r
+0:? 'insts' (layout(column_major shared ) uniform 4-element array of block{nbv,ni})\r
+0:? '__anon__1' (layout(column_major shared ) uniform block{f,u})\r
\r
0:43 add (highp 4X4 matrix of float)\r
0:43 add (highp 4X4 matrix of float)\r
0:43 M1: direct index for structure (layout(row_major std140 ) highp 4X4 matrix of float)\r
-0:43 'tblock' (layout(row_major std140 ) uniform block)\r
+0:43 'tblock' (layout(row_major std140 ) uniform block{M1,M2,N1,badf,badg})\r
0:43 Constant:\r
0:43 0 (const int)\r
0:43 M2: direct index for structure (layout(column_major std140 ) highp 4X4 matrix of float)\r
-0:43 'tblock' (layout(row_major std140 ) uniform block)\r
+0:43 'tblock' (layout(row_major std140 ) uniform block{M1,M2,N1,badf,badg})\r
0:43 Constant:\r
0:43 1 (const int)\r
0:43 M4: direct index for structure (layout(row_major shared ) highp 4X4 matrix of float)\r
-0:43 '__anon__1' (layout(column_major shared ) uniform block)\r
+0:43 '__anon__1' (layout(column_major shared ) uniform block{M3,M4,N2,b})\r
0:43 Constant:\r
0:43 1 (const uint)\r
0:43 M3: direct index for structure (layout(column_major shared ) highp 4X4 matrix of float)\r
-0:43 '__anon__1' (layout(column_major shared ) uniform block)\r
+0:43 '__anon__1' (layout(column_major shared ) uniform block{M3,M4,N2,b})\r
0:43 Constant:\r
0:43 0 (const uint)\r
0:43 t2m: direct index for structure (layout(row_major shared ) highp 4X4 matrix of float)\r
-0:43 '__anon__0' (layout(row_major shared ) uniform block)\r
+0:43 '__anon__0' (layout(row_major shared ) uniform block{b,t2m})\r
0:43 Constant:\r
0:43 1 (const uint)\r
0:44 move second child to first child (highp 3-component vector of float)\r
0:44 vector-times-matrix (highp 3-component vector of float)\r
0:44 'c' (layout(location=7 ) in highp 3-component vector of float)\r
0:44 N1: direct index for structure (layout(row_major std140 ) highp 3X3 matrix of float)\r
-0:44 'tblock' (layout(row_major std140 ) uniform block)\r
+0:44 'tblock' (layout(row_major std140 ) uniform block{M1,M2,N1,badf,badg})\r
0:44 Constant:\r
0:44 2 (const int)\r
0:? Linker Objects\r
0:? 'c' (layout(location=7 ) in highp 3-component vector of float)\r
0:? 'p' (layout(location=3 ) in highp 4-component vector of float)\r
0:? 'q' (layout(location=9 ) in 4-element array of highp 4-component vector of float)\r
-0:? 'r' (layout(location=10 ) in 4-element array of structure)\r
+0:? 'r' (layout(location=10 ) in 4-element array of structure{v})\r
0:? 'pos' (smooth out highp 4-component vector of float)\r
0:? 'color' (smooth out highp 3-component vector of float)\r
0:? 'badm4' (layout(column_major shared ) uniform highp 4X4 matrix of float)\r
-0:? 'tblock' (layout(row_major std140 ) uniform block)\r
-0:? '__anon__0' (layout(row_major shared ) uniform block)\r
-0:? '__anon__2' (out block)\r
+0:? 'tblock' (layout(row_major std140 ) uniform block{M1,M2,N1,badf,badg})\r
+0:? '__anon__0' (layout(row_major shared ) uniform block{b,t2m})\r
+0:? '__anon__2' (out block{f})\r
0:? 'badoutA' (layout(location=10 ) smooth out highp 4-component vector of float)\r
0:? 'compute_only' (shared highp 4-component vector of float)\r
0:? 'gl_VertexID' (gl_VertexId highp int)\r
ERROR: 0:11: 'float' : type requires declaration of default precision qualifier \r
-ERROR: 0:30: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type 'layout(column_major shared ) uniform block' and a right operand of type 'layout(column_major shared ) uniform block' (or there is no acceptable conversion)\r
-ERROR: 0:31: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type 'structure' and a right operand of type 'structure' (or there is no acceptable conversion)\r
+ERROR: 0:30: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type 'layout(column_major shared ) uniform block{f}' and a right operand of type 'layout(column_major shared ) uniform block{f}' (or there is no acceptable conversion)\r
+ERROR: 0:31: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type 'structure{i}' and a right operand of type 'structure{i}' (or there is no acceptable conversion)\r
ERROR: 0:32: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type 'mediump int' and a right operand of type 'mediump float' (or there is no acceptable conversion)\r
ERROR: 0:33: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type 'mediump uint' and a right operand of type 'mediump float' (or there is no acceptable conversion)\r
ERROR: 0:34: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type 'mediump uint' and a right operand of type 'mediump int' (or there is no acceptable conversion)\r
ERROR: 0:43: '%' : wrong operand types: no operation '%' exists that takes a left-hand operand of type 'mediump int' and a right operand of type 'mediump float' (or there is no acceptable conversion)\r
ERROR: 0:44: '%' : wrong operand types: no operation '%' exists that takes a left-hand operand of type 'mediump float' and a right operand of type 'mediump uint' (or there is no acceptable conversion)\r
ERROR: 0:45: '++' : l-value required "instanceName" (can't modify a uniform)\r
-ERROR: 0:45: '++' : wrong operand type no operation '++' exists that takes an operand of type layout(column_major shared ) uniform block (or there is no acceptable conversion)\r
-ERROR: 0:46: '++' : wrong operand type no operation '++' exists that takes an operand of type structure (or there is no acceptable conversion)\r
+ERROR: 0:45: '++' : wrong operand type no operation '++' exists that takes an operand of type layout(column_major shared ) uniform block{f} (or there is no acceptable conversion)\r
+ERROR: 0:46: '++' : wrong operand type no operation '++' exists that takes an operand of type structure{i} (or there is no acceptable conversion)\r
ERROR: 0:47: '--' : wrong operand type no operation '--' exists that takes an operand of type 5-element array of mediump float (or there is no acceptable conversion)\r
ERROR: 0:48: '++' : wrong operand type no operation '++' exists that takes an operand of type 3-component vector of bool (or there is no acceptable conversion)\r
ERROR: 0:50: '<' : wrong operand types: no operation '<' exists that takes a left-hand operand of type 'mediump 3-component vector of int' and a right operand of type 'mediump 3-component vector of uint' (or there is no acceptable conversion)\r
ERROR: 0:71: '~' : wrong operand type no operation '~' exists that takes an operand of type mediump 4X4 matrix of float (or there is no acceptable conversion)\r
ERROR: 0:72: '~' : wrong operand type no operation '~' exists that takes an operand of type mediump 3-component vector of float (or there is no acceptable conversion)\r
ERROR: 0:73: '~' : wrong operand type no operation '~' exists that takes an operand of type 5-element array of mediump float (or there is no acceptable conversion)\r
-ERROR: 0:74: '~' : wrong operand type no operation '~' exists that takes an operand of type layout(column_major shared ) uniform block (or there is no acceptable conversion)\r
+ERROR: 0:74: '~' : wrong operand type no operation '~' exists that takes an operand of type layout(column_major shared ) uniform block{f} (or there is no acceptable conversion)\r
ERROR: 0:76: '<<' : wrong operand types: no operation '<<' exists that takes a left-hand operand of type 'mediump int' and a right operand of type 'mediump 3-component vector of int' (or there is no acceptable conversion)\r
ERROR: 0:77: '<<' : wrong operand types: no operation '<<' exists that takes a left-hand operand of type 'mediump uint' and a right operand of type 'mediump 3-component vector of uint' (or there is no acceptable conversion)\r
ERROR: 0:78: '>>' : wrong operand types: no operation '>>' exists that takes a left-hand operand of type 'mediump int' and a right operand of type 'mediump float' (or there is no acceptable conversion)\r
ERROR: 0:86: '|' : wrong operand types: no operation '|' exists that takes a left-hand operand of type 'mediump int' and a right operand of type 'mediump 3-component vector of uint' (or there is no acceptable conversion)\r
ERROR: 0:87: '&' : wrong operand types: no operation '&' exists that takes a left-hand operand of type 'mediump uint' and a right operand of type 'mediump float' (or there is no acceptable conversion)\r
ERROR: 0:88: '|' : wrong operand types: no operation '|' exists that takes a left-hand operand of type 'mediump 2X2 matrix of float' and a right operand of type 'mediump 2X2 matrix of float' (or there is no acceptable conversion)\r
-ERROR: 0:89: '^' : wrong operand types: no operation '^' exists that takes a left-hand operand of type 'structure' and a right operand of type 'structure' (or there is no acceptable conversion)\r
+ERROR: 0:89: '^' : wrong operand types: no operation '^' exists that takes a left-hand operand of type 'structure{i}' and a right operand of type 'structure{i}' (or there is no acceptable conversion)\r
ERROR: 0:90: 'assign' : l-value required \r
ERROR: 56 compilation errors. No code generated.\r
\r
0:13 Function Definition: main( (void)\r
0:13 Function Parameters: \r
0:? Sequence\r
-0:30 'instanceName' (layout(column_major shared ) uniform block)\r
-0:31 's' (structure)\r
+0:30 'instanceName' (layout(column_major shared ) uniform block{f})\r
+0:31 's' (structure{i})\r
0:32 'i' (mediump int)\r
0:33 'u' (mediump uint)\r
0:34 'u' (mediump uint)\r
0:42 'f' (mediump float)\r
0:43 'i' (mediump int)\r
0:44 'f' (mediump float)\r
-0:45 'instanceName' (layout(column_major shared ) uniform block)\r
-0:46 's' (structure)\r
+0:45 'instanceName' (layout(column_major shared ) uniform block{f})\r
+0:46 's' (structure{i})\r
0:47 'a' (5-element array of mediump float)\r
0:48 'b3' (3-component vector of bool)\r
0:50 Constant:\r
0:71 'm4' (mediump 4X4 matrix of float)\r
0:72 'v3' (mediump 3-component vector of float)\r
0:73 'a' (5-element array of mediump float)\r
-0:74 'instanceName' (layout(column_major shared ) uniform block)\r
+0:74 'instanceName' (layout(column_major shared ) uniform block{f})\r
0:76 'i' (mediump int)\r
0:77 'u' (mediump uint)\r
0:78 'i' (mediump int)\r
0:86 'i' (mediump int)\r
0:87 'u' (mediump uint)\r
0:88 'm2' (mediump 2X2 matrix of float)\r
-0:89 's' (structure)\r
+0:89 's' (structure{i})\r
0:90 move second child to first child (mediump float)\r
0:90 move second child to first child (mediump float)\r
0:90 'f' (mediump float)\r
0:106 'a' (5-element array of mediump float)\r
0:106 'a' (5-element array of mediump float)\r
0:107 Compare Not Equal (bool)\r
-0:107 's' (structure)\r
-0:107 's' (structure)\r
+0:107 's' (structure{i})\r
+0:107 's' (structure{i})\r
0:109 logical-and (bool)\r
0:109 'b' (bool)\r
0:109 'b' (bool)\r
0:127 'iv3' (mediump 3-component vector of int)\r
0:127 'iv3' (mediump 3-component vector of int)\r
0:? Linker Objects\r
-0:? 'instanceName' (layout(column_major shared ) uniform block)\r
-0:? 's' (structure)\r
+0:? 'instanceName' (layout(column_major shared ) uniform block{f})\r
+0:? 's' (structure{i})\r
0:? 'a' (5-element array of mediump float)\r
\r
0:53 'x' (highp int)\r
0:61 Sequence\r
0:61 Sequence\r
-0:61 move second child to first child (structure)\r
-0:61 'S' (structure)\r
+0:61 move second child to first child (structure{x})\r
+0:61 'S' (structure{x})\r
0:61 Constant:\r
0:61 0 (const int)\r
0:62 x: direct index for structure (highp int)\r
-0:62 'S' (structure)\r
+0:62 'S' (structure{x})\r
0:62 Constant:\r
0:62 0 (const int)\r
0:? Linker Objects\r
Warning, version 330 is not yet complete; some version-specific features are present, but many are missing.\r
-WARNING: 0:6: varying deprecated in version 130; may be removed in future release\r
0:? Sequence\r
0:8 Function Definition: main( (void)\r
0:8 Function Parameters: \r
0:12 'buffer' (int)\r
0:12 Constant:\r
0:12 4 (const int)\r
+0:21 Function Definition: foo( (void)\r
+0:21 Function Parameters: \r
+0:23 Sequence\r
+0:23 Sequence\r
+0:23 move second child to first child (4-component vector of float)\r
+0:23 'c' (4-component vector of float)\r
+0:23 gl_Color: direct index for structure (in 4-component vector of float)\r
+0:23 '__anon__0' (in block{gl_Color})\r
+0:23 Constant:\r
+0:23 0 (const uint)\r
0:? Linker Objects\r
0:? 'inVar' (smooth in 4-component vector of float)\r
0:? 'outVar' (out 4-component vector of float)\r
0:? 'varyingVar' (smooth in 4-component vector of float)\r
+0:? '__anon__0' (in block{gl_Color})\r
\r
0:10 'id' (int)\r
0:10 'gl_InvocationID' (in int)\r
0:? Linker Objects\r
-0:? '__anon__0' (layout(stream=0 ) out block)\r
+0:? '__anon__0' (layout(stream=0 ) out block{a})\r
\r
Warning, version 410 is not yet complete; some version-specific features are present, but many are missing.\r
+ERROR: 0:8: 'myIn' : cannot redeclare a built-in block with a user name \r
+ERROR: 0:8: 'gl_' : reserved built-in name \r
+ERROR: 0:12: 'gl_' : reserved built-in name \r
+ERROR: 0:20: 'gl_PerVertex' : can only redeclare a built-in block once \r
+ERROR: 0:20: 'gl_' : reserved built-in name \r
+ERROR: 5 compilation errors. No code generated.\r
+\r
invocations = 0\r
max_vertices = 0\r
input primitive = none\r
output primitive = none\r
-0:? Sequence\r
+ERROR: node is still EOpNull!\r
0:3 Function Definition: main( (void)\r
0:3 Function Parameters: \r
0:5 Sequence\r
0:5 'gl_ViewportIndex' (layout(stream=0 ) out int)\r
0:5 Constant:\r
0:5 7 (const int)\r
+0:28 Function Definition: foo( (void)\r
+0:28 Function Parameters: \r
+0:30 Sequence\r
+0:30 Sequence\r
+0:30 move second child to first child (float)\r
+0:30 'p' (float)\r
+0:30 gl_PointSize: direct index for structure (float)\r
+0:30 direct index (in block{gl_PointSize})\r
+0:30 'gl_in' (in unsized array of block{gl_PointSize})\r
+0:30 Constant:\r
+0:30 1 (const int)\r
+0:30 Constant:\r
+0:30 0 (const int)\r
+0:31 move second child to first child (float)\r
+0:31 gl_PointSize: direct index for structure (layout(stream=0 ) float)\r
+0:31 '__anon__0' (layout(stream=0 ) out block{gl_PointSize})\r
+0:31 Constant:\r
+0:31 0 (const uint)\r
+0:31 'p' (float)\r
0:? Linker Objects\r
+0:? 'gl_in' (in unsized array of block{gl_PointSize})\r
+0:? '__anon__0' (layout(stream=0 ) out block{gl_PointSize})\r
\r
ERROR: 0:29: 'const 2-element array of 4-component vector of float' : cannot construct with these arguments \r
ERROR: 0:29: '=' : cannot convert from 'const float' to '2-element array of 4-component vector of float'\r
ERROR: 0:30: 'initializer list' : wrong number of matrix columns: 4X2 matrix of float\r
-ERROR: 0:40: 'constructor' : cannot convert parameter 1 from 'float' to 'structure'\r
+ERROR: 0:40: 'constructor' : cannot convert parameter 1 from 'float' to 'structure{s,t}'\r
ERROR: 0:58: 'initializer list' : wrong number of structure members \r
ERROR: 13 compilation errors. No code generated.\r
\r
0:4 0.000000\r
0:4 1.000000\r
0:15 Sequence\r
-0:15 move second child to first child (structure)\r
-0:15 'e' (structure)\r
+0:15 move second child to first child (structure{a,b})\r
+0:15 'e' (structure{a,b})\r
0:15 Constant:\r
0:15 1.200000\r
0:15 2 (const int)\r
0:20 Sequence\r
-0:20 move second child to first child (structure)\r
-0:20 'e2' (structure)\r
+0:20 move second child to first child (structure{a,b})\r
+0:20 'e2' (structure{a,b})\r
0:20 Constant:\r
0:20 1.000000\r
0:20 3 (const int)\r
0:74 0.000000\r
0:74 6.000000\r
0:74 0.000000\r
-0:74 'curlybad1' (structure)\r
+0:74 'curlybad1' (structure{uv2,s})\r
0:74 true case is null\r
0:76 Test condition and select (void)\r
0:76 Condition\r
0:? 'b2' (2-component vector of float)\r
0:? 'c2' (3X3 matrix of float)\r
0:? 'd' (2X2 matrix of float)\r
-0:? 'e' (structure)\r
-0:? 'e2' (structure)\r
-0:? 'e3' (structure)\r
+0:? 'e' (structure{a,b})\r
+0:? 'e2' (structure{a,b})\r
+0:? 'e3' (structure{a,b})\r
0:? 'a3' (int)\r
0:? 'b3' (2-element array of 4-component vector of float)\r
0:? 'b4' (2-element array of 4-component vector of float)\r
0:? 'c3' (4X2 matrix of float)\r
-0:? 'd2' (unsized array of structure)\r
+0:? 'd2' (unsized array of structure{s,t})\r
0:? 'b5' (5-element array of float)\r
-0:? 'constructed' (const structure)\r
+0:? 'constructed' (const structure{uv2,s})\r
0:? 1 (const uint)\r
0:? 2 (const uint)\r
0:? 3.000000\r
0:? 0.000000\r
0:? 6.000000\r
0:? 0.000000\r
-0:? 'curlybad1' (structure)\r
-0:? 'curlyInit' (const structure)\r
+0:? 'curlybad1' (structure{uv2,s})\r
+0:? 'curlyInit' (const structure{uv2,s})\r
0:? 1 (const uint)\r
0:? 2 (const uint)\r
0:? 3.000000\r
0:? 4.200000\r
0:? 'dx' (const float)\r
0:? 4.200000\r
-0:? 'boundInst' (layout(binding=3 column_major shared ) uniform block)\r
-0:? '__anon__0' (layout(binding=7 column_major shared ) uniform block)\r
-0:? '__anon__1' (layout(binding=1 ) in block)\r
-0:? '__anon__2' (layout(column_major shared ) uniform block)\r
+0:? 'boundInst' (layout(binding=3 column_major shared ) uniform block{aoeu})\r
+0:? '__anon__0' (layout(binding=7 column_major shared ) uniform block{aoeu})\r
+0:? '__anon__1' (layout(binding=1 ) in block{aoeua})\r
+0:? '__anon__2' (layout(column_major shared ) uniform block{aooeu})\r
0:? 'sampb1' (layout(binding=4 ) uniform sampler2D)\r
0:? 'sampb2' (layout(binding=5 ) uniform 10-element array of sampler2D)\r
0:? 'gl_VertexID' (gl_VertexId int)\r
ERROR: 3 compilation errors. No code generated.\r
\r
ERROR: node is still EOpNull!\r
+0:14 Function Definition: foo( (void)\r
+0:14 Function Parameters: \r
+0:16 Sequence\r
+0:16 move second child to first child (float)\r
+0:16 direct index (float)\r
+0:16 gl_ClipDistance: direct index for structure (unsized array of float)\r
+0:16 '__anon__0' (out block{gl_ClipDistance})\r
+0:16 Constant:\r
+0:16 0 (const uint)\r
+0:16 Constant:\r
+0:16 2 (const int)\r
+0:16 Constant:\r
+0:16 3.700000\r
0:? Linker Objects\r
0:? 'v4' (layout(location=3 ) 4-component vector of float)\r
0:? 'uv4' (layout(location=3 ) uniform 4-component vector of float)\r
-0:? 'b1' (layout(location=2 ) in block)\r
-0:? 'b2' (layout(location=2 ) out block)\r
+0:? 'b1' (layout(location=2 ) in block{v})\r
+0:? 'b2' (layout(location=2 ) out block{v})\r
+0:? '__anon__0' (out block{gl_ClipDistance})\r
0:? 'gl_VertexID' (gl_VertexId int)\r
0:? 'gl_InstanceID' (gl_InstanceId int)\r
\r
0:40 3.000000\r
0:42 move second child to first child (4-component vector of float)\r
0:42 gl_Position: direct index for structure (invariant gl_Position 4-component vector of float)\r
-0:42 '__anon__0' (out block)\r
+0:42 '__anon__0' (out block{gl_Position,gl_PointSize,gl_ClipDistance,gl_ClipVertex,gl_FrontColor,gl_BackColor,gl_FrontSecondaryColor,gl_BackSecondaryColor,gl_TexCoord,gl_FogFragCoord})\r
0:42 Constant:\r
0:42 0 (const uint)\r
0:42 Construct vec4 (4-component vector of float)\r
0:53 'x' (int)\r
0:61 Sequence\r
0:61 Sequence\r
-0:61 move second child to first child (structure)\r
-0:61 'S' (structure)\r
+0:61 move second child to first child (structure{x})\r
+0:61 'S' (structure{x})\r
0:61 Constant:\r
0:61 0 (const int)\r
0:62 x: direct index for structure (int)\r
-0:62 'S' (structure)\r
+0:62 'S' (structure{x})\r
0:62 Constant:\r
0:62 0 (const int)\r
0:? Linker Objects\r
0:23 Function Definition: main( (void)\r
0:23 Function Parameters: \r
0:? Sequence\r
-0:27 move second child to first child (3-element array of structure)\r
-0:27 'a' (3-element array of structure)\r
-0:27 Construct structure (3-element array of structure)\r
-0:27 Construct structure (structure)\r
+0:27 move second child to first child (3-element array of structure{i,f})\r
+0:27 'a' (3-element array of structure{i,f})\r
+0:27 Construct structure (3-element array of structure{i,f})\r
+0:27 Construct structure (structure{i,f})\r
0:27 Convert float to int (int)\r
0:27 direct index (float)\r
0:27 'u' (smooth in 4-component vector of float)\r
0:27 'u' (smooth in 4-component vector of float)\r
0:27 Constant:\r
0:27 1 (const int)\r
-0:27 Construct structure (structure)\r
+0:27 Construct structure (structure{i,f})\r
0:27 Convert float to int (int)\r
0:27 direct index (float)\r
0:27 'u' (smooth in 4-component vector of float)\r
0:27 Constant:\r
0:27 14 (const int)\r
0:27 14.000000\r
-0:28 move second child to first child (3-element array of structure)\r
-0:28 'b' (3-element array of structure)\r
-0:28 Construct structure (3-element array of structure)\r
+0:28 move second child to first child (3-element array of structure{i,f})\r
+0:28 'b' (3-element array of structure{i,f})\r
+0:28 Construct structure (3-element array of structure{i,f})\r
0:28 Constant:\r
0:28 17 (const int)\r
0:28 17.000000\r
-0:28 Construct structure (structure)\r
+0:28 Construct structure (structure{i,f})\r
0:28 Convert float to int (int)\r
0:28 direct index (float)\r
0:28 'w' (smooth in 4-component vector of float)\r
0:28 'w' (smooth in 4-component vector of float)\r
0:28 Constant:\r
0:28 1 (const int)\r
-0:28 Construct structure (structure)\r
+0:28 Construct structure (structure{i,f})\r
0:28 Convert float to int (int)\r
0:28 direct index (float)\r
0:28 'w' (smooth in 4-component vector of float)\r
0:30 Test condition and select (void)\r
0:30 Condition\r
0:30 Compare Equal (bool)\r
-0:30 'foo2a' (uniform structure)\r
-0:30 'foo2b' (uniform structure)\r
+0:30 'foo2a' (uniform structure{i,f,s1_1})\r
+0:30 'foo2b' (uniform structure{i,f,s1_1})\r
0:30 true case\r
0:31 move second child to first child (4-component vector of float)\r
0:31 'v' (4-component vector of float)\r
0:44 Test condition and select (void)\r
0:44 Condition\r
0:44 Compare Equal (bool)\r
-0:44 'a' (3-element array of structure)\r
-0:44 'b' (3-element array of structure)\r
+0:44 'a' (3-element array of structure{i,f})\r
+0:44 'b' (3-element array of structure{i,f})\r
0:44 true case\r
0:45 vector scale second child into first child (4-component vector of float)\r
0:45 'v' (4-component vector of float)\r
0:47 Test condition and select (void)\r
0:47 Condition\r
0:47 Compare Not Equal (bool)\r
-0:47 'a' (3-element array of structure)\r
-0:47 'b' (3-element array of structure)\r
+0:47 'a' (3-element array of structure{i,f})\r
+0:47 'b' (3-element array of structure{i,f})\r
0:47 true case\r
0:48 vector scale second child into first child (4-component vector of float)\r
0:48 'v' (4-component vector of float)\r
0:? 'coord' (smooth in 2-component vector of float)\r
0:? 'u' (smooth in 4-component vector of float)\r
0:? 'w' (smooth in 4-component vector of float)\r
-0:? 'foo1' (uniform structure)\r
-0:? 'foo2a' (uniform structure)\r
-0:? 'foo2b' (uniform structure)\r
+0:? 'foo1' (uniform structure{i,f})\r
+0:? 'foo2a' (uniform structure{i,f,s1_1})\r
+0:? 'foo2b' (uniform structure{i,f,s1_1})\r
\r
ERROR: 0:18: '' : array size must be a constant integer expression \r
ERROR: 0:19: '' : constant expression required \r
ERROR: 0:19: '' : array size must be a constant integer expression \r
-ERROR: 0:27: '=' : global const initializers must be constant 'const structure'\r
-ERROR: 0:33: '=' : global const initializers must be constant 'const structure'\r
+ERROR: 0:27: '=' : global const initializers must be constant 'const structure{v3,iv2}'\r
+ERROR: 0:33: '=' : global const initializers must be constant 'const structure{v3,iv2,m}'\r
ERROR: 9 compilation errors. No code generated.\r
\r
ERROR: node is still EOpNull!\r
0:? 'constInt' (const int)\r
0:? 3 (const int)\r
0:? 'uniformInt' (uniform int)\r
-0:? 's' (structure)\r
-0:? 's2' (structure)\r
+0:? 's' (structure{v3,iv2})\r
+0:? 's2' (structure{v3,iv2,m})\r
0:? 'f' (const float)\r
0:? 3.000000\r
\r
0:? 'out11' (out 4-component vector of float)\r
0:? 'out12' (out 2-component vector of int)\r
0:? 'out13' (out 3-component vector of uint)\r
-0:? 's' (const structure)\r
+0:? 's' (const structure{v3,iv2,m})\r
0:? 3.000000\r
0:? 3.000000\r
0:? 3.000000\r
0:33 direct index (float)\r
0:33 direct index (2-component vector of float)\r
0:33 b: direct index for structure (3-element array of 2-component vector of float)\r
-0:33 move second child to first child (structure)\r
-0:33 't' (structure)\r
+0:33 move second child to first child (structure{a,b,c})\r
+0:33 't' (structure{a,b,c})\r
0:33 Constant:\r
0:33 1 (const int)\r
0:33 2.000000\r
0:28 move second child to first child (mediump int)\r
0:28 direct index (mediump int)\r
0:28 t: direct index for structure (mediump 4-component vector of int)\r
-0:28 'f' (structure)\r
+0:28 'f' (structure{t})\r
0:28 Constant:\r
0:28 0 (const int)\r
0:28 Constant:\r
0:30 'e' (mediump int)\r
0:30 direct index (mediump int)\r
0:30 t: direct index for structure (mediump 4-component vector of int)\r
-0:30 'f' (structure)\r
+0:30 'f' (structure{t})\r
0:30 Constant:\r
0:30 0 (const int)\r
0:30 Constant:\r
0:32 'e' (mediump int)\r
0:32 direct index (mediump int)\r
0:32 t: direct index for structure (mediump 4-component vector of int)\r
-0:32 'f' (structure)\r
+0:32 'f' (structure{t})\r
0:32 Constant:\r
0:32 0 (const int)\r
0:32 Constant:\r
0:? 0.000000\r
0:? 0.000000\r
0:? 4.000000\r
-0:? 's' (uniform structure)\r
+0:? 's' (uniform structure{a,b})\r
0:? 82 (const int)\r
0:? 3.900000\r
-0:? 'sn' (uniform structure)\r
-0:? 'se' (uniform structure)\r
+0:? 'sn' (uniform structure{a,b})\r
+0:? 'se' (uniform structure{a,b})\r
0:? 82 (const int)\r
0:? 3.900000\r
\r
0:? 0.000000\r
0:? 0.000000\r
0:? 3.000000\r
-0:? 's' (uniform structure)\r
+0:? 's' (uniform structure{a,b})\r
0:? 82 (const int)\r
0:? 3.900000\r
-0:? 'sn' (uniform structure)\r
+0:? 'sn' (uniform structure{a,b})\r
0:? 82 (const int)\r
0:? 3.900000\r
-0:? 'se' (uniform structure)\r
+0:? 'se' (uniform structure{a,b})\r
0:? 81 (const int)\r
0:? 3.900000\r
\r
0:? 0.000000\r
0:? 0.000000\r
0:? 4.000000\r
-0:? 's' (uniform structure)\r
+0:? 's' (uniform structure{a,b})\r
0:? 82 (const int)\r
0:? 3.900000\r
-0:? 'sn' (uniform structure)\r
+0:? 'sn' (uniform structure{a,b})\r
0:? 82 (const int)\r
0:? 3.900000\r
-0:? 'se' (uniform structure)\r
+0:? 'se' (uniform structure{a,b})\r
0:? 82 (const int)\r
0:? 3.900000\r
0:? 'd' (4-component vector of float)\r
0:34 Function Definition: main( (void)\r
0:34 Function Parameters: \r
0:? Sequence\r
-0:41 move second child to first child (structure)\r
-0:41 'locals2' (structure)\r
-0:41 s2_1: direct index for structure (structure)\r
-0:41 'foo3' (uniform structure)\r
+0:41 move second child to first child (structure{i,f,s1_1,bleh})\r
+0:41 'locals2' (structure{i,f,s1_1,bleh})\r
+0:41 s2_1: direct index for structure (structure{i,f,s1_1,bleh})\r
+0:41 'foo3' (uniform structure{s2_1,i,f,s1_1})\r
0:41 Constant:\r
0:41 0 (const int)\r
0:43 Test condition and select (void)\r
0:43 Condition\r
0:43 Compare Greater Than (bool)\r
0:43 i: direct index for structure (int)\r
-0:43 s2_1: direct index for structure (structure)\r
-0:43 'foo3' (uniform structure)\r
+0:43 s2_1: direct index for structure (structure{i,f,s1_1,bleh})\r
+0:43 'foo3' (uniform structure{s2_1,i,f,s1_1})\r
0:43 Constant:\r
0:43 0 (const int)\r
0:43 Constant:\r
0:44 Sequence\r
0:44 move second child to first child (float)\r
0:44 f: direct index for structure (float)\r
-0:44 s1_1: direct index for structure (structure)\r
-0:44 'locals2' (structure)\r
+0:44 s1_1: direct index for structure (structure{i,f})\r
+0:44 'locals2' (structure{i,f,s1_1,bleh})\r
0:44 Constant:\r
0:44 2 (const int)\r
0:44 Constant:\r
0:46 Constant:\r
0:46 2 (const int)\r
0:46 i: direct index for structure (int)\r
-0:46 s2_1: direct index for structure (structure)\r
-0:46 'foo3' (uniform structure)\r
+0:46 s2_1: direct index for structure (structure{i,f,s1_1,bleh})\r
+0:46 'foo3' (uniform structure{s2_1,i,f,s1_1})\r
0:46 Constant:\r
0:46 0 (const int)\r
0:46 Constant:\r
0:48 Sequence\r
0:48 move second child to first child (float)\r
0:48 f: direct index for structure (float)\r
-0:48 s1_1: direct index for structure (structure)\r
-0:48 'locals2' (structure)\r
+0:48 s1_1: direct index for structure (structure{i,f})\r
+0:48 'locals2' (structure{i,f,s1_1,bleh})\r
0:48 Constant:\r
0:48 2 (const int)\r
0:48 Constant:\r
0:66 'localArray' (16-element array of float)\r
0:68 move second child to first child (4-component vector of float)\r
0:68 bleh: direct index for structure (4-component vector of float)\r
-0:68 'locals2' (structure)\r
+0:68 'locals2' (structure{i,f,s1_1,bleh})\r
0:68 Constant:\r
0:68 3 (const int)\r
0:68 'color' (smooth in 4-component vector of float)\r
0:69 move second child to first child (float)\r
0:69 direct index (float)\r
0:69 bleh: direct index for structure (4-component vector of float)\r
-0:69 'locals2' (structure)\r
+0:69 'locals2' (structure{i,f,s1_1,bleh})\r
0:69 Constant:\r
0:69 3 (const int)\r
0:69 Constant:\r
0:71 component-wise multiply (4-component vector of float)\r
0:71 vector-scale (4-component vector of float)\r
0:71 bleh: direct index for structure (4-component vector of float)\r
-0:71 'locals2' (structure)\r
+0:71 'locals2' (structure{i,f,s1_1,bleh})\r
0:71 Constant:\r
0:71 3 (const int)\r
0:71 add (float)\r
0:71 Constant:\r
0:71 4 (const int)\r
0:71 f: direct index for structure (float)\r
-0:71 s1_1: direct index for structure (structure)\r
-0:71 'locals2' (structure)\r
+0:71 s1_1: direct index for structure (structure{i,f})\r
+0:71 'locals2' (structure{i,f,s1_1,bleh})\r
0:71 Constant:\r
0:71 2 (const int)\r
0:71 Constant:\r
0:? 'sampler' (uniform sampler2D)\r
0:? 'coord' (smooth in 2-component vector of float)\r
0:? 'color' (smooth in 4-component vector of float)\r
-0:? 'foo' (uniform structure)\r
-0:? 'foo2' (uniform structure)\r
-0:? 'foo3' (uniform structure)\r
+0:? 'foo' (uniform structure{i,f})\r
+0:? 'foo2' (uniform structure{i,f,s1_1,bleh})\r
+0:? 'foo3' (uniform structure{s2_1,i,f,s1_1})\r
0:? 'uFloatArray' (uniform 16-element array of float)\r
0:? 'condition' (uniform int)\r
\r
0:12 move second child to first child (float)\r
0:12 direct index (float)\r
0:12 y: direct index for structure (5-element array of float)\r
-0:12 'str' (structure)\r
+0:12 'str' (structure{y})\r
0:12 Constant:\r
0:12 0 (const int)\r
0:12 Constant:\r
0:13 Pre-Increment (float)\r
0:13 indirect index (float)\r
0:13 y: direct index for structure (5-element array of float)\r
-0:13 'str' (structure)\r
+0:13 'str' (structure{y})\r
0:13 Constant:\r
0:13 0 (const int)\r
0:13 Pre-Decrement (int)\r
0:14 add second child into first child (float)\r
0:14 direct index (float)\r
0:14 y: direct index for structure (5-element array of float)\r
-0:14 'str' (structure)\r
+0:14 'str' (structure{y})\r
0:14 Constant:\r
0:14 0 (const int)\r
0:14 Constant:\r
0:15 Post-Decrement (float)\r
0:15 direct index (float)\r
0:15 y: direct index for structure (5-element array of float)\r
-0:15 'str' (structure)\r
+0:15 'str' (structure{y})\r
0:15 Constant:\r
0:15 0 (const int)\r
0:15 Constant:\r
0:16 add second child into first child (float)\r
0:16 indirect index (float)\r
0:16 y: direct index for structure (5-element array of float)\r
-0:16 'str' (structure)\r
+0:16 'str' (structure{y})\r
0:16 Constant:\r
0:16 0 (const int)\r
0:16 Post-Increment (int)\r
0:17 Pre-Decrement (float)\r
0:17 indirect index (float)\r
0:17 y: direct index for structure (5-element array of float)\r
-0:17 'str' (structure)\r
+0:17 'str' (structure{y})\r
0:17 Constant:\r
0:17 0 (const int)\r
0:17 Pre-Decrement (int)\r
0:19 'x' (float)\r
0:19 direct index (float)\r
0:19 y: direct index for structure (5-element array of float)\r
-0:19 'str' (structure)\r
+0:19 'str' (structure{y})\r
0:19 Constant:\r
0:19 0 (const int)\r
0:19 Constant:\r
0:178 Constant:\r
0:178 0.000000\r
0:193 Sequence\r
-0:193 move second child to first child (structure)\r
-0:193 'e' (structure)\r
+0:193 move second child to first child (structure{a,b})\r
+0:193 'e' (structure{a,b})\r
0:193 Constant:\r
0:193 1.200000\r
0:193 2 (const int)\r
0:? 'm' (3X2 matrix of float)\r
0:? 'highPrecisionMVP' (4X4 matrix of double)\r
0:? 'dm' (2X4 matrix of double)\r
-0:? 'lightVar' (structure)\r
+0:? 'lightVar' (structure{intensity,position})\r
0:? 'frequencies' (3-element array of float)\r
0:? 'lightPosition' (uniform 4-element array of 4-component vector of float)\r
-0:? 'lights' (2-element array of structure)\r
+0:? 'lights' (2-element array of structure{intensity,position})\r
0:? 'numLights' (const int)\r
0:? 2 (const int)\r
0:? 'normal' (smooth in 3-component vector of float)\r
0:? 0.700000\r
0:? 0.700000\r
0:? 0.200000\r
-0:? '__anon__0' (in block)\r
-0:? '__anon__1' (in block)\r
-0:? 'Materiala' (in block)\r
+0:? '__anon__0' (in block{Color1,Color2,TexCoordA,Atten})\r
+0:? '__anon__1' (in block{LightPos,LightColor})\r
+0:? 'Materiala' (in block{Color,TexCoord})\r
0:? 'gl_FragCoord' (gl_FragCoord 4-component vector of float)\r
0:? 'factor' (layout(location=3 ) out 4-component vector of float)\r
0:? 'colors' (layout(location=2 ) out 3-element array of 4-component vector of float)\r
0:? 'gl_FragDepth' (gl_FragDepth float)\r
-0:? '__anon__2' (in block)\r
+0:? '__anon__2' (in block{gl_FogFragCoord,gl_TexCoord,gl_Color,gl_SecondaryColor})\r
\r
0:170 'img2' (coherent uniform image2D)\r
0:? Sequence\r
0:178 Sequence\r
-0:178 move second child to first child (structure)\r
-0:178 'lightVar' (structure)\r
+0:178 move second child to first child (structure{intensity,position})\r
+0:178 'lightVar' (structure{intensity,position})\r
0:178 Constant:\r
0:178 3.000000\r
0:178 1.000000\r
0:194 Constant:\r
0:194 0.000000\r
0:? Linker Objects\r
-0:? 'Coords' (out block)\r
-0:? '__anon__0' (out block)\r
-0:? 'transforms' (layout(column_major shared ) uniform 4-element array of block)\r
+0:? 'Coords' (out block{Position,Texture})\r
+0:? '__anon__0' (out block{Color})\r
+0:? 'transforms' (layout(column_major shared ) uniform 4-element array of block{ModelViewMatrix,ModelViewProjectionMatrix,a,Deformation})\r
0:? 'normal' (layout(location=3 ) in 4-component vector of float)\r
0:? 'colors' (layout(location=6 ) in 3-element array of 4-component vector of float)\r
-0:? 's' (layout(location=3 ) structure)\r
+0:? 's' (layout(location=3 ) structure{a1,b,c})\r
0:? 'var1' (smooth out 4-component vector of float)\r
-0:? '__anon__1' (out block)\r
+0:? '__anon__1' (out block{var2,var3,var4})\r
0:? 'var5' (smooth out 4-component vector of float)\r
-0:? '__anon__2' (out block)\r
+0:? '__anon__2' (out block{var6})\r
0:? 'var7' (smooth out 4-component vector of float)\r
-0:? '__anon__3' (layout(row_major std140 ) uniform block)\r
-0:? '__anon__4' (layout(column_major shared ) uniform block)\r
+0:? '__anon__3' (layout(row_major std140 ) uniform block{M1,M2,N1})\r
+0:? '__anon__4' (layout(column_major shared ) uniform block{M13,m14,N12})\r
0:? 's17' (layout(binding=3 ) uniform sampler2D)\r
0:? 'a2' (layout(binding=2 ) uniform int)\r
0:? 'bar' (layout(binding=2 ) uniform int)\r
0:? 'b2' (layout(binding=2 ) uniform int)\r
0:? 'c2' (layout(binding=3 ) uniform int)\r
0:? 'd2' (layout(binding=2 ) uniform int)\r
-0:? '__anon__5' (out block)\r
+0:? '__anon__5' (out block{gl_Position,gl_PointSize,gl_ClipDistance,gl_ClipVertex,gl_FrontColor,gl_BackColor,gl_FrontSecondaryColor,gl_BackSecondaryColor,gl_TexCoord,gl_FogFragCoord})\r
0:? 'ColorInv' (smooth out 3-component vector of float)\r
0:? 'Color4' (invariant centroid smooth out 3-component vector of float)\r
0:? 'position' (smooth out 4-component vector of float)\r
0:? 'c' (in 4-component vector of float)\r
0:? 'd' (in 4-component vector of float)\r
0:? 'v' (smooth out 4-component vector of float)\r
-0:? '__anon__6' (layout(row_major shared ) coherent uniform block)\r
-0:? '__anon__7' (layout(row_major shared ) uniform block)\r
+0:? '__anon__6' (layout(row_major shared ) coherent uniform block{member1,member2})\r
+0:? '__anon__7' (layout(row_major shared ) uniform block{member1A,member2A})\r
0:? 'shv' (shared 4-component vector of float)\r
0:? 'img1' (uniform image2D)\r
0:? 'img2' (coherent uniform image2D)\r
0:33 Condition\r
0:33 Compare Greater Than (bool)\r
0:33 i: direct index for structure (int)\r
-0:33 s2_1: direct index for structure (structure)\r
-0:33 'foo3' (uniform structure)\r
+0:33 s2_1: direct index for structure (structure{i,f,s1_1})\r
+0:33 'foo3' (uniform structure{s2_1,i,f,s1_1})\r
0:33 Constant:\r
0:33 0 (const int)\r
0:33 Constant:\r
0:33 Constant:\r
0:33 0 (const int)\r
0:33 true case\r
-0:34 move second child to first child (structure)\r
-0:34 'locals2' (structure)\r
-0:34 s2_1: direct index for structure (structure)\r
-0:34 'foo3' (uniform structure)\r
+0:34 move second child to first child (structure{i,f,s1_1})\r
+0:34 'locals2' (structure{i,f,s1_1})\r
+0:34 s2_1: direct index for structure (structure{i,f,s1_1})\r
+0:34 'foo3' (uniform structure{s2_1,i,f,s1_1})\r
0:34 Constant:\r
0:34 0 (const int)\r
0:33 false case\r
-0:36 move second child to first child (structure)\r
-0:36 'locals2' (structure)\r
-0:36 'foo2' (uniform structure)\r
+0:36 move second child to first child (structure{i,f,s1_1})\r
+0:36 'locals2' (structure{i,f,s1_1})\r
+0:36 'foo2' (uniform structure{i,f,s1_1})\r
0:38 move second child to first child (4-component vector of float)\r
0:38 'gl_FragColor' (fragColor 4-component vector of float)\r
0:38 vector-scale (4-component vector of float)\r
0:38 f: direct index for structure (float)\r
-0:38 s1_1: direct index for structure (structure)\r
-0:38 'locals2' (structure)\r
+0:38 s1_1: direct index for structure (structure{i,f})\r
+0:38 'locals2' (structure{i,f,s1_1})\r
0:38 Constant:\r
0:38 2 (const int)\r
0:38 Constant:\r
0:? Linker Objects\r
0:? 'sampler' (uniform sampler2D)\r
0:? 'coord' (smooth in 2-component vector of float)\r
-0:? 'foo' (uniform structure)\r
-0:? 'foo2' (uniform structure)\r
-0:? 'foo3' (uniform structure)\r
+0:? 'foo' (uniform structure{i,f})\r
+0:? 'foo2' (uniform structure{i,f,s1_1})\r
+0:? 'foo3' (uniform structure{s2_1,i,f,s1_1})\r
\r
0:51 Condition\r
0:51 Compare Greater Than (bool)\r
0:51 i: direct index for structure (int)\r
-0:51 direct index (structure)\r
-0:51 s2_1: direct index for structure (12-element array of structure)\r
-0:51 'foo3' (uniform structure)\r
+0:51 direct index (structure{i,f,s1_1})\r
+0:51 s2_1: direct index for structure (12-element array of structure{i,f,s1_1})\r
+0:51 'foo3' (uniform structure{s2_1,i,f,s1_1})\r
0:51 Constant:\r
0:51 0 (const int)\r
0:51 Constant:\r
0:52 Sequence\r
0:52 move second child to first child (float)\r
0:52 f: direct index for structure (float)\r
-0:52 'locals2' (structure)\r
+0:52 'locals2' (structure{i,f,s1_1})\r
0:52 Constant:\r
0:52 1 (const int)\r
0:52 Constant:\r
0:52 1.000000\r
-0:53 move second child to first child (structure)\r
-0:53 s1_1: direct index for structure (structure)\r
-0:53 'locals2' (structure)\r
+0:53 move second child to first child (structure{i,f,s0_1})\r
+0:53 s1_1: direct index for structure (structure{i,f,s0_1})\r
+0:53 'locals2' (structure{i,f,s1_1})\r
0:53 Constant:\r
0:53 2 (const int)\r
0:53 Constant:\r
0:54 0.000000\r
0:54 0.000000\r
0:54 0.000000\r
-0:55 move second child to first child (structure)\r
-0:55 direct index (structure)\r
-0:55 'locals1Array' (10-element array of structure)\r
+0:55 move second child to first child (structure{i,f,s0_1})\r
+0:55 direct index (structure{i,f,s0_1})\r
+0:55 'locals1Array' (10-element array of structure{i,f,s0_1})\r
0:55 Constant:\r
0:55 6 (const int)\r
-0:55 'foo1' (uniform structure)\r
-0:56 move second child to first child (structure)\r
-0:56 'locals0' (structure)\r
+0:55 'foo1' (uniform structure{i,f,s0_1})\r
+0:56 move second child to first child (structure{i})\r
+0:56 'locals0' (structure{i})\r
0:56 Constant:\r
0:56 0 (const int)\r
-0:57 move second child to first child (structure)\r
-0:57 'locals00' (structure)\r
+0:57 move second child to first child (structure{s0_0})\r
+0:57 'locals00' (structure{s0_0})\r
0:57 Constant:\r
0:57 0 (const int)\r
0:51 false case\r
0:59 Sequence\r
0:59 move second child to first child (float)\r
0:59 f: direct index for structure (float)\r
-0:59 'locals2' (structure)\r
+0:59 'locals2' (structure{i,f,s1_1})\r
0:59 Constant:\r
0:59 1 (const int)\r
0:59 direct index (float)\r
0:59 'coord' (smooth in 2-component vector of float)\r
0:59 Constant:\r
0:59 0 (const int)\r
-0:60 move second child to first child (structure)\r
-0:60 s1_1: direct index for structure (structure)\r
-0:60 'locals2' (structure)\r
+0:60 move second child to first child (structure{i,f,s0_1})\r
+0:60 s1_1: direct index for structure (structure{i,f,s0_1})\r
+0:60 'locals2' (structure{i,f,s1_1})\r
0:60 Constant:\r
0:60 2 (const int)\r
-0:60 Construct structure (structure)\r
+0:60 Construct structure (structure{i,f,s0_1})\r
0:60 Constant:\r
0:60 1 (const int)\r
0:60 direct index (float)\r
0:60 'coord' (smooth in 2-component vector of float)\r
0:60 Constant:\r
0:60 1 (const int)\r
-0:60 'foo0' (uniform structure)\r
+0:60 'foo0' (uniform structure{i})\r
0:61 move second child to first child (6-element array of float)\r
0:61 'fArray' (6-element array of float)\r
0:61 Constant:\r
0:61 3.000000\r
0:61 4.000000\r
0:61 5.000000\r
-0:62 move second child to first child (structure)\r
-0:62 direct index (structure)\r
-0:62 'locals1Array' (10-element array of structure)\r
+0:62 move second child to first child (structure{i,f,s0_1})\r
+0:62 direct index (structure{i,f,s0_1})\r
+0:62 'locals1Array' (10-element array of structure{i,f,s0_1})\r
0:62 Constant:\r
0:62 6 (const int)\r
-0:62 s1_1: direct index for structure (structure)\r
-0:62 'locals2' (structure)\r
+0:62 s1_1: direct index for structure (structure{i,f,s0_1})\r
+0:62 'locals2' (structure{i,f,s1_1})\r
0:62 Constant:\r
0:62 2 (const int)\r
-0:63 move second child to first child (structure)\r
-0:63 'locals0' (structure)\r
-0:63 s0_1: direct index for structure (structure)\r
-0:63 'foo1' (uniform structure)\r
+0:63 move second child to first child (structure{i})\r
+0:63 'locals0' (structure{i})\r
+0:63 s0_1: direct index for structure (structure{i})\r
+0:63 'foo1' (uniform structure{i,f,s0_1})\r
0:63 Constant:\r
0:63 2 (const int)\r
-0:64 move second child to first child (structure)\r
-0:64 'locals00' (structure)\r
-0:64 'foo00' (uniform structure)\r
+0:64 move second child to first child (structure{s0_0})\r
+0:64 'locals00' (structure{s0_0})\r
+0:64 'foo00' (uniform structure{s0_0})\r
0:67 Test condition and select (void)\r
0:67 Condition\r
0:67 Compare Greater Than (bool)\r
0:67 i: direct index for structure (int)\r
-0:67 'locals0' (structure)\r
+0:67 'locals0' (structure{i})\r
0:67 Constant:\r
0:67 0 (const int)\r
0:67 Constant:\r
0:67 5 (const int)\r
0:67 true case\r
-0:68 move second child to first child (structure)\r
-0:68 'locals0' (structure)\r
-0:68 s0_0: direct index for structure (structure)\r
-0:68 'locals00' (structure)\r
+0:68 move second child to first child (structure{i})\r
+0:68 'locals0' (structure{i})\r
+0:68 s0_0: direct index for structure (structure{i})\r
+0:68 'locals00' (structure{s0_0})\r
0:68 Constant:\r
0:68 0 (const int)\r
0:70 move second child to first child (4-component vector of float)\r
0:70 add (float)\r
0:70 Convert int to float (float)\r
0:70 i: direct index for structure (int)\r
-0:70 'locals0' (structure)\r
+0:70 'locals0' (structure{i})\r
0:70 Constant:\r
0:70 0 (const int)\r
0:70 f: direct index for structure (float)\r
-0:70 direct index (structure)\r
-0:70 'locals1Array' (10-element array of structure)\r
+0:70 direct index (structure{i,f,s0_1})\r
+0:70 'locals1Array' (10-element array of structure{i,f,s0_1})\r
0:70 Constant:\r
0:70 6 (const int)\r
0:70 Constant:\r
0:70 Constant:\r
0:70 3 (const int)\r
0:70 f: direct index for structure (float)\r
-0:70 s1_1: direct index for structure (structure)\r
-0:70 'locals2' (structure)\r
+0:70 s1_1: direct index for structure (structure{i,f,s0_1})\r
+0:70 'locals2' (structure{i,f,s1_1})\r
0:70 Constant:\r
0:70 2 (const int)\r
0:70 Constant:\r
0:? Linker Objects\r
0:? 'sampler' (uniform sampler2D)\r
0:? 'coord' (smooth in 2-component vector of float)\r
-0:? 'foo0' (uniform structure)\r
-0:? 'foo1' (uniform structure)\r
-0:? 'foo2' (uniform structure)\r
-0:? 'foo3' (uniform structure)\r
-0:? 'foo00' (uniform structure)\r
+0:? 'foo0' (uniform structure{i})\r
+0:? 'foo1' (uniform structure{i,f,s0_1})\r
+0:? 'foo2' (uniform structure{i,f,s1_1})\r
+0:? 'foo3' (uniform structure{s2_1,i,f,s1_1})\r
+0:? 'foo00' (uniform structure{s0_0})\r
\r
0:24 Compare Greater Than (bool)\r
0:24 direct index (int)\r
0:24 i: direct index for structure (5-element array of int)\r
-0:24 direct index (uniform structure)\r
-0:24 'foo2' (uniform 5-element array of structure)\r
+0:24 direct index (uniform structure{i,f,s1_1})\r
+0:24 'foo2' (uniform 5-element array of structure{i,f,s1_1})\r
0:24 Constant:\r
0:24 3 (const int)\r
0:24 Constant:\r
0:25 direct index (float)\r
0:25 direct index (4-component vector of float)\r
0:25 color: direct index for structure (5-element array of 4-component vector of float)\r
-0:25 direct index (structure)\r
-0:25 s1_1: direct index for structure (7-element array of structure)\r
-0:25 direct index (uniform structure)\r
-0:25 'foo2' (uniform 5-element array of structure)\r
+0:25 direct index (structure{i,f,color})\r
+0:25 s1_1: direct index for structure (7-element array of structure{i,f,color})\r
+0:25 direct index (uniform structure{i,f,s1_1})\r
+0:25 'foo2' (uniform 5-element array of structure{i,f,s1_1})\r
0:25 Constant:\r
0:25 3 (const int)\r
0:25 Constant:\r
0:27 'scale' (float)\r
0:27 direct index (float)\r
0:27 f: direct index for structure (4-element array of float)\r
-0:27 direct index (structure)\r
-0:27 s1_1: direct index for structure (7-element array of structure)\r
-0:27 direct index (uniform structure)\r
-0:27 'foo2' (uniform 5-element array of structure)\r
+0:27 direct index (structure{i,f,color})\r
+0:27 s1_1: direct index for structure (7-element array of structure{i,f,color})\r
+0:27 direct index (uniform structure{i,f,s1_1})\r
+0:27 'foo2' (uniform 5-element array of structure{i,f,s1_1})\r
0:27 Constant:\r
0:27 3 (const int)\r
0:27 Constant:\r
0:? Linker Objects\r
0:? 'sampler' (uniform sampler2D)\r
0:? 'coord' (smooth in 2-component vector of float)\r
-0:? 'foo' (uniform structure)\r
-0:? 'foo2' (uniform 5-element array of structure)\r
+0:? 'foo' (uniform structure{i,f,color})\r
+0:? 'foo2' (uniform 5-element array of structure{i,f,s1_1})\r
\r
0:34 Condition\r
0:34 Compare Greater Than (bool)\r
0:34 i: direct index for structure (int)\r
-0:34 direct index (structure)\r
-0:34 s2_1: direct index for structure (3-element array of structure)\r
-0:34 'foo3' (uniform structure)\r
+0:34 direct index (structure{i,f,s1_1})\r
+0:34 s2_1: direct index for structure (3-element array of structure{i,f,s1_1})\r
+0:34 'foo3' (uniform structure{s2_1,i,f,s1_1})\r
0:34 Constant:\r
0:34 0 (const int)\r
0:34 Constant:\r
0:35 move second child to first child (float)\r
0:35 'scale' (float)\r
0:35 f: direct index for structure (float)\r
-0:35 s1_1: direct index for structure (structure)\r
-0:35 indirect index (uniform structure)\r
-0:35 'foo2' (uniform 5-element array of structure)\r
+0:35 s1_1: direct index for structure (structure{i,f})\r
+0:35 indirect index (uniform structure{i,f,s1_1})\r
+0:35 'foo2' (uniform 5-element array of structure{i,f,s1_1})\r
0:35 add (int)\r
0:35 add (int)\r
0:35 i: direct index for structure (int)\r
-0:35 indirect index (structure)\r
-0:35 s2_1: direct index for structure (3-element array of structure)\r
-0:35 'foo3' (uniform structure)\r
+0:35 indirect index (structure{i,f,s1_1})\r
+0:35 s2_1: direct index for structure (3-element array of structure{i,f,s1_1})\r
+0:35 'foo3' (uniform structure{s2_1,i,f,s1_1})\r
0:35 Constant:\r
0:35 0 (const int)\r
0:35 i: direct index for structure (int)\r
-0:35 'foo' (uniform structure)\r
+0:35 'foo' (uniform structure{i,f})\r
0:35 Constant:\r
0:35 0 (const int)\r
0:35 Constant:\r
0:37 move second child to first child (float)\r
0:37 'scale' (float)\r
0:37 f: direct index for structure (float)\r
-0:37 s1_1: direct index for structure (structure)\r
-0:37 direct index (structure)\r
-0:37 s2_1: direct index for structure (3-element array of structure)\r
-0:37 'foo3' (uniform structure)\r
+0:37 s1_1: direct index for structure (structure{i,f})\r
+0:37 direct index (structure{i,f,s1_1})\r
+0:37 s2_1: direct index for structure (3-element array of structure{i,f,s1_1})\r
+0:37 'foo3' (uniform structure{s2_1,i,f,s1_1})\r
0:37 Constant:\r
0:37 0 (const int)\r
0:37 Constant:\r
0:46 indirect index (2-component vector of float)\r
0:46 'constructed' (3-element array of 2-component vector of float)\r
0:46 i: direct index for structure (int)\r
-0:46 'foo' (uniform structure)\r
+0:46 'foo' (uniform structure{i,f})\r
0:46 Constant:\r
0:46 0 (const int)\r
0:46 indirect index (2-component vector of float)\r
0:46 'constructed' (3-element array of 2-component vector of float)\r
0:46 i: direct index for structure (int)\r
-0:46 'foo' (uniform structure)\r
+0:46 'foo' (uniform structure{i,f})\r
0:46 Constant:\r
0:46 0 (const int)\r
0:? Linker Objects\r
0:? 'sampler' (uniform sampler2D)\r
0:? 'coord' (smooth in 2-component vector of float)\r
-0:? 'foo' (uniform structure)\r
-0:? 'foo2' (uniform 5-element array of structure)\r
-0:? 'foo3' (uniform structure)\r
+0:? 'foo' (uniform structure{i,f})\r
+0:? 'foo2' (uniform 5-element array of structure{i,f,s1_1})\r
+0:? 'foo3' (uniform structure{s2_1,i,f,s1_1})\r
0:? 'Count' (uniform int)\r
\r
0:42 Sequence\r
0:42 move second child to first child (4-component vector of float)\r
0:42 gl_Position: direct index for structure (gl_Position 4-component vector of float)\r
-0:42 '__anon__1' (out block)\r
+0:42 '__anon__1' (out block{gl_Position,gl_PointSize,gl_ClipDistance,gl_ClipVertex,gl_FrontColor,gl_BackColor,gl_FrontSecondaryColor,gl_BackSecondaryColor,gl_TexCoord,gl_FogFragCoord})\r
0:42 Constant:\r
0:42 0 (const uint)\r
0:42 Construct vec4 (4-component vector of float)\r
0:44 Sequence\r
0:44 move second child to first child (4-component vector of float)\r
0:44 gl_Position: direct index for structure (gl_Position 4-component vector of float)\r
-0:44 '__anon__1' (out block)\r
+0:44 '__anon__1' (out block{gl_Position,gl_PointSize,gl_ClipDistance,gl_ClipVertex,gl_FrontColor,gl_BackColor,gl_FrontSecondaryColor,gl_BackSecondaryColor,gl_TexCoord,gl_FogFragCoord})\r
0:44 Constant:\r
0:44 0 (const uint)\r
0:44 Construct vec4 (4-component vector of float)\r
- redeclaration of input/output blocks
- ...
- Add 64-bit floating-point attributes for vertex shader inputs.
- - Support viewport arrays so where the geometry shader selects which viewport array will transform its output.
+ + Support viewport arrays so where the geometry shader selects which viewport array will transform its output.
GLSL 4.2
+ Move these previously deprecated features to be only in the compatibility profile:
+ The keyword attribute for vertex shader inputs. (Use in instead.)
- make indexes outside the range [0,1] a compile-time error.
- Add textureQueryLevels() built-ins to query the number of mipmap levels, as per the
GL_ARB_texture_query_levels extension.
- - Make gl_Layer and gl_ViewportIndex also be inputs to the fragment shader, as per the
+ + Make gl_Layer and gl_ViewportIndex also be inputs to the fragment shader, as per the
GL_ARB_fragment_layer_viewport extension.
- Add more examples and rules to be more specific about the required behavior of the precise
qualifier.
TString s(buf);
s.append(getCompleteTypeString());
+ // Add struct/block members
+ if (structure) {
+ s.append("{");
+ for (size_t i = 0; i < structure->size(); ++i) {
+ s.append((*structure)[i].type->getFieldName());
+ if (i < structure->size()-1)
+ s.append(",");
+ }
+ s.append("}");
+ }
+
return s;
}
);
if (IncludeLegacy(version, profile)) {
- if (version < 410)
+ if (version < 150)
stageBuiltins[EShLangFragment].append(
"in float gl_FogFragCoord;"
"in vec4 gl_TexCoord[];"
//
// Returns a redeclared and type-modified variable if a redeclarated occurred.
//
-TSymbol* TParseContext::redeclareBuiltin(TSourceLoc loc, const TString& identifier, bool& newDeclaration)
+TSymbol* TParseContext::redeclareBuiltinVariable(TSourceLoc loc, const TString& identifier, bool& newDeclaration)
{
if (profile == EEsProfile || identifier.compare(0, 3, "gl_") != 0 || symbolTable.atBuiltInLevel())
return 0;
// Potentially redeclaring a built-in variable...
if ((identifier == "gl_FragDepth" && version >= 420) ||
- (identifier == "gl_PerVertex" && version >= 410) ||
- (identifier == "gl_PerFragment" && version >= 410) ||
(identifier == "gl_FragCoord" && version >= 150) ||
(identifier == "gl_ClipDistance" && version >= 130) ||
(identifier == "gl_FrontColor" && version >= 130) ||
return 0;
}
+bool TParseContext::redeclareBuiltinBlock(TSourceLoc loc, TTypeList& typeList, const TString& blockName, const TString* instanceName, TArraySizes* arraySizes)
+{
+ // just a quick out, not everything that must be checked:
+ if (symbolTable.atBuiltInLevel() || profile == EEsProfile || blockName.compare(0, 3, "gl_") != 0)
+ return false;
+
+ if (instanceName && instanceName->compare(0, 3, "gl_") != 0) {
+ error(loc, "cannot redeclare a built-in block with a user name", instanceName->c_str(), "");
+ return false;
+ }
+
+ profileRequires(loc, ECoreProfile | ECompatibilityProfile, 410, GL_ARB_separate_shader_objects, "built-in block redeclaration");
+
+ // Potentially redeclaring a built-in block...
+
+ if (blockName != "gl_PerVertex" && blockName != "gl_PerFragment")
+ return false;
+
+
+ // Blocks with instance names are easy to find, lookup the instance name,
+ // Anonymous blocks need to be found via a member. copyUp()?? will work
+ // just fine for either find.
+
+ bool builtIn;
+ TSymbol* block;
+ if (instanceName)
+ block = symbolTable.find(*instanceName, &builtIn);
+ else
+ block = symbolTable.find(typeList.front().type->getFieldName(), &builtIn);
+
+ // If the block was not found, this must be a version/profile/stage
+ // that doesn't have it.
+ if (! block)
+ return false;
+
+ // Built-in blocks cannot be redeclared more than once, which if happened,
+ // we'd be finding the already redeclared one here, rather than the built in.
+ if (! builtIn) {
+ error(loc, "can only redeclare a built-in block once", blockName.c_str(), "");
+ return false;
+ }
+
+ // Copy the to make a writable version, to insert into the block table after editing
+ block = symbolTable.copyUpDeferredInsert(block);
+
+ if (block->getType().getBasicType() != EbtBlock) {
+ error(loc, "cannot redeclare a non block as a block", blockName.c_str(), "");
+ return false;
+ }
+
+ // TODO: semantics: block redeclaration: instance array size matching?
+
+ // Edit and error check the container against the redeclaration
+ // - remove unused members
+ // - ensure remaining qualifiers match
+ TType& type = block->getWritableType();
+ TTypeList::iterator member = type.getStruct()->begin();
+ while (member != type.getStruct()->end()) {
+ // look for match
+ bool found = false;
+ for (TTypeList::iterator newMember = typeList.begin(); newMember != typeList.end(); ++newMember) {
+ if (member->type->getFieldName() == newMember->type->getFieldName()) {
+ found = true;
+ break;
+ }
+ }
+
+ // remove non-redeclared members
+ if (found)
+ ++member;
+ else
+ member = type.getStruct()->erase(member);
+
+ // TODO: semantics: block redeclaration: member type/qualifier matching
+ }
+
+ symbolTable.insert(*block);
+
+ // Save it in the AST for linker use.
+ intermediate.addSymbolLinkageNode(linkage, *block);
+
+ return true;
+}
+
void TParseContext::paramCheck(TSourceLoc loc, const TStorageQualifier& qualifier, TType* type)
{
switch (qualifier) {
if (! type.getQualifier().hasStream() && language == EShLangGeometry && type.getQualifier().storage == EvqVaryingOut)
type.getQualifier().layoutStream = globalOutputDefaults.layoutStream;
- if (publicType.geometry != ElgNone)
- error(loc, "geometry primitive qualifier cannot be applied to a variable declaration", TQualifier::getGeometryString(publicType.geometry), "");
-
// Check for redeclaration of built-ins and/or attempting to declare a reserved name
bool newDeclaration = false; // true if a new entry gets added to the symbol table
- TSymbol* symbol = redeclareBuiltin(loc, identifier, newDeclaration);
+ TSymbol* symbol = redeclareBuiltinVariable(loc, identifier, newDeclaration);
if (! symbol)
reservedErrorCheck(loc, identifier);
//
// Do everything needed to add an interface block.
//
-void TParseContext::addBlock(TSourceLoc loc, TTypeList& typeList, const TString* instanceName, TArraySizes* arraySizes)
+void TParseContext::declareBlock(TSourceLoc loc, TTypeList& typeList, const TString* instanceName, TArraySizes* arraySizes)
{
- // First, error checks
+ // This might be a redeclaration of a built-in block, find out, and get
+ // a modifiable copy if so.
+ if (redeclareBuiltinBlock(loc, typeList, *blockName, instanceName, arraySizes))
+ return;
+ // Basic error checks
if (reservedErrorCheck(loc, *blockName))
return;
void precisionQualifierCheck(TSourceLoc, TPublicType&);
void parameterSamplerCheck(TSourceLoc, TStorageQualifier qualifier, const TType& type);
bool containsSampler(const TType& type);
- TSymbol* redeclareBuiltin(TSourceLoc, const TString&, bool& newDeclaration);
+ TSymbol* redeclareBuiltinVariable(TSourceLoc, const TString&, bool& newDeclaration);
+ bool redeclareBuiltinBlock(TSourceLoc, TTypeList& typeList, const TString& blockName, const TString* instanceName, TArraySizes* arraySizes);
void paramCheck(TSourceLoc, const TStorageQualifier&, TType* type);
void nestedBlockCheck(TSourceLoc);
void nestedStructCheck(TSourceLoc);
TIntermTyped* addConstructor(TSourceLoc, TIntermNode*, const TType&, TOperator);
TIntermTyped* constructStruct(TIntermNode*, const TType&, int, TSourceLoc);
TIntermTyped* constructBuiltIn(const TType&, TOperator, TIntermNode*, TSourceLoc, bool subset);
- void addBlock(TSourceLoc, TTypeList& typeList, const TString* instanceName = 0, TArraySizes* arraySizes = 0);
+ void declareBlock(TSourceLoc, TTypeList& typeList, const TString* instanceName = 0, TArraySizes* arraySizes = 0);
void addQualifierToExisting(TSourceLoc, TQualifier, const TString& identifier);
void addQualifierToExisting(TSourceLoc, TQualifier, TIdentifierList&);
void updateStandaloneQualifierDefaults(TSourceLoc, const TPublicType&);
// to the current level, so it can be modified without impacting other users
// of the shared table.
//
- TSymbol* copyUp(TSymbol* shared)
+ TSymbol* copyUpDeferredInsert(TSymbol* shared)
{
- TSymbol* copy;
if (shared->getAsVariable()) {
- copy = shared->clone();
+ TSymbol* copy = shared->clone();
copy->setUniqueId(shared->getUniqueId());
- table[currentLevel()]->insert(*copy);
return copy;
} else {
const TAnonMember* anon = shared->getAsAnonMember();
TVariable* container = anon->getAnonContainer().clone();
container->changeName(NewPoolTString(""));
container->setUniqueId(anon->getAnonContainer().getUniqueId());
- table[currentLevel()]->insert(*container);
+ return container;
+ }
+ }
+
+ TSymbol* copyUp(TSymbol* shared)
+ {
+ TSymbol* copy = copyUpDeferredInsert(shared);
+ table[currentLevel()]->insert(*copy);
+ if (shared->getAsVariable())
+ return copy;
+ else {
+ // get copy of an anonymous member's container
+ table[currentLevel()]->insert(*copy);
+ // return the copy of the anonymous member
return table[currentLevel()]->find(shared->getName());
}
}
$$ = 0;\r
}\r
| block_structure SEMICOLON {\r
- parseContext.addBlock($1.loc, *$1.typeList);\r
+ parseContext.declareBlock($1.loc, *$1.typeList);\r
$$ = 0;\r
}\r
| block_structure IDENTIFIER SEMICOLON {\r
- parseContext.addBlock($1.loc, *$1.typeList, $2.string);\r
+ parseContext.declareBlock($1.loc, *$1.typeList, $2.string);\r
$$ = 0;\r
}\r
| block_structure IDENTIFIER array_specifier SEMICOLON {\r
- parseContext.addBlock($1.loc, *$1.typeList, $2.string, $3.arraySizes);\r
+ parseContext.declareBlock($1.loc, *$1.typeList, $2.string, $3.arraySizes);\r
$$ = 0;\r
}\r
| type_qualifier SEMICOLON {\r