Also, generally allow ES variable indexing of in/out blocks.
int pid = gl_PrimitiveID;\r
int iid = gl_InvocationID;\r
\r
- gl_out[1].gl_Position = p;\r
- gl_out[1].gl_PointSize = ps;\r
- gl_out[1].gl_ClipDistance[1] = cd;\r
+ gl_out[gl_InvocationID].gl_Position = p;\r
+ gl_out[gl_InvocationID].gl_PointSize = ps;\r
+ gl_out[gl_InvocationID].gl_ClipDistance[1] = cd;\r
\r
gl_TessLevelOuter[3] = 3.2;\r
gl_TessLevelInner[1] = 1.3;\r
{\r
vec4 v = inbinst.v + vAnon;\r
v *= arrayedInst[2].f;\r
- v *= arrayedInst[i].f; // ERROR, not constant\r
+ v *= arrayedInst[i].f;\r
}\r
\r
in vec4 gl_FragCoord;\r
#extension GL_OES_tessellation_shader : enable\r
\r
layout(vertices = 4) out;\r
-int outa[gl_out.length()];\r
+out int outa[gl_out.length()];\r
\r
layout(quads) in; // ERROR\r
layout(ccw) out; // ERROR\r
int pid = gl_PrimitiveID;\r
int iid = gl_InvocationID;\r
\r
- gl_out[1].gl_Position = p;\r
- gl_out[1].gl_PointSize = ps; // ERROR, need point_size extension\r
- gl_out[1].gl_ClipDistance[1] = cd; // ERROR, not in ES\r
+ gl_out[gl_InvocationID].gl_Position = p;\r
+ gl_out[gl_InvocationID].gl_PointSize = ps; // ERROR, need point_size extension\r
+ gl_out[gl_InvocationID].gl_ClipDistance[1] = cd; // ERROR, not in ES\r
\r
gl_TessLevelOuter[3] = 3.2;\r
gl_TessLevelInner[1] = 1.3;\r
void pointSize2()\r
{\r
float ps = gl_in[1].gl_PointSize;\r
- gl_out[1].gl_PointSize = ps;\r
+ gl_out[gl_InvocationID].gl_PointSize = ps;\r
}\r
\r
#extension GL_OES_gpu_shader5 : enable\r
gl_BoundingBoxOES[1] = vec4(1.0);\r
gl_BoundingBoxOES[2] = vec4(2.0); // ERROR, overflow\r
}\r
+\r
+out patch badpatchBName { // ERROR, array size required\r
+ float f;\r
+} badpatchIName[];\r
+\r
+out patch patchBName {\r
+ float f;\r
+} patchIName[4];\r
+\r
+void outputtingOutparam(out int a)\r
+{\r
+ a = 2;\r
+}\r
+\r
+void outputting()\r
+{\r
+ outa[gl_InvocationID] = 2;\r
+ outa[1] = 2; // ERROR, not gl_InvocationID\r
+ gl_out[0].gl_Position = vec4(1.0); // ERROR, not gl_InvocationID\r
+ outa[1];\r
+ gl_out[0];\r
+ outputtingOutparam(outa[0]); // ERROR, not gl_InvocationID\r
+ outputtingOutparam(outa[gl_InvocationID]);\r
+ patchIName[1].f = 3.14;\r
+ outa[(gl_InvocationID)] = 2;\r
+}\r
int pid = gl_PrimitiveID;\r
int iid = gl_InvocationID;\r
\r
- gl_out[1].gl_Position = p;\r
- gl_out[1].gl_PointSize = ps;\r
- gl_out[1].gl_ClipDistance[1] = cd;\r
+ gl_out[gl_InvocationID].gl_Position = p;\r
+ gl_out[gl_InvocationID].gl_PointSize = ps;\r
+ gl_out[gl_InvocationID].gl_ClipDistance[1] = cd;\r
\r
gl_TessLevelOuter[3] = 3.2;\r
gl_TessLevelInner[1] = 1.3;\r
int pid = gl_PrimitiveID;\r
int iid = gl_InvocationID;\r
\r
- gl_out[1].gl_Position = p;\r
- gl_out[1].gl_PointSize = ps; // ERROR\r
+ gl_out[gl_InvocationID].gl_Position = p;\r
+ gl_out[gl_InvocationID].gl_PointSize = ps; // ERROR\r
}\r
\r
out float outf; // ERROR, no array\r
\r
out gl_PerVertex {\r
float gl_CullDistance[3];\r
-} gl_out[];\r
+} gl_out[4];\r
\r
void main()\r
{\r
- gl_out[0].gl_CullDistance[2] = gl_in[1].gl_CullDistance[2];\r
+ gl_out[gl_InvocationID].gl_CullDistance[2] = gl_in[1].gl_CullDistance[2];\r
}\r
0:26 'gl_InvocationID' (in int InvocationID)\r
0:28 move second child to first child (temp 4-component vector of float)\r
0:28 gl_Position: direct index for structure (out 4-component vector of float Position)\r
-0:28 direct index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out implicitly-sized array of float ClipDistance gl_ClipDistance})\r
+0:28 indirect index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out implicitly-sized array of float ClipDistance gl_ClipDistance})\r
0:28 'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out implicitly-sized array of float ClipDistance gl_ClipDistance})\r
-0:28 Constant:\r
-0:28 1 (const int)\r
+0:28 'gl_InvocationID' (in int InvocationID)\r
0:28 Constant:\r
0:28 0 (const int)\r
0:28 'p' (temp 4-component vector of float)\r
0:29 move second child to first child (temp float)\r
0:29 gl_PointSize: direct index for structure (out float PointSize)\r
-0:29 direct index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out implicitly-sized array of float ClipDistance gl_ClipDistance})\r
+0:29 indirect index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out implicitly-sized array of float ClipDistance gl_ClipDistance})\r
0:29 'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out implicitly-sized array of float ClipDistance gl_ClipDistance})\r
-0:29 Constant:\r
-0:29 1 (const int)\r
+0:29 'gl_InvocationID' (in int InvocationID)\r
0:29 Constant:\r
0:29 1 (const int)\r
0:29 'ps' (temp float)\r
0:30 move second child to first child (temp float)\r
0:30 direct index (temp float ClipDistance)\r
0:30 gl_ClipDistance: direct index for structure (out implicitly-sized array of float ClipDistance)\r
-0:30 direct index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out implicitly-sized array of float ClipDistance gl_ClipDistance})\r
+0:30 indirect index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out implicitly-sized array of float ClipDistance gl_ClipDistance})\r
0:30 'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out implicitly-sized array of float ClipDistance gl_ClipDistance})\r
-0:30 Constant:\r
-0:30 1 (const int)\r
+0:30 'gl_InvocationID' (in int InvocationID)\r
0:30 Constant:\r
0:30 2 (const int)\r
0:30 Constant:\r
0:29 'gl_InvocationID' (in int InvocationID)\r
0:31 move second child to first child (temp 4-component vector of float)\r
0:31 gl_Position: direct index for structure (out 4-component vector of float Position)\r
-0:31 direct index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out implicitly-sized array of float ClipDistance gl_ClipDistance})\r
+0:31 indirect index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out implicitly-sized array of float ClipDistance gl_ClipDistance})\r
0:31 'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out implicitly-sized array of float ClipDistance gl_ClipDistance})\r
-0:31 Constant:\r
-0:31 1 (const int)\r
+0:31 'gl_InvocationID' (in int InvocationID)\r
0:31 Constant:\r
0:31 0 (const int)\r
0:31 'p' (temp 4-component vector of float)\r
0:32 move second child to first child (temp float)\r
0:32 gl_PointSize: direct index for structure (out float PointSize)\r
-0:32 direct index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out implicitly-sized array of float ClipDistance gl_ClipDistance})\r
+0:32 indirect index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out implicitly-sized array of float ClipDistance gl_ClipDistance})\r
0:32 'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out implicitly-sized array of float ClipDistance gl_ClipDistance})\r
-0:32 Constant:\r
-0:32 1 (const int)\r
+0:32 'gl_InvocationID' (in int InvocationID)\r
0:32 Constant:\r
0:32 1 (const int)\r
0:32 'ps' (temp float)\r
0:33 move second child to first child (temp float)\r
0:33 direct index (temp float ClipDistance)\r
0:33 gl_ClipDistance: direct index for structure (out implicitly-sized array of float ClipDistance)\r
-0:33 direct index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out implicitly-sized array of float ClipDistance gl_ClipDistance})\r
+0:33 indirect index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out implicitly-sized array of float ClipDistance gl_ClipDistance})\r
0:33 'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out implicitly-sized array of float ClipDistance gl_ClipDistance})\r
-0:33 Constant:\r
-0:33 1 (const int)\r
+0:33 'gl_InvocationID' (in int InvocationID)\r
0:33 Constant:\r
0:33 2 (const int)\r
0:33 Constant:\r
0:23 'gl_InvocationID' (in int InvocationID)\r
0:25 move second child to first child (temp 4-component vector of float)\r
0:25 gl_Position: direct index for structure (out 4-component vector of float Position)\r
-0:25 direct index (temp block{out 4-component vector of float Position gl_Position})\r
+0:25 indirect index (temp block{out 4-component vector of float Position gl_Position})\r
0:25 'gl_out' (out 3-element array of block{out 4-component vector of float Position gl_Position})\r
-0:25 Constant:\r
-0:25 1 (const int)\r
+0:25 'gl_InvocationID' (in int InvocationID)\r
0:25 Constant:\r
0:25 0 (const int)\r
0:25 'p' (temp 4-component vector of float)\r
-0:26 direct index (temp block{out 4-component vector of float Position gl_Position})\r
+0:26 indirect index (temp block{out 4-component vector of float Position gl_Position})\r
0:26 'gl_out' (out 3-element array of block{out 4-component vector of float Position gl_Position})\r
-0:26 Constant:\r
-0:26 1 (const int)\r
+0:26 'gl_InvocationID' (in int InvocationID)\r
0:34 Function Definition: foo( (global void)\r
0:34 Function Parameters: \r
0:36 Sequence\r
0:26 'gl_InvocationID' (in int InvocationID)\r
0:28 move second child to first child (temp 4-component vector of float)\r
0:28 gl_Position: direct index for structure (out 4-component vector of float Position)\r
-0:28 direct index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})\r
+0:28 indirect index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})\r
0:28 'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})\r
-0:28 Constant:\r
-0:28 1 (const int)\r
+0:28 'gl_InvocationID' (in int InvocationID)\r
0:28 Constant:\r
0:28 0 (const int)\r
0:28 'p' (temp 4-component vector of float)\r
0:29 move second child to first child (temp float)\r
0:29 gl_PointSize: direct index for structure (out float PointSize)\r
-0:29 direct index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})\r
+0:29 indirect index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})\r
0:29 'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})\r
-0:29 Constant:\r
-0:29 1 (const int)\r
+0:29 'gl_InvocationID' (in int InvocationID)\r
0:29 Constant:\r
0:29 1 (const int)\r
0:29 'ps' (temp float)\r
0:30 move second child to first child (temp float)\r
0:30 direct index (temp float ClipDistance)\r
0:30 gl_ClipDistance: direct index for structure (out 1-element array of float ClipDistance)\r
-0:30 direct index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})\r
+0:30 indirect index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})\r
0:30 'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})\r
-0:30 Constant:\r
-0:30 1 (const int)\r
+0:30 'gl_InvocationID' (in int InvocationID)\r
0:30 Constant:\r
0:30 2 (const int)\r
0:30 Constant:\r
0:29 'gl_InvocationID' (in int InvocationID)\r
0:31 move second child to first child (temp 4-component vector of float)\r
0:31 gl_Position: direct index for structure (out 4-component vector of float Position)\r
-0:31 direct index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})\r
+0:31 indirect index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})\r
0:31 'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})\r
-0:31 Constant:\r
-0:31 1 (const int)\r
+0:31 'gl_InvocationID' (in int InvocationID)\r
0:31 Constant:\r
0:31 0 (const int)\r
0:31 'p' (temp 4-component vector of float)\r
0:32 move second child to first child (temp float)\r
0:32 gl_PointSize: direct index for structure (out float PointSize)\r
-0:32 direct index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})\r
+0:32 indirect index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})\r
0:32 'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})\r
-0:32 Constant:\r
-0:32 1 (const int)\r
+0:32 'gl_InvocationID' (in int InvocationID)\r
0:32 Constant:\r
0:32 1 (const int)\r
0:32 'ps' (temp float)\r
0:33 move second child to first child (temp float)\r
0:33 direct index (temp float ClipDistance)\r
0:33 gl_ClipDistance: direct index for structure (out 1-element array of float ClipDistance)\r
-0:33 direct index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})\r
+0:33 indirect index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})\r
0:33 'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})\r
-0:33 Constant:\r
-0:33 1 (const int)\r
+0:33 'gl_InvocationID' (in int InvocationID)\r
0:33 Constant:\r
0:33 2 (const int)\r
0:33 Constant:\r
0:23 'gl_InvocationID' (in int InvocationID)\r
0:25 move second child to first child (temp 4-component vector of float)\r
0:25 gl_Position: direct index for structure (out 4-component vector of float Position)\r
-0:25 direct index (temp block{out 4-component vector of float Position gl_Position})\r
+0:25 indirect index (temp block{out 4-component vector of float Position gl_Position})\r
0:25 'gl_out' (out 3-element array of block{out 4-component vector of float Position gl_Position})\r
-0:25 Constant:\r
-0:25 1 (const int)\r
+0:25 'gl_InvocationID' (in int InvocationID)\r
0:25 Constant:\r
0:25 0 (const int)\r
0:25 'p' (temp 4-component vector of float)\r
-0:26 direct index (temp block{out 4-component vector of float Position gl_Position})\r
+0:26 indirect index (temp block{out 4-component vector of float Position gl_Position})\r
0:26 'gl_out' (out 3-element array of block{out 4-component vector of float Position gl_Position})\r
-0:26 Constant:\r
-0:26 1 (const int)\r
+0:26 'gl_InvocationID' (in int InvocationID)\r
0:34 Function Definition: foo( (global void)\r
0:34 Function Parameters: \r
0:36 Sequence\r
ERROR: 0:153: 'badmember' : nameless block contains a member that already has a name at global scope \r
ERROR: 0:157: 'inbname' : redefinition \r
ERROR: 0:159: 'vAnon' : redefinition \r
-ERROR: 0:169: 'variable indexing in/out block array' : not supported with this profile: es\r
ERROR: 0:173: 'origin_upper_left' : not supported with this profile: es\r
ERROR: 0:173: 'pixel_center_integer' : not supported with this profile: es\r
ERROR: 0:173: 'redeclaration' : cannot redeclare with different qualification: gl_FragCoord\r
ERROR: 0:428: 'blend equation' : can only apply to a standalone qualifier \r
ERROR: 0:429: 'blend_support' : unknown blend equation \r
ERROR: 0:431: 'fragment-shader array-of-array output' : not supported with this profile: es\r
-ERROR: 122 compilation errors. No code generated.\r
+ERROR: 121 compilation errors. No code generated.\r
\r
\r
Shader version: 310\r
GL_EXT_primitive_bounding_box\r
GL_OES_primitive_bounding_box\r
ERROR: 0:142: '[' : array index out of range '2'\r
-ERROR: 33 compilation errors. No code generated.\r
+ERROR: 0:145: '' : array size required \r
+ERROR: 0:161: '[]' : tessellation-control per-vertex output l-value must be indexed with gl_InvocationID \r
+ERROR: 0:162: '[]' : tessellation-control per-vertex output l-value must be indexed with gl_InvocationID \r
+ERROR: 0:165: '[]' : tessellation-control per-vertex output l-value must be indexed with gl_InvocationID \r
+ERROR: 37 compilation errors. No code generated.\r
\r
\r
Shader version: 310\r
0:31 'gl_InvocationID' (in highp int InvocationID)\r
0:33 move second child to first child (temp highp 4-component vector of float)\r
0:33 gl_Position: direct index for structure (out highp 4-component vector of float Position)\r
-0:33 direct index (temp block{out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})\r
+0:33 indirect index (temp block{out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})\r
0:33 'gl_out' (out 4-element array of block{out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})\r
-0:33 Constant:\r
-0:33 1 (const int)\r
+0:33 'gl_InvocationID' (in highp int InvocationID)\r
0:33 Constant:\r
0:33 0 (const int)\r
0:33 'p' (temp highp 4-component vector of float)\r
0:34 move second child to first child (temp highp float)\r
0:34 gl_PointSize: direct index for structure (out highp float PointSize)\r
-0:34 direct index (temp block{out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})\r
+0:34 indirect index (temp block{out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})\r
0:34 'gl_out' (out 4-element array of block{out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})\r
-0:34 Constant:\r
-0:34 1 (const int)\r
+0:34 'gl_InvocationID' (in highp int InvocationID)\r
0:34 Constant:\r
0:34 1 (const int)\r
0:34 'ps' (temp highp float)\r
0:114 1 (const int)\r
0:115 move second child to first child (temp highp float)\r
0:115 gl_PointSize: direct index for structure (out highp float PointSize)\r
-0:115 direct index (temp block{out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})\r
+0:115 indirect index (temp block{out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})\r
0:115 'gl_out' (out 4-element array of block{out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})\r
-0:115 Constant:\r
-0:115 1 (const int)\r
+0:115 'gl_InvocationID' (in highp int InvocationID)\r
0:115 Constant:\r
0:115 1 (const int)\r
0:115 'ps' (temp highp float)\r
0:142 2.000000\r
0:142 2.000000\r
0:142 2.000000\r
+0:153 Function Definition: outputtingOutparam(i1; (global void)\r
+0:153 Function Parameters: \r
+0:153 'a' (out highp int)\r
+0:155 Sequence\r
+0:155 move second child to first child (temp highp int)\r
+0:155 'a' (out highp int)\r
+0:155 Constant:\r
+0:155 2 (const int)\r
+0:158 Function Definition: outputting( (global void)\r
+0:158 Function Parameters: \r
+0:160 Sequence\r
+0:160 move second child to first child (temp highp int)\r
+0:160 indirect index (temp highp int)\r
+0:160 'outa' (out 4-element array of highp int)\r
+0:160 'gl_InvocationID' (in highp int InvocationID)\r
+0:160 Constant:\r
+0:160 2 (const int)\r
+0:161 move second child to first child (temp highp int)\r
+0:161 direct index (temp highp int)\r
+0:161 'outa' (out 4-element array of highp int)\r
+0:161 Constant:\r
+0:161 1 (const int)\r
+0:161 Constant:\r
+0:161 2 (const int)\r
+0:162 move second child to first child (temp highp 4-component vector of float)\r
+0:162 gl_Position: direct index for structure (out highp 4-component vector of float Position)\r
+0:162 direct index (temp block{out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})\r
+0:162 'gl_out' (out 4-element array of block{out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})\r
+0:162 Constant:\r
+0:162 0 (const int)\r
+0:162 Constant:\r
+0:162 0 (const int)\r
+0:162 Constant:\r
+0:162 1.000000\r
+0:162 1.000000\r
+0:162 1.000000\r
+0:162 1.000000\r
+0:163 direct index (temp highp int)\r
+0:163 'outa' (out 4-element array of highp int)\r
+0:163 Constant:\r
+0:163 1 (const int)\r
+0:164 direct index (temp block{out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})\r
+0:164 'gl_out' (out 4-element array of block{out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})\r
+0:164 Constant:\r
+0:164 0 (const int)\r
+0:165 Function Call: outputtingOutparam(i1; (global void)\r
+0:165 direct index (temp highp int)\r
+0:165 'outa' (out 4-element array of highp int)\r
+0:165 Constant:\r
+0:165 0 (const int)\r
+0:166 Function Call: outputtingOutparam(i1; (global void)\r
+0:166 indirect index (temp highp int)\r
+0:166 'outa' (out 4-element array of highp int)\r
+0:166 'gl_InvocationID' (in highp int InvocationID)\r
+0:167 move second child to first child (temp highp float)\r
+0:167 f: direct index for structure (out highp float)\r
+0:167 direct index (patch temp block{out highp float f})\r
+0:167 'patchIName' (patch out 4-element array of block{out highp float f})\r
+0:167 Constant:\r
+0:167 1 (const int)\r
+0:167 Constant:\r
+0:167 0 (const int)\r
+0:167 Constant:\r
+0:167 3.140000\r
+0:168 move second child to first child (temp highp int)\r
+0:168 indirect index (temp highp int)\r
+0:168 'outa' (out 4-element array of highp int)\r
+0:168 'gl_InvocationID' (in highp int InvocationID)\r
+0:168 Constant:\r
+0:168 2 (const int)\r
0:? Linker Objects\r
0:? 'gl_out' (out 4-element array of block{out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})\r
-0:? 'outa' (global 4-element array of highp int)\r
+0:? 'outa' (out 4-element array of highp int)\r
0:? 'patchIn' (patch in highp 4-component vector of float)\r
0:? 'patchOut' (patch out highp 4-component vector of float)\r
0:? 'ina' (in highp 2-component vector of float)\r
0:? 'misSized' (out 5-element array of highp float)\r
0:? 'okaySize' (out 4-element array of highp float)\r
0:? 'pv3' (temp highp 3-component vector of float)\r
+0:? 'badpatchIName' (patch out implicitly-sized array of block{out highp float f})\r
+0:? 'patchIName' (patch out 4-element array of block{out highp float f})\r
\r
\r
Linked tessellation control stage:\r
0:31 'gl_InvocationID' (in highp int InvocationID)\r
0:33 move second child to first child (temp highp 4-component vector of float)\r
0:33 gl_Position: direct index for structure (out highp 4-component vector of float Position)\r
-0:33 direct index (temp block{out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})\r
+0:33 indirect index (temp block{out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})\r
0:33 'gl_out' (out 4-element array of block{out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})\r
-0:33 Constant:\r
-0:33 1 (const int)\r
+0:33 'gl_InvocationID' (in highp int InvocationID)\r
0:33 Constant:\r
0:33 0 (const int)\r
0:33 'p' (temp highp 4-component vector of float)\r
0:34 move second child to first child (temp highp float)\r
0:34 gl_PointSize: direct index for structure (out highp float PointSize)\r
-0:34 direct index (temp block{out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})\r
+0:34 indirect index (temp block{out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})\r
0:34 'gl_out' (out 4-element array of block{out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})\r
-0:34 Constant:\r
-0:34 1 (const int)\r
+0:34 'gl_InvocationID' (in highp int InvocationID)\r
0:34 Constant:\r
0:34 1 (const int)\r
0:34 'ps' (temp highp float)\r
0:114 1 (const int)\r
0:115 move second child to first child (temp highp float)\r
0:115 gl_PointSize: direct index for structure (out highp float PointSize)\r
-0:115 direct index (temp block{out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})\r
+0:115 indirect index (temp block{out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})\r
0:115 'gl_out' (out 4-element array of block{out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})\r
-0:115 Constant:\r
-0:115 1 (const int)\r
+0:115 'gl_InvocationID' (in highp int InvocationID)\r
0:115 Constant:\r
0:115 1 (const int)\r
0:115 'ps' (temp highp float)\r
0:142 2.000000\r
0:142 2.000000\r
0:142 2.000000\r
+0:153 Function Definition: outputtingOutparam(i1; (global void)\r
+0:153 Function Parameters: \r
+0:153 'a' (out highp int)\r
+0:155 Sequence\r
+0:155 move second child to first child (temp highp int)\r
+0:155 'a' (out highp int)\r
+0:155 Constant:\r
+0:155 2 (const int)\r
+0:158 Function Definition: outputting( (global void)\r
+0:158 Function Parameters: \r
+0:160 Sequence\r
+0:160 move second child to first child (temp highp int)\r
+0:160 indirect index (temp highp int)\r
+0:160 'outa' (out 4-element array of highp int)\r
+0:160 'gl_InvocationID' (in highp int InvocationID)\r
+0:160 Constant:\r
+0:160 2 (const int)\r
+0:161 move second child to first child (temp highp int)\r
+0:161 direct index (temp highp int)\r
+0:161 'outa' (out 4-element array of highp int)\r
+0:161 Constant:\r
+0:161 1 (const int)\r
+0:161 Constant:\r
+0:161 2 (const int)\r
+0:162 move second child to first child (temp highp 4-component vector of float)\r
+0:162 gl_Position: direct index for structure (out highp 4-component vector of float Position)\r
+0:162 direct index (temp block{out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})\r
+0:162 'gl_out' (out 4-element array of block{out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})\r
+0:162 Constant:\r
+0:162 0 (const int)\r
+0:162 Constant:\r
+0:162 0 (const int)\r
+0:162 Constant:\r
+0:162 1.000000\r
+0:162 1.000000\r
+0:162 1.000000\r
+0:162 1.000000\r
+0:163 direct index (temp highp int)\r
+0:163 'outa' (out 4-element array of highp int)\r
+0:163 Constant:\r
+0:163 1 (const int)\r
+0:164 direct index (temp block{out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})\r
+0:164 'gl_out' (out 4-element array of block{out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})\r
+0:164 Constant:\r
+0:164 0 (const int)\r
+0:165 Function Call: outputtingOutparam(i1; (global void)\r
+0:165 direct index (temp highp int)\r
+0:165 'outa' (out 4-element array of highp int)\r
+0:165 Constant:\r
+0:165 0 (const int)\r
+0:166 Function Call: outputtingOutparam(i1; (global void)\r
+0:166 indirect index (temp highp int)\r
+0:166 'outa' (out 4-element array of highp int)\r
+0:166 'gl_InvocationID' (in highp int InvocationID)\r
+0:167 move second child to first child (temp highp float)\r
+0:167 f: direct index for structure (out highp float)\r
+0:167 direct index (patch temp block{out highp float f})\r
+0:167 'patchIName' (patch out 4-element array of block{out highp float f})\r
+0:167 Constant:\r
+0:167 1 (const int)\r
+0:167 Constant:\r
+0:167 0 (const int)\r
+0:167 Constant:\r
+0:167 3.140000\r
+0:168 move second child to first child (temp highp int)\r
+0:168 indirect index (temp highp int)\r
+0:168 'outa' (out 4-element array of highp int)\r
+0:168 'gl_InvocationID' (in highp int InvocationID)\r
+0:168 Constant:\r
+0:168 2 (const int)\r
0:? Linker Objects\r
0:? 'gl_out' (out 4-element array of block{out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})\r
-0:? 'outa' (global 4-element array of highp int)\r
+0:? 'outa' (out 4-element array of highp int)\r
0:? 'patchIn' (patch in highp 4-component vector of float)\r
0:? 'patchOut' (patch out highp 4-component vector of float)\r
0:? 'ina' (in highp 2-component vector of float)\r
0:? 'misSized' (out 5-element array of highp float)\r
0:? 'okaySize' (out 4-element array of highp float)\r
0:? 'pv3' (temp highp 3-component vector of float)\r
+0:? 'badpatchIName' (patch out 1-element array of block{out highp float f})\r
+0:? 'patchIName' (patch out 4-element array of block{out highp float f})\r
\r
0:29 'gl_InvocationID' (in int InvocationID)\r
0:31 move second child to first child (temp 4-component vector of float)\r
0:31 gl_Position: direct index for structure (out 4-component vector of float Position)\r
-0:31 direct index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out implicitly-sized array of float ClipDistance gl_ClipDistance})\r
+0:31 indirect index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out implicitly-sized array of float ClipDistance gl_ClipDistance})\r
0:31 'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out implicitly-sized array of float ClipDistance gl_ClipDistance})\r
-0:31 Constant:\r
-0:31 1 (const int)\r
+0:31 'gl_InvocationID' (in int InvocationID)\r
0:31 Constant:\r
0:31 0 (const int)\r
0:31 'p' (temp 4-component vector of float)\r
0:32 move second child to first child (temp float)\r
0:32 gl_PointSize: direct index for structure (out float PointSize)\r
-0:32 direct index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out implicitly-sized array of float ClipDistance gl_ClipDistance})\r
+0:32 indirect index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out implicitly-sized array of float ClipDistance gl_ClipDistance})\r
0:32 'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out implicitly-sized array of float ClipDistance gl_ClipDistance})\r
-0:32 Constant:\r
-0:32 1 (const int)\r
+0:32 'gl_InvocationID' (in int InvocationID)\r
0:32 Constant:\r
0:32 1 (const int)\r
0:32 'ps' (temp float)\r
0:33 move second child to first child (temp float)\r
0:33 direct index (temp float ClipDistance)\r
0:33 gl_ClipDistance: direct index for structure (out implicitly-sized array of float ClipDistance)\r
-0:33 direct index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out implicitly-sized array of float ClipDistance gl_ClipDistance})\r
+0:33 indirect index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out implicitly-sized array of float ClipDistance gl_ClipDistance})\r
0:33 'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out implicitly-sized array of float ClipDistance gl_ClipDistance})\r
-0:33 Constant:\r
-0:33 1 (const int)\r
+0:33 'gl_InvocationID' (in int InvocationID)\r
0:33 Constant:\r
0:33 2 (const int)\r
0:33 Constant:\r
0:29 'gl_InvocationID' (in int InvocationID)\r
0:31 move second child to first child (temp 4-component vector of float)\r
0:31 gl_Position: direct index for structure (out 4-component vector of float Position)\r
-0:31 direct index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})\r
+0:31 indirect index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})\r
0:31 'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})\r
-0:31 Constant:\r
-0:31 1 (const int)\r
+0:31 'gl_InvocationID' (in int InvocationID)\r
0:31 Constant:\r
0:31 0 (const int)\r
0:31 'p' (temp 4-component vector of float)\r
0:32 move second child to first child (temp float)\r
0:32 gl_PointSize: direct index for structure (out float PointSize)\r
-0:32 direct index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})\r
+0:32 indirect index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})\r
0:32 'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})\r
-0:32 Constant:\r
-0:32 1 (const int)\r
+0:32 'gl_InvocationID' (in int InvocationID)\r
0:32 Constant:\r
0:32 1 (const int)\r
0:32 'ps' (temp float)\r
0:33 move second child to first child (temp float)\r
0:33 direct index (temp float ClipDistance)\r
0:33 gl_ClipDistance: direct index for structure (out 1-element array of float ClipDistance)\r
-0:33 direct index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})\r
+0:33 indirect index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})\r
0:33 'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})\r
-0:33 Constant:\r
-0:33 1 (const int)\r
+0:33 'gl_InvocationID' (in int InvocationID)\r
0:33 Constant:\r
0:33 2 (const int)\r
0:33 Constant:\r
0:23 'gl_InvocationID' (in int InvocationID)\r
0:25 move second child to first child (temp 4-component vector of float)\r
0:25 gl_Position: direct index for structure (out 4-component vector of float Position)\r
-0:25 direct index (temp block{out 4-component vector of float Position gl_Position})\r
+0:25 indirect index (temp block{out 4-component vector of float Position gl_Position})\r
0:25 'gl_out' (out 3-element array of block{out 4-component vector of float Position gl_Position})\r
-0:25 Constant:\r
-0:25 1 (const int)\r
+0:25 'gl_InvocationID' (in int InvocationID)\r
0:25 Constant:\r
0:25 0 (const int)\r
0:25 'p' (temp 4-component vector of float)\r
-0:26 direct index (temp block{out 4-component vector of float Position gl_Position})\r
+0:26 indirect index (temp block{out 4-component vector of float Position gl_Position})\r
0:26 'gl_out' (out 3-element array of block{out 4-component vector of float Position gl_Position})\r
-0:26 Constant:\r
-0:26 1 (const int)\r
+0:26 'gl_InvocationID' (in int InvocationID)\r
0:34 Function Definition: foo( (global void)\r
0:34 Function Parameters: \r
0:36 Sequence\r
0:23 'gl_InvocationID' (in int InvocationID)\r
0:25 move second child to first child (temp 4-component vector of float)\r
0:25 gl_Position: direct index for structure (out 4-component vector of float Position)\r
-0:25 direct index (temp block{out 4-component vector of float Position gl_Position})\r
+0:25 indirect index (temp block{out 4-component vector of float Position gl_Position})\r
0:25 'gl_out' (out 3-element array of block{out 4-component vector of float Position gl_Position})\r
-0:25 Constant:\r
-0:25 1 (const int)\r
+0:25 'gl_InvocationID' (in int InvocationID)\r
0:25 Constant:\r
0:25 0 (const int)\r
0:25 'p' (temp 4-component vector of float)\r
-0:26 direct index (temp block{out 4-component vector of float Position gl_Position})\r
+0:26 indirect index (temp block{out 4-component vector of float Position gl_Position})\r
0:26 'gl_out' (out 3-element array of block{out 4-component vector of float Position gl_Position})\r
-0:26 Constant:\r
-0:26 1 (const int)\r
+0:26 'gl_InvocationID' (in int InvocationID)\r
0:34 Function Definition: foo( (global void)\r
0:34 Function Parameters: \r
0:36 Sequence\r
0:13 move second child to first child (temp float)\r
0:13 direct index (temp float CullDistance)\r
0:13 gl_CullDistance: direct index for structure (out implicitly-sized array of float CullDistance)\r
-0:13 direct index (temp block{out implicitly-sized array of float CullDistance gl_CullDistance})\r
-0:13 'gl_out' (out implicitly-sized array of block{out implicitly-sized array of float CullDistance gl_CullDistance})\r
-0:13 Constant:\r
-0:13 0 (const int)\r
+0:13 indirect index (temp block{out implicitly-sized array of float CullDistance gl_CullDistance})\r
+0:13 'gl_out' (out 4-element array of block{out implicitly-sized array of float CullDistance gl_CullDistance})\r
+0:13 'gl_InvocationID' (in int InvocationID)\r
0:13 Constant:\r
0:13 0 (const int)\r
0:13 Constant:\r
0:13 2 (const int)\r
0:? Linker Objects\r
0:? 'gl_in' (in 32-element array of block{in implicitly-sized array of float CullDistance gl_CullDistance})\r
-0:? 'gl_out' (out implicitly-sized array of block{out implicitly-sized array of float CullDistance gl_CullDistance})\r
+0:? 'gl_out' (out 4-element array of block{out implicitly-sized array of float CullDistance gl_CullDistance})\r
\r
\r
Linked tessellation control stage:\r
0:13 move second child to first child (temp float)\r
0:13 direct index (temp float CullDistance)\r
0:13 gl_CullDistance: direct index for structure (out 1-element array of float CullDistance)\r
-0:13 direct index (temp block{out 1-element array of float CullDistance gl_CullDistance})\r
-0:13 'gl_out' (out 1-element array of block{out 1-element array of float CullDistance gl_CullDistance})\r
-0:13 Constant:\r
-0:13 0 (const int)\r
+0:13 indirect index (temp block{out 1-element array of float CullDistance gl_CullDistance})\r
+0:13 'gl_out' (out 4-element array of block{out 1-element array of float CullDistance gl_CullDistance})\r
+0:13 'gl_InvocationID' (in int InvocationID)\r
0:13 Constant:\r
0:13 0 (const int)\r
0:13 Constant:\r
0:13 2 (const int)\r
0:? Linker Objects\r
0:? 'gl_in' (in 32-element array of block{in 1-element array of float CullDistance gl_CullDistance})\r
-0:? 'gl_out' (out 1-element array of block{out 1-element array of float CullDistance gl_CullDistance})\r
+0:? 'gl_out' (out 4-element array of block{out 1-element array of float CullDistance gl_CullDistance})\r
\r
\r
// Module Version 10000\r
// Generated by (magic number): 80001\r
-// Id's are bound by 90\r
+// Id's are bound by 93\r
\r
Capability Tessellation\r
1: ExtInstImport "GLSL.std.450"\r
MemoryModel Logical GLSL450\r
- EntryPoint TessellationControl 4 "main" 52 76 80 81 84 85 88 89\r
+ EntryPoint TessellationControl 4 "main" 52 79 83 84 87 88 91 92\r
ExecutionMode 4 OutputVertices 4\r
Source GLSL 400\r
SourceExtension "GL_ARB_separate_shader_objects"\r
MemberName 48(gl_PerVertex) 1 "gl_PointSize"\r
MemberName 48(gl_PerVertex) 2 "gl_ClipDistance"\r
Name 52 "gl_out"\r
- Name 63 "gl_TessLevelOuter"\r
- Name 70 "gl_TessLevelInner"\r
- Name 75 "outa"\r
- Name 76 "patchOut"\r
- Name 80 "inb"\r
- Name 81 "ind"\r
- Name 84 "ivla"\r
- Name 85 "ivlb"\r
- Name 88 "ovla"\r
- Name 89 "ovlb"\r
+ Name 66 "gl_TessLevelOuter"\r
+ Name 73 "gl_TessLevelInner"\r
+ Name 78 "outa"\r
+ Name 79 "patchOut"\r
+ Name 83 "inb"\r
+ Name 84 "ind"\r
+ Name 87 "ivla"\r
+ Name 88 "ivlb"\r
+ Name 91 "ovla"\r
+ Name 92 "ovlb"\r
MemberDecorate 19(gl_PerVertex) 0 BuiltIn Position\r
MemberDecorate 19(gl_PerVertex) 1 BuiltIn PointSize\r
MemberDecorate 19(gl_PerVertex) 2 BuiltIn ClipDistance\r
MemberDecorate 48(gl_PerVertex) 1 BuiltIn PointSize\r
MemberDecorate 48(gl_PerVertex) 2 BuiltIn ClipDistance\r
Decorate 48(gl_PerVertex) Block\r
- Decorate 63(gl_TessLevelOuter) Patch\r
- Decorate 63(gl_TessLevelOuter) BuiltIn TessLevelOuter\r
- Decorate 70(gl_TessLevelInner) Patch\r
- Decorate 70(gl_TessLevelInner) BuiltIn TessLevelInner\r
- Decorate 76(patchOut) Patch\r
- Decorate 84(ivla) Location 3\r
- Decorate 85(ivlb) Location 4\r
- Decorate 88(ovla) Location 3\r
- Decorate 89(ovlb) Location 4\r
+ Decorate 66(gl_TessLevelOuter) Patch\r
+ Decorate 66(gl_TessLevelOuter) BuiltIn TessLevelOuter\r
+ Decorate 73(gl_TessLevelInner) Patch\r
+ Decorate 73(gl_TessLevelInner) BuiltIn TessLevelInner\r
+ Decorate 79(patchOut) Patch\r
+ Decorate 87(ivla) Location 3\r
+ Decorate 88(ivlb) Location 4\r
+ Decorate 91(ovla) Location 3\r
+ Decorate 92(ovlb) Location 4\r
2: TypeVoid\r
3: TypeFunction 2\r
6: TypeInt 32 0\r
50: TypeArray 48(gl_PerVertex) 49\r
51: TypePointer Output 50\r
52(gl_out): 51(ptr) Variable Output\r
- 54: TypePointer Output 15(fvec4)\r
- 57: TypePointer Output 14(float)\r
- 61: TypeArray 14(float) 49\r
- 62: TypePointer Output 61\r
-63(gl_TessLevelOuter): 62(ptr) Variable Output\r
- 64: 10(int) Constant 3\r
- 65: 14(float) Constant 1078774989\r
- 67: 6(int) Constant 2\r
- 68: TypeArray 14(float) 67\r
- 69: TypePointer Output 68\r
-70(gl_TessLevelInner): 69(ptr) Variable Output\r
- 71: 14(float) Constant 1067869798\r
- 73: TypeArray 10(int) 49\r
- 74: TypePointer Private 73\r
- 75(outa): 74(ptr) Variable Private\r
- 76(patchOut): 54(ptr) Variable Output\r
- 77: TypeVector 14(float) 2\r
- 78: TypeArray 77(fvec2) 20\r
- 79: TypePointer Input 78\r
- 80(inb): 79(ptr) Variable Input\r
- 81(ind): 79(ptr) Variable Input\r
- 82: TypeArray 15(fvec4) 20\r
- 83: TypePointer Input 82\r
- 84(ivla): 83(ptr) Variable Input\r
- 85(ivlb): 83(ptr) Variable Input\r
- 86: TypeArray 15(fvec4) 49\r
- 87: TypePointer Output 86\r
- 88(ovla): 87(ptr) Variable Output\r
- 89(ovlb): 87(ptr) Variable Output\r
+ 55: TypePointer Output 15(fvec4)\r
+ 59: TypePointer Output 14(float)\r
+ 64: TypeArray 14(float) 49\r
+ 65: TypePointer Output 64\r
+66(gl_TessLevelOuter): 65(ptr) Variable Output\r
+ 67: 10(int) Constant 3\r
+ 68: 14(float) Constant 1078774989\r
+ 70: 6(int) Constant 2\r
+ 71: TypeArray 14(float) 70\r
+ 72: TypePointer Output 71\r
+73(gl_TessLevelInner): 72(ptr) Variable Output\r
+ 74: 14(float) Constant 1067869798\r
+ 76: TypeArray 10(int) 49\r
+ 77: TypePointer Private 76\r
+ 78(outa): 77(ptr) Variable Private\r
+ 79(patchOut): 55(ptr) Variable Output\r
+ 80: TypeVector 14(float) 2\r
+ 81: TypeArray 80(fvec2) 20\r
+ 82: TypePointer Input 81\r
+ 83(inb): 82(ptr) Variable Input\r
+ 84(ind): 82(ptr) Variable Input\r
+ 85: TypeArray 15(fvec4) 20\r
+ 86: TypePointer Input 85\r
+ 87(ivla): 86(ptr) Variable Input\r
+ 88(ivlb): 86(ptr) Variable Input\r
+ 89: TypeArray 15(fvec4) 49\r
+ 90: TypePointer Output 89\r
+ 91(ovla): 90(ptr) Variable Output\r
+ 92(ovlb): 90(ptr) Variable Output\r
4(main): 2 Function None 3\r
5: Label\r
12(a): 11(ptr) Variable Function\r
Store 42(pid) 44\r
47: 10(int) Load 46(gl_InvocationID)\r
Store 45(iid) 47\r
- 53: 15(fvec4) Load 17(p)\r
- 55: 54(ptr) AccessChain 52(gl_out) 24 25\r
- Store 55 53\r
- 56: 14(float) Load 30(ps)\r
- 58: 57(ptr) AccessChain 52(gl_out) 24 24\r
- Store 58 56\r
- 59: 14(float) Load 34(cd)\r
- 60: 57(ptr) AccessChain 52(gl_out) 24 35 24\r
- Store 60 59\r
- 66: 57(ptr) AccessChain 63(gl_TessLevelOuter) 64\r
- Store 66 65\r
- 72: 57(ptr) AccessChain 70(gl_TessLevelInner) 24\r
- Store 72 71\r
+ 53: 10(int) Load 46(gl_InvocationID)\r
+ 54: 15(fvec4) Load 17(p)\r
+ 56: 55(ptr) AccessChain 52(gl_out) 53 25\r
+ Store 56 54\r
+ 57: 10(int) Load 46(gl_InvocationID)\r
+ 58: 14(float) Load 30(ps)\r
+ 60: 59(ptr) AccessChain 52(gl_out) 57 24\r
+ Store 60 58\r
+ 61: 10(int) Load 46(gl_InvocationID)\r
+ 62: 14(float) Load 34(cd)\r
+ 63: 59(ptr) AccessChain 52(gl_out) 61 35 24\r
+ Store 63 62\r
+ 69: 59(ptr) AccessChain 66(gl_TessLevelOuter) 67\r
+ Store 69 68\r
+ 75: 59(ptr) AccessChain 73(gl_TessLevelInner) 24\r
+ Store 75 74\r
Return\r
FunctionEnd\r
int pid = gl_PrimitiveID;\r
int iid = gl_InvocationID;\r
\r
- gl_out[1].gl_Position = p;\r
- gl_out[1].gl_PointSize = ps;\r
- gl_out[1].gl_ClipDistance[1] = cd;\r
+ gl_out[gl_InvocationID].gl_Position = p;\r
+ gl_out[gl_InvocationID].gl_PointSize = ps;\r
+ gl_out[gl_InvocationID].gl_ClipDistance[1] = cd;\r
\r
gl_TessLevelOuter[3] = 3.2;\r
gl_TessLevelInner[1] = 1.3;\r
// For the version, it uses the latest git tag followed by the number of commits.
// For the date, it uses the current date (when then script is run).
-#define GLSLANG_REVISION "SPIRV99.807"
+#define GLSLANG_REVISION "SPIRV99.809"
#define GLSLANG_DATE "28-Nov-2015"
requireProfile(base->getLoc(), ~EEsProfile, "variable indexing buffer block array");
else if (base->getQualifier().storage == EvqUniform)
profileRequires(base->getLoc(), EEsProfile, 0, Num_AEP_gpu_shader5, AEP_gpu_shader5, "variable indexing uniform block array");
- else
- requireProfile(base->getLoc(), ~EEsProfile, "variable indexing in/out block array");
+ else {
+ // input/output blocks either don't exist or can be variable indexed
+ }
} else if (language == EShLangFragment && base->getQualifier().isPipeOutput())
requireProfile(base->getLoc(), ~EEsProfile, "variable indexing fragment shader ouput array");
else if (base->getBasicType() == EbtSampler && version >= 130) {
switch(binaryNode->getOp()) {
case EOpIndexDirect:
case EOpIndexIndirect:
+ // ... tessellation control shader ...
+ // If a per-vertex output variable is used as an l-value, it is a
+ // compile-time or link-time error if the expression indicating the
+ // vertex index is not the identifier gl_InvocationID.
+ if (language == EShLangTessControl) {
+ const TType& leftType = binaryNode->getLeft()->getType();
+ if (leftType.getQualifier().storage == EvqVaryingOut && ! leftType.getQualifier().patch && binaryNode->getLeft()->getAsSymbolNode()) {
+ // we have a per-vertex output
+ const TIntermSymbol* rightSymbol = binaryNode->getRight()->getAsSymbolNode();
+ if (! rightSymbol || rightSymbol->getQualifier().builtIn != EbvInvocationId)
+ error(loc, "tessellation-control per-vertex output l-value must be indexed with gl_InvocationID", "[]", "");
+ }
+ }
+
+ // fall through
case EOpIndexDirectStruct:
return lValueErrorCheck(loc, op, binaryNode->getLeft());
case EOpVectorSwizzle: