// ERROR, no __ until revision 310
#define __D
+
+shared vec4 arr[2][3][4];
layout(blend_support_hsl_luminosity) void blendFoo() { } // ERROR, only on standalone
void blendFoo(layout(blend_support_hsl_luminosity) vec3 v) { } // ERROR, only on standalone
layout(blend_support_flizbit) out; // ERROR, no flizbit
+
+out vec4 outAA[2][2]; // ERROR
int[NY][NX] d;
f(false, 12.1, uint[NZ](uint(0),uint(1),uint(1),uint(2)), d);
}
+
+buffer b {\r
+ float u[]; // ERROR\r
+ vec4 v[];\r
+} name[3];
+\r
+uniform ub {\r
+ float u;\r
+ vec4 v[]; // ERROR\r
+} uname[3];
+
+buffer b2 {\r
+ float u;\r
+ vec4 v[][]; // ERROR\r
+} name2[3];
+
+buffer b3 {\r
+ float u; \r
+ vec4 v[][7];\r
+} name3[3];
+
+// General arrays of arrays
+\r
+float[4][5][6] many[1][2][3];\r
+\r
+float gu[][7]; // ERROR, size required\r
+float g4[4][7];\r
+float g5[5][7];\r
+\r
+float[4][7] foo(float a[5][7])\r
+{\r
+ float r[7];\r
+ r = a[2];\r
+ float[](a[0], a[1], r, a[3]); // ERROR, too few dims\r
+ float[4][7][4](a[0], a[1], r, a[3]); // ERROR, too many dims\r
+ return float[4][7](a[0], a[1], r, a[3]);\r
+ return float[][](a[0], a[1], r, a[3]);\r
+ return float[][7](a[0], a[1], a[2], a[3]);\r
+}\r
+\r
+void bar(float[5][7]) {}\r
+\r
+void foo2()\r
+{\r
+ {\r
+ float gu[3][4][2];\r
+\r
+ gu[2][4][1] = 4.0; // ERROR, overflow\r
+ }\r
+ vec4 ca4[3][2] = vec4[][](vec4[2](vec4(0.0), vec4(1.0)),\r
+ vec4[2](vec4(0.0), vec4(1.0)),\r
+ vec4[2](vec4(0.0), vec4(1.0)));\r
+ vec4 caim[][2] = vec4[][](vec4[2](vec4(4.0), vec4(2.0)),\r
+ vec4[2](vec4(4.0), vec4(2.0)),\r
+ vec4[2](vec4(4.0), vec4(2.0)));\r
+ vec4 caim2[][] = vec4[][](vec4[2](vec4(4.0), vec4(2.0)),\r
+ vec4[2](vec4(4.0), vec4(2.0)),\r
+ vec4[2](vec4(4.0), vec4(2.0)));\r
+ vec4 caim3[3][] = vec4[][](vec4[2](vec4(4.0), vec4(2.0)),\r
+ vec4[2](vec4(4.0), vec4(2.0)),\r
+ vec4[2](vec4(4.0), vec4(2.0)));\r
+\r
+ g4 = foo(g5);\r
+ g5 = g4; // ERROR, wrong types\r
+ gu = g4; // ERROR, not yet sized\r
+\r
+ foo(gu); // ERROR, not yet sized\r
+ bar(g5);\r
+\r
+ if (foo(g5) == g4)\r
+ ;\r
+ if (foo(g5) == g5) // ERROR, different types\r
+ ;\r
+\r
+ float u[5][7];\r
+ u[5][2] = 5.0; // ERROR\r
+ foo(u);\r
+\r
+ vec4 badAss[3];\r
+ name[1].v[-1]; // ERROR\r
+ name[1].v[1] = vec4(4.3);\r
+ name[1].v = badAss; // ERROR, bad assignemnt\r
+\r
+ name3[0].v[1].length(); // 7\r
+ name3[0].v.length(); // run time\r
+}\r
+\r
+struct badS {\r
+ int sa[]; // ERROR\r
+ int a[][]; // ERROR\r
+ int b[][2]; // ERROR\r
+ int c[2][]; // ERROR\r
+ int d[][4]; // ERROR\r
+};\r
+\r
+in float inArray[2][3]; // ERROR\r
+out float outArray[2][3]; // ERROR\r
+\r
+uniform ubaa {\r
+ int a;\r
+} ubaaname[2][3]; // ERROR\r
\r
buffer InvalidShaderStorageBlock\r
{\r
- float values[]; // ERROR\r
+ float values[];\r
int value;\r
} invalid;\r
\r
ERROR: 0:102: 'arrays of arrays' : not supported for this version or the enabled extensions \r
ERROR: 0:103: 'arrays of arrays' : not supported for this version or the enabled extensions \r
ERROR: 0:100: 'arrays of arrays' : not supported for this version or the enabled extensions \r
+ERROR: 0:100: 'array-of-array of block' : not supported with this profile: es\r
ERROR: 0:111: 'variable indexing fragment shader ouput array' : not supported with this profile: es\r
ERROR: 0:119: '==' : can't use with samplers or structs containing samplers \r
ERROR: 0:120: '!=' : can't use with samplers or structs containing samplers \r
ERROR: 0:158: 'invariant' : can only apply to an output \r
ERROR: 0:160: 'imageBuffer' : Reserved word. \r
ERROR: 0:160: '' : syntax error\r
-ERROR: 43 compilation errors. No code generated.\r
+ERROR: 44 compilation errors. No code generated.\r
\r
\r
Shader version: 300\r
ERROR: 0:62: '' : array size required \r
ERROR: 0:63: '' : array size required \r
ERROR: 0:64: '' : array size required \r
-ERROR: 0:65: 'implicitly-sized array in a block' : not supported with this profile: es\r
+ERROR: 0:65: '' : array size required \r
ERROR: 0:67: '' : array size required \r
ERROR: 0:76: 'invariant' : cannot change qualification after use \r
ERROR: 0:78: 'invariant' : can only apply to an output \r
Warning, version 310 is not yet complete; most version-specific features are present, but some are missing.\r
ERROR: 0:4: 'local_size' : cannot change previously set size \r
ERROR: 0:5: 'local_size' : too large; see gl_MaxComputeWorkGroupSize \r
-ERROR: 0:23: 'values' : only the last member of a buffer block can be run-time sized \r
+ERROR: 0:23: '' : array size required \r
ERROR: 0:39: 'in' : global storage input qualifier cannot be used in a compute shader \r
ERROR: 0:39: 'location qualifier on input' : not supported in this stage: compute\r
ERROR: 0:40: 'in' : global storage input qualifier cannot be used in a compute shader \r
0:? 'inbi' (in block{in highp int a})\r
0:? 'outbi' (out block{out highp int a})\r
0:? 't__' (global highp float)\r
+0:? 'arr' (shared 2-element array of 3-element array of 4-element array of highp 4-component vector of float)\r
\r
\r
Linked compute stage:\r
0:? 'inbi' (in block{in highp int a})\r
0:? 'outbi' (out block{out highp int a})\r
0:? 't__' (global highp float)\r
+0:? 'arr' (shared 2-element array of 3-element array of 4-element array of highp 4-component vector of float)\r
\r
ERROR: 0:427: 'blend equation' : can only apply to a standalone qualifier \r
ERROR: 0:428: 'blend equation' : can only apply to a standalone qualifier \r
ERROR: 0:429: 'blend_support' : unknown blend equation \r
-ERROR: 121 compilation errors. No code generated.\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
\r
\r
Shader version: 310\r
0:? 'colorfsi' (flat sample in mediump 4-component vector of float)\r
0:? 'sampInArray' (smooth sample in 4-element array of mediump 3-component vector of float)\r
0:? 'badout' (out mediump 4-component vector of float)\r
+0:? 'outAA' (out 2-element array of 2-element array of mediump 4-component vector of float)\r
\r
\r
Linked fragment stage:\r
0:? 'colorfsi' (flat sample in mediump 4-component vector of float)\r
0:? 'sampInArray' (smooth sample in 4-element array of mediump 3-component vector of float)\r
0:? 'badout' (out mediump 4-component vector of float)\r
+0:? 'outAA' (out 2-element array of 2-element array of mediump 4-component vector of float)\r
\r
310AofA.vert\r
Warning, version 310 is not yet complete; most version-specific features are present, but some are missing.\r
+ERROR: 0:17: '' : array size required \r
+ERROR: 0:23: '' : array size required \r
+ERROR: 0:28: '[]' : only outermost dimension of an array of arrays can be implicitly sized \r
+ERROR: 0:40: '' : array size required \r
+ERROR: 0:48: 'constructor' : constructing non-array constituent from array argument \r
+ERROR: 0:49: 'constructior' : array constructor argument not correct type to construct array element \r
+ERROR: 0:62: '[' : array index out of range '4'\r
+ERROR: 0:78: 'assign' : cannot convert from 'global 4-element array of 7-element array of highp float' to 'global 5-element array of 7-element array of highp float'\r
+ERROR: 0:79: 'assign' : cannot convert from 'global 4-element array of 7-element array of highp float' to 'global implicitly-sized array of 7-element array of highp float'\r
+ERROR: 0:81: 'foo' : no matching overloaded function found \r
+ERROR: 0:86: '==' : wrong operand types: no operation '==' exists that takes a left-hand operand of type 'global 4-element array of 7-element array of highp float' and a right operand of type 'global 5-element array of 7-element array of highp float' (or there is no acceptable conversion)\r
+ERROR: 0:90: '[' : array index out of range '5'\r
+ERROR: 0:94: '[' : index out of range '-1'\r
+ERROR: 0:96: 'assign' : cannot convert from 'temp 3-element array of highp 4-component vector of float' to 'layout(column_major shared ) buffer implicitly-sized array of highp 4-component vector of float'\r
+ERROR: 0:103: '' : array size required \r
+ERROR: 0:104: '' : array size required \r
+ERROR: 0:105: '' : array size required \r
+ERROR: 0:106: '' : array size required \r
+ERROR: 0:107: '' : array size required \r
+ERROR: 0:110: 'vertex input arrays' : not supported with this profile: es\r
+ERROR: 0:111: 'vertex-shader array-of-array output' : not supported with this profile: es\r
+ERROR: 0:113: 'array-of-array of block' : not supported with this profile: es\r
+ERROR: 22 compilation errors. No code generated.\r
+\r
\r
Shader version: 310\r
-0:? Sequence\r
+ERROR: node is still EOpNull!\r
0:8 Function Definition: f(b1;f1;u1[4];i1[3][2]; (global void)\r
0:8 Function Parameters: \r
0:8 'a' (in bool)\r
0:13 1 (const uint)\r
0:13 2 (const uint)\r
0:13 'd' (temp 3-element array of 2-element array of highp int)\r
+0:44 Function Definition: foo(f1[5][7]; (global 4-element array of 7-element array of highp float)\r
+0:44 Function Parameters: \r
+0:44 'a' (in 5-element array of 7-element array of highp float)\r
+0:? Sequence\r
+0:47 move second child to first child (temp 7-element array of highp float)\r
+0:47 'r' (temp 7-element array of highp float)\r
+0:47 direct index (temp 7-element array of highp float)\r
+0:47 'a' (in 5-element array of 7-element array of highp float)\r
+0:47 Constant:\r
+0:47 2 (const int)\r
+0:48 Constant:\r
+0:48 0.000000\r
+0:49 Constant:\r
+0:49 0.000000\r
+0:50 Branch: Return with expression\r
+0:50 Construct float (temp 4-element array of 7-element array of float)\r
+0:50 direct index (temp 7-element array of highp float)\r
+0:50 'a' (in 5-element array of 7-element array of highp float)\r
+0:50 Constant:\r
+0:50 0 (const int)\r
+0:50 direct index (temp 7-element array of highp float)\r
+0:50 'a' (in 5-element array of 7-element array of highp float)\r
+0:50 Constant:\r
+0:50 1 (const int)\r
+0:50 'r' (temp 7-element array of highp float)\r
+0:50 direct index (temp 7-element array of highp float)\r
+0:50 'a' (in 5-element array of 7-element array of highp float)\r
+0:50 Constant:\r
+0:50 3 (const int)\r
+0:51 Branch: Return with expression\r
+0:51 Construct float (temp 4-element array of 7-element array of float)\r
+0:51 direct index (temp 7-element array of highp float)\r
+0:51 'a' (in 5-element array of 7-element array of highp float)\r
+0:51 Constant:\r
+0:51 0 (const int)\r
+0:51 direct index (temp 7-element array of highp float)\r
+0:51 'a' (in 5-element array of 7-element array of highp float)\r
+0:51 Constant:\r
+0:51 1 (const int)\r
+0:51 'r' (temp 7-element array of highp float)\r
+0:51 direct index (temp 7-element array of highp float)\r
+0:51 'a' (in 5-element array of 7-element array of highp float)\r
+0:51 Constant:\r
+0:51 3 (const int)\r
+0:52 Branch: Return with expression\r
+0:52 Construct float (temp 4-element array of 7-element array of float)\r
+0:52 direct index (temp 7-element array of highp float)\r
+0:52 'a' (in 5-element array of 7-element array of highp float)\r
+0:52 Constant:\r
+0:52 0 (const int)\r
+0:52 direct index (temp 7-element array of highp float)\r
+0:52 'a' (in 5-element array of 7-element array of highp float)\r
+0:52 Constant:\r
+0:52 1 (const int)\r
+0:52 direct index (temp 7-element array of highp float)\r
+0:52 'a' (in 5-element array of 7-element array of highp float)\r
+0:52 Constant:\r
+0:52 2 (const int)\r
+0:52 direct index (temp 7-element array of highp float)\r
+0:52 'a' (in 5-element array of 7-element array of highp float)\r
+0:52 Constant:\r
+0:52 3 (const int)\r
+0:55 Function Definition: bar(f1[5][7]; (global void)\r
+0:55 Function Parameters: \r
+0:55 '' (in 5-element array of 7-element array of highp float)\r
+0:57 Function Definition: foo2( (global void)\r
+0:57 Function Parameters: \r
+0:? Sequence\r
+0:? Sequence\r
+0:62 move second child to first child (temp highp float)\r
+0:62 direct index (temp highp float)\r
+0:62 direct index (temp 2-element array of highp float)\r
+0:62 direct index (temp 4-element array of 2-element array of highp float)\r
+0:62 'gu' (temp 3-element array of 4-element array of 2-element array of highp float)\r
+0:62 Constant:\r
+0:62 2 (const int)\r
+0:62 Constant:\r
+0:62 4 (const int)\r
+0:62 Constant:\r
+0:62 1 (const int)\r
+0:62 Constant:\r
+0:62 4.000000\r
+0:64 Sequence\r
+0:64 move second child to first child (temp 3-element array of 2-element array of highp 4-component vector of float)\r
+0:64 'ca4' (temp 3-element array of 2-element array of highp 4-component vector of float)\r
+0:66 Constant:\r
+0:66 0.000000\r
+0:66 0.000000\r
+0:66 0.000000\r
+0:66 0.000000\r
+0:66 1.000000\r
+0:66 1.000000\r
+0:66 1.000000\r
+0:66 1.000000\r
+0:66 0.000000\r
+0:66 0.000000\r
+0:66 0.000000\r
+0:66 0.000000\r
+0:66 1.000000\r
+0:66 1.000000\r
+0:66 1.000000\r
+0:66 1.000000\r
+0:66 0.000000\r
+0:66 0.000000\r
+0:66 0.000000\r
+0:66 0.000000\r
+0:66 1.000000\r
+0:66 1.000000\r
+0:66 1.000000\r
+0:66 1.000000\r
+0:67 Sequence\r
+0:67 move second child to first child (temp 3-element array of 2-element array of highp 4-component vector of float)\r
+0:67 'caim' (temp 3-element array of 2-element array of highp 4-component vector of float)\r
+0:69 Constant:\r
+0:69 4.000000\r
+0:69 4.000000\r
+0:69 4.000000\r
+0:69 4.000000\r
+0:69 2.000000\r
+0:69 2.000000\r
+0:69 2.000000\r
+0:69 2.000000\r
+0:69 4.000000\r
+0:69 4.000000\r
+0:69 4.000000\r
+0:69 4.000000\r
+0:69 2.000000\r
+0:69 2.000000\r
+0:69 2.000000\r
+0:69 2.000000\r
+0:69 4.000000\r
+0:69 4.000000\r
+0:69 4.000000\r
+0:69 4.000000\r
+0:69 2.000000\r
+0:69 2.000000\r
+0:69 2.000000\r
+0:69 2.000000\r
+0:70 Sequence\r
+0:70 move second child to first child (temp 3-element array of 2-element array of highp 4-component vector of float)\r
+0:70 'caim2' (temp 3-element array of 2-element array of highp 4-component vector of float)\r
+0:72 Constant:\r
+0:72 4.000000\r
+0:72 4.000000\r
+0:72 4.000000\r
+0:72 4.000000\r
+0:72 2.000000\r
+0:72 2.000000\r
+0:72 2.000000\r
+0:72 2.000000\r
+0:72 4.000000\r
+0:72 4.000000\r
+0:72 4.000000\r
+0:72 4.000000\r
+0:72 2.000000\r
+0:72 2.000000\r
+0:72 2.000000\r
+0:72 2.000000\r
+0:72 4.000000\r
+0:72 4.000000\r
+0:72 4.000000\r
+0:72 4.000000\r
+0:72 2.000000\r
+0:72 2.000000\r
+0:72 2.000000\r
+0:72 2.000000\r
+0:73 Sequence\r
+0:73 move second child to first child (temp 3-element array of 2-element array of highp 4-component vector of float)\r
+0:73 'caim3' (temp 3-element array of 2-element array of highp 4-component vector of float)\r
+0:75 Constant:\r
+0:75 4.000000\r
+0:75 4.000000\r
+0:75 4.000000\r
+0:75 4.000000\r
+0:75 2.000000\r
+0:75 2.000000\r
+0:75 2.000000\r
+0:75 2.000000\r
+0:75 4.000000\r
+0:75 4.000000\r
+0:75 4.000000\r
+0:75 4.000000\r
+0:75 2.000000\r
+0:75 2.000000\r
+0:75 2.000000\r
+0:75 2.000000\r
+0:75 4.000000\r
+0:75 4.000000\r
+0:75 4.000000\r
+0:75 4.000000\r
+0:75 2.000000\r
+0:75 2.000000\r
+0:75 2.000000\r
+0:75 2.000000\r
+0:77 move second child to first child (temp 4-element array of 7-element array of highp float)\r
+0:77 'g4' (global 4-element array of 7-element array of highp float)\r
+0:77 Function Call: foo(f1[5][7]; (global 4-element array of 7-element array of highp float)\r
+0:77 'g5' (global 5-element array of 7-element array of highp float)\r
+0:78 'g5' (global 5-element array of 7-element array of highp float)\r
+0:79 'gu' (global implicitly-sized array of 7-element array of highp float)\r
+0:81 Constant:\r
+0:81 0.000000\r
+0:82 Function Call: bar(f1[5][7]; (global void)\r
+0:82 'g5' (global 5-element array of 7-element array of highp float)\r
+0:84 Test condition and select (temp void)\r
+0:84 Condition\r
+0:84 Compare Equal (temp bool)\r
+0:84 Function Call: foo(f1[5][7]; (global 4-element array of 7-element array of highp float)\r
+0:84 'g5' (global 5-element array of 7-element array of highp float)\r
+0:84 'g4' (global 4-element array of 7-element array of highp float)\r
+0:84 true case is null\r
+0:86 Test condition and select (temp void)\r
+0:86 Condition\r
+0:86 Constant:\r
+0:86 false (const bool)\r
+0:86 true case is null\r
+0:90 move second child to first child (temp highp float)\r
+0:90 direct index (temp highp float)\r
+0:90 direct index (temp 7-element array of highp float)\r
+0:90 'u' (temp 5-element array of 7-element array of highp float)\r
+0:90 Constant:\r
+0:90 5 (const int)\r
+0:90 Constant:\r
+0:90 2 (const int)\r
+0:90 Constant:\r
+0:90 5.000000\r
+0:91 Function Call: foo(f1[5][7]; (global 4-element array of 7-element array of highp float)\r
+0:91 'u' (temp 5-element array of 7-element array of highp float)\r
+0:94 direct index (layout(column_major shared ) temp highp 4-component vector of float)\r
+0:94 v: direct index for structure (layout(column_major shared ) buffer implicitly-sized array of highp 4-component vector of float)\r
+0:94 direct index (layout(column_major shared ) temp block{layout(column_major shared ) buffer implicitly-sized array of highp float u, layout(column_major shared ) buffer implicitly-sized array of highp 4-component vector of float v})\r
+0:94 'name' (layout(column_major shared ) buffer 3-element array of block{layout(column_major shared ) buffer implicitly-sized array of highp float u, layout(column_major shared ) buffer implicitly-sized array of highp 4-component vector of float v})\r
+0:94 Constant:\r
+0:94 1 (const int)\r
+0:94 Constant:\r
+0:94 1 (const int)\r
+0:94 Constant:\r
+0:94 -1 (const int)\r
+0:95 move second child to first child (temp highp 4-component vector of float)\r
+0:95 direct index (layout(column_major shared ) temp highp 4-component vector of float)\r
+0:95 v: direct index for structure (layout(column_major shared ) buffer implicitly-sized array of highp 4-component vector of float)\r
+0:95 direct index (layout(column_major shared ) temp block{layout(column_major shared ) buffer implicitly-sized array of highp float u, layout(column_major shared ) buffer implicitly-sized array of highp 4-component vector of float v})\r
+0:95 'name' (layout(column_major shared ) buffer 3-element array of block{layout(column_major shared ) buffer implicitly-sized array of highp float u, layout(column_major shared ) buffer implicitly-sized array of highp 4-component vector of float v})\r
+0:95 Constant:\r
+0:95 1 (const int)\r
+0:95 Constant:\r
+0:95 1 (const int)\r
+0:95 Constant:\r
+0:95 1 (const int)\r
+0:95 Constant:\r
+0:95 4.300000\r
+0:95 4.300000\r
+0:95 4.300000\r
+0:95 4.300000\r
+0:96 v: direct index for structure (layout(column_major shared ) buffer implicitly-sized array of highp 4-component vector of float)\r
+0:96 direct index (layout(column_major shared ) temp block{layout(column_major shared ) buffer implicitly-sized array of highp float u, layout(column_major shared ) buffer implicitly-sized array of highp 4-component vector of float v})\r
+0:96 'name' (layout(column_major shared ) buffer 3-element array of block{layout(column_major shared ) buffer implicitly-sized array of highp float u, layout(column_major shared ) buffer implicitly-sized array of highp 4-component vector of float v})\r
+0:96 Constant:\r
+0:96 1 (const int)\r
+0:96 Constant:\r
+0:96 1 (const int)\r
+0:98 Constant:\r
+0:98 7 (const int)\r
+0:99 array length (temp highp int)\r
+0:99 v: direct index for structure (layout(column_major shared ) buffer implicitly-sized array of 7-element array of highp 4-component vector of float)\r
+0:99 direct index (layout(column_major shared ) temp block{layout(column_major shared ) buffer highp float u, layout(column_major shared ) buffer implicitly-sized array of 7-element array of highp 4-component vector of float v})\r
+0:99 'name3' (layout(column_major shared ) buffer 3-element array of block{layout(column_major shared ) buffer highp float u, layout(column_major shared ) buffer implicitly-sized array of 7-element array of highp 4-component vector of float v})\r
+0:99 Constant:\r
+0:99 0 (const int)\r
+0:99 Constant:\r
+0:99 1 (const int)\r
0:? Linker Objects\r
+0:? 'name' (layout(column_major shared ) buffer 3-element array of block{layout(column_major shared ) buffer implicitly-sized array of highp float u, layout(column_major shared ) buffer implicitly-sized array of highp 4-component vector of float v})\r
+0:? 'uname' (layout(column_major shared ) uniform 3-element array of block{layout(column_major shared ) uniform highp float u, layout(column_major shared ) uniform implicitly-sized array of highp 4-component vector of float v})\r
+0:? 'name2' (layout(column_major shared ) buffer 3-element array of block{layout(column_major shared ) buffer highp float u, layout(column_major shared ) buffer implicitly-sized array of implicitly-sized array of highp 4-component vector of float v})\r
+0:? 'name3' (layout(column_major shared ) buffer 3-element array of block{layout(column_major shared ) buffer highp float u, layout(column_major shared ) buffer implicitly-sized array of 7-element array of highp 4-component vector of float v})\r
+0:? 'many' (global 1-element array of 2-element array of 3-element array of 4-element array of 5-element array of 6-element array of highp float)\r
+0:? 'gu' (global implicitly-sized array of 7-element array of highp float)\r
+0:? 'g4' (global 4-element array of 7-element array of highp float)\r
+0:? 'g5' (global 5-element array of 7-element array of highp float)\r
+0:? 'inArray' (in 2-element array of 3-element array of highp float)\r
+0:? 'outArray' (smooth out 2-element array of 3-element array of highp float)\r
+0:? 'ubaaname' (layout(column_major shared ) uniform 2-element array of 3-element array of block{layout(column_major shared ) uniform highp int a})\r
0:? 'gl_VertexID' (gl_VertexId highp int VertexId)\r
0:? 'gl_InstanceID' (gl_InstanceId highp int InstanceId)\r
\r
\r
\r
Shader version: 310\r
-0:? Sequence\r
+ERROR: node is still EOpNull!\r
0:8 Function Definition: f(b1;f1;u1[4];i1[3][2]; (global void)\r
0:8 Function Parameters: \r
0:8 'a' (in bool)\r
0:13 1 (const uint)\r
0:13 2 (const uint)\r
0:13 'd' (temp 3-element array of 2-element array of highp int)\r
+0:44 Function Definition: foo(f1[5][7]; (global 4-element array of 7-element array of highp float)\r
+0:44 Function Parameters: \r
+0:44 'a' (in 5-element array of 7-element array of highp float)\r
+0:? Sequence\r
+0:47 move second child to first child (temp 7-element array of highp float)\r
+0:47 'r' (temp 7-element array of highp float)\r
+0:47 direct index (temp 7-element array of highp float)\r
+0:47 'a' (in 5-element array of 7-element array of highp float)\r
+0:47 Constant:\r
+0:47 2 (const int)\r
+0:48 Constant:\r
+0:48 0.000000\r
+0:49 Constant:\r
+0:49 0.000000\r
+0:50 Branch: Return with expression\r
+0:50 Construct float (temp 4-element array of 7-element array of float)\r
+0:50 direct index (temp 7-element array of highp float)\r
+0:50 'a' (in 5-element array of 7-element array of highp float)\r
+0:50 Constant:\r
+0:50 0 (const int)\r
+0:50 direct index (temp 7-element array of highp float)\r
+0:50 'a' (in 5-element array of 7-element array of highp float)\r
+0:50 Constant:\r
+0:50 1 (const int)\r
+0:50 'r' (temp 7-element array of highp float)\r
+0:50 direct index (temp 7-element array of highp float)\r
+0:50 'a' (in 5-element array of 7-element array of highp float)\r
+0:50 Constant:\r
+0:50 3 (const int)\r
+0:51 Branch: Return with expression\r
+0:51 Construct float (temp 4-element array of 7-element array of float)\r
+0:51 direct index (temp 7-element array of highp float)\r
+0:51 'a' (in 5-element array of 7-element array of highp float)\r
+0:51 Constant:\r
+0:51 0 (const int)\r
+0:51 direct index (temp 7-element array of highp float)\r
+0:51 'a' (in 5-element array of 7-element array of highp float)\r
+0:51 Constant:\r
+0:51 1 (const int)\r
+0:51 'r' (temp 7-element array of highp float)\r
+0:51 direct index (temp 7-element array of highp float)\r
+0:51 'a' (in 5-element array of 7-element array of highp float)\r
+0:51 Constant:\r
+0:51 3 (const int)\r
+0:52 Branch: Return with expression\r
+0:52 Construct float (temp 4-element array of 7-element array of float)\r
+0:52 direct index (temp 7-element array of highp float)\r
+0:52 'a' (in 5-element array of 7-element array of highp float)\r
+0:52 Constant:\r
+0:52 0 (const int)\r
+0:52 direct index (temp 7-element array of highp float)\r
+0:52 'a' (in 5-element array of 7-element array of highp float)\r
+0:52 Constant:\r
+0:52 1 (const int)\r
+0:52 direct index (temp 7-element array of highp float)\r
+0:52 'a' (in 5-element array of 7-element array of highp float)\r
+0:52 Constant:\r
+0:52 2 (const int)\r
+0:52 direct index (temp 7-element array of highp float)\r
+0:52 'a' (in 5-element array of 7-element array of highp float)\r
+0:52 Constant:\r
+0:52 3 (const int)\r
+0:55 Function Definition: bar(f1[5][7]; (global void)\r
+0:55 Function Parameters: \r
+0:55 '' (in 5-element array of 7-element array of highp float)\r
+0:57 Function Definition: foo2( (global void)\r
+0:57 Function Parameters: \r
+0:? Sequence\r
+0:? Sequence\r
+0:62 move second child to first child (temp highp float)\r
+0:62 direct index (temp highp float)\r
+0:62 direct index (temp 2-element array of highp float)\r
+0:62 direct index (temp 4-element array of 2-element array of highp float)\r
+0:62 'gu' (temp 3-element array of 4-element array of 2-element array of highp float)\r
+0:62 Constant:\r
+0:62 2 (const int)\r
+0:62 Constant:\r
+0:62 4 (const int)\r
+0:62 Constant:\r
+0:62 1 (const int)\r
+0:62 Constant:\r
+0:62 4.000000\r
+0:64 Sequence\r
+0:64 move second child to first child (temp 3-element array of 2-element array of highp 4-component vector of float)\r
+0:64 'ca4' (temp 3-element array of 2-element array of highp 4-component vector of float)\r
+0:66 Constant:\r
+0:66 0.000000\r
+0:66 0.000000\r
+0:66 0.000000\r
+0:66 0.000000\r
+0:66 1.000000\r
+0:66 1.000000\r
+0:66 1.000000\r
+0:66 1.000000\r
+0:66 0.000000\r
+0:66 0.000000\r
+0:66 0.000000\r
+0:66 0.000000\r
+0:66 1.000000\r
+0:66 1.000000\r
+0:66 1.000000\r
+0:66 1.000000\r
+0:66 0.000000\r
+0:66 0.000000\r
+0:66 0.000000\r
+0:66 0.000000\r
+0:66 1.000000\r
+0:66 1.000000\r
+0:66 1.000000\r
+0:66 1.000000\r
+0:67 Sequence\r
+0:67 move second child to first child (temp 3-element array of 2-element array of highp 4-component vector of float)\r
+0:67 'caim' (temp 3-element array of 2-element array of highp 4-component vector of float)\r
+0:69 Constant:\r
+0:69 4.000000\r
+0:69 4.000000\r
+0:69 4.000000\r
+0:69 4.000000\r
+0:69 2.000000\r
+0:69 2.000000\r
+0:69 2.000000\r
+0:69 2.000000\r
+0:69 4.000000\r
+0:69 4.000000\r
+0:69 4.000000\r
+0:69 4.000000\r
+0:69 2.000000\r
+0:69 2.000000\r
+0:69 2.000000\r
+0:69 2.000000\r
+0:69 4.000000\r
+0:69 4.000000\r
+0:69 4.000000\r
+0:69 4.000000\r
+0:69 2.000000\r
+0:69 2.000000\r
+0:69 2.000000\r
+0:69 2.000000\r
+0:70 Sequence\r
+0:70 move second child to first child (temp 3-element array of 2-element array of highp 4-component vector of float)\r
+0:70 'caim2' (temp 3-element array of 2-element array of highp 4-component vector of float)\r
+0:72 Constant:\r
+0:72 4.000000\r
+0:72 4.000000\r
+0:72 4.000000\r
+0:72 4.000000\r
+0:72 2.000000\r
+0:72 2.000000\r
+0:72 2.000000\r
+0:72 2.000000\r
+0:72 4.000000\r
+0:72 4.000000\r
+0:72 4.000000\r
+0:72 4.000000\r
+0:72 2.000000\r
+0:72 2.000000\r
+0:72 2.000000\r
+0:72 2.000000\r
+0:72 4.000000\r
+0:72 4.000000\r
+0:72 4.000000\r
+0:72 4.000000\r
+0:72 2.000000\r
+0:72 2.000000\r
+0:72 2.000000\r
+0:72 2.000000\r
+0:73 Sequence\r
+0:73 move second child to first child (temp 3-element array of 2-element array of highp 4-component vector of float)\r
+0:73 'caim3' (temp 3-element array of 2-element array of highp 4-component vector of float)\r
+0:75 Constant:\r
+0:75 4.000000\r
+0:75 4.000000\r
+0:75 4.000000\r
+0:75 4.000000\r
+0:75 2.000000\r
+0:75 2.000000\r
+0:75 2.000000\r
+0:75 2.000000\r
+0:75 4.000000\r
+0:75 4.000000\r
+0:75 4.000000\r
+0:75 4.000000\r
+0:75 2.000000\r
+0:75 2.000000\r
+0:75 2.000000\r
+0:75 2.000000\r
+0:75 4.000000\r
+0:75 4.000000\r
+0:75 4.000000\r
+0:75 4.000000\r
+0:75 2.000000\r
+0:75 2.000000\r
+0:75 2.000000\r
+0:75 2.000000\r
+0:77 move second child to first child (temp 4-element array of 7-element array of highp float)\r
+0:77 'g4' (global 4-element array of 7-element array of highp float)\r
+0:77 Function Call: foo(f1[5][7]; (global 4-element array of 7-element array of highp float)\r
+0:77 'g5' (global 5-element array of 7-element array of highp float)\r
+0:78 'g5' (global 5-element array of 7-element array of highp float)\r
+0:79 'gu' (global 1-element array of 7-element array of highp float)\r
+0:81 Constant:\r
+0:81 0.000000\r
+0:82 Function Call: bar(f1[5][7]; (global void)\r
+0:82 'g5' (global 5-element array of 7-element array of highp float)\r
+0:84 Test condition and select (temp void)\r
+0:84 Condition\r
+0:84 Compare Equal (temp bool)\r
+0:84 Function Call: foo(f1[5][7]; (global 4-element array of 7-element array of highp float)\r
+0:84 'g5' (global 5-element array of 7-element array of highp float)\r
+0:84 'g4' (global 4-element array of 7-element array of highp float)\r
+0:84 true case is null\r
+0:86 Test condition and select (temp void)\r
+0:86 Condition\r
+0:86 Constant:\r
+0:86 false (const bool)\r
+0:86 true case is null\r
+0:90 move second child to first child (temp highp float)\r
+0:90 direct index (temp highp float)\r
+0:90 direct index (temp 7-element array of highp float)\r
+0:90 'u' (temp 5-element array of 7-element array of highp float)\r
+0:90 Constant:\r
+0:90 5 (const int)\r
+0:90 Constant:\r
+0:90 2 (const int)\r
+0:90 Constant:\r
+0:90 5.000000\r
+0:91 Function Call: foo(f1[5][7]; (global 4-element array of 7-element array of highp float)\r
+0:91 'u' (temp 5-element array of 7-element array of highp float)\r
+0:94 direct index (layout(column_major shared ) temp highp 4-component vector of float)\r
+0:94 v: direct index for structure (layout(column_major shared ) buffer implicitly-sized array of highp 4-component vector of float)\r
+0:94 direct index (layout(column_major shared ) temp block{layout(column_major shared ) buffer implicitly-sized array of highp float u, layout(column_major shared ) buffer implicitly-sized array of highp 4-component vector of float v})\r
+0:94 'name' (layout(column_major shared ) buffer 3-element array of block{layout(column_major shared ) buffer implicitly-sized array of highp float u, layout(column_major shared ) buffer implicitly-sized array of highp 4-component vector of float v})\r
+0:94 Constant:\r
+0:94 1 (const int)\r
+0:94 Constant:\r
+0:94 1 (const int)\r
+0:94 Constant:\r
+0:94 -1 (const int)\r
+0:95 move second child to first child (temp highp 4-component vector of float)\r
+0:95 direct index (layout(column_major shared ) temp highp 4-component vector of float)\r
+0:95 v: direct index for structure (layout(column_major shared ) buffer implicitly-sized array of highp 4-component vector of float)\r
+0:95 direct index (layout(column_major shared ) temp block{layout(column_major shared ) buffer implicitly-sized array of highp float u, layout(column_major shared ) buffer implicitly-sized array of highp 4-component vector of float v})\r
+0:95 'name' (layout(column_major shared ) buffer 3-element array of block{layout(column_major shared ) buffer implicitly-sized array of highp float u, layout(column_major shared ) buffer implicitly-sized array of highp 4-component vector of float v})\r
+0:95 Constant:\r
+0:95 1 (const int)\r
+0:95 Constant:\r
+0:95 1 (const int)\r
+0:95 Constant:\r
+0:95 1 (const int)\r
+0:95 Constant:\r
+0:95 4.300000\r
+0:95 4.300000\r
+0:95 4.300000\r
+0:95 4.300000\r
+0:96 v: direct index for structure (layout(column_major shared ) buffer implicitly-sized array of highp 4-component vector of float)\r
+0:96 direct index (layout(column_major shared ) temp block{layout(column_major shared ) buffer implicitly-sized array of highp float u, layout(column_major shared ) buffer implicitly-sized array of highp 4-component vector of float v})\r
+0:96 'name' (layout(column_major shared ) buffer 3-element array of block{layout(column_major shared ) buffer implicitly-sized array of highp float u, layout(column_major shared ) buffer implicitly-sized array of highp 4-component vector of float v})\r
+0:96 Constant:\r
+0:96 1 (const int)\r
+0:96 Constant:\r
+0:96 1 (const int)\r
+0:98 Constant:\r
+0:98 7 (const int)\r
+0:99 array length (temp highp int)\r
+0:99 v: direct index for structure (layout(column_major shared ) buffer implicitly-sized array of 7-element array of highp 4-component vector of float)\r
+0:99 direct index (layout(column_major shared ) temp block{layout(column_major shared ) buffer highp float u, layout(column_major shared ) buffer implicitly-sized array of 7-element array of highp 4-component vector of float v})\r
+0:99 'name3' (layout(column_major shared ) buffer 3-element array of block{layout(column_major shared ) buffer highp float u, layout(column_major shared ) buffer implicitly-sized array of 7-element array of highp 4-component vector of float v})\r
+0:99 Constant:\r
+0:99 0 (const int)\r
+0:99 Constant:\r
+0:99 1 (const int)\r
0:? Linker Objects\r
+0:? 'name' (layout(column_major shared ) buffer 3-element array of block{layout(column_major shared ) buffer implicitly-sized array of highp float u, layout(column_major shared ) buffer implicitly-sized array of highp 4-component vector of float v})\r
+0:? 'uname' (layout(column_major shared ) uniform 3-element array of block{layout(column_major shared ) uniform highp float u, layout(column_major shared ) uniform 1-element array of highp 4-component vector of float v})\r
+0:? 'name2' (layout(column_major shared ) buffer 3-element array of block{layout(column_major shared ) buffer highp float u, layout(column_major shared ) buffer implicitly-sized array of implicitly-sized array of highp 4-component vector of float v})\r
+0:? 'name3' (layout(column_major shared ) buffer 3-element array of block{layout(column_major shared ) buffer highp float u, layout(column_major shared ) buffer implicitly-sized array of 7-element array of highp 4-component vector of float v})\r
+0:? 'many' (global 1-element array of 2-element array of 3-element array of 4-element array of 5-element array of 6-element array of highp float)\r
+0:? 'gu' (global 1-element array of 7-element array of highp float)\r
+0:? 'g4' (global 4-element array of 7-element array of highp float)\r
+0:? 'g5' (global 5-element array of 7-element array of highp float)\r
+0:? 'inArray' (in 2-element array of 3-element array of highp float)\r
+0:? 'outArray' (smooth out 2-element array of 3-element array of highp float)\r
+0:? 'ubaaname' (layout(column_major shared ) uniform 2-element array of 3-element array of block{layout(column_major shared ) uniform highp int a})\r
0:? 'gl_VertexID' (gl_VertexId highp int VertexId)\r
0:? 'gl_InstanceID' (gl_InstanceId highp int InstanceId)\r
\r
310implicitSizeArrayError.vert\r
Warning, version 310 is not yet complete; most version-specific features are present, but some are missing.\r
-ERROR: 0:3: 'implicitly-sized array in a block' : not supported with this profile: es\r
+ERROR: 0:3: '' : array size required \r
ERROR: 1 compilation errors. No code generated.\r
\r
\r
Warning, version 430 is not yet complete; most version-specific features are present, but some are missing.\r
ERROR: 0:4: 'local_size' : cannot change previously set size \r
ERROR: 0:5: 'local_size' : too large; see gl_MaxComputeWorkGroupSize \r
-ERROR: 0:23: 'values' : only the last member of a buffer block can be run-time sized \r
ERROR: 0:43: 'in' : global storage input qualifier cannot be used in a compute shader \r
ERROR: 0:43: 'location qualifier on input' : not supported in this stage: compute\r
ERROR: 0:44: 'in' : global storage input qualifier cannot be used in a compute shader \r
ERROR: 0:77: '=' : cannot convert from 'temp double' to 'temp int'\r
ERROR: 0:81: 'input block' : not supported in this stage: compute\r
ERROR: 0:85: 'output block' : not supported in this stage: compute\r
-ERROR: 17 compilation errors. No code generated.\r
+ERROR: 16 compilation errors. No code generated.\r
\r
\r
Shader version: 430\r
return false;
}
+ bool isImplicit() const { return getOuterSize() == UnsizedArraySize || isInnerImplicit(); }
void addOuterSizes(const TArraySizes& s) { sizes.push_front(s.sizes); }
void dereference() { sizes.pop_front(); }
void copyDereferenced(const TArraySizes& rhs)
// 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 "3.0.747"
+#define GLSLANG_REVISION "3.0.748"
#define GLSLANG_DATE "11-Sep-2015"
else if (type.isStruct())
requireProfile(loc, ~EEsProfile, "fragment-shader array-of-struct input");
}
+ if (type.getQualifier().storage == EvqVaryingOut && language == EShLangFragment) {
+ if (type.isArrayOfArrays())
+ requireProfile(loc, ~EEsProfile, "fragment-shader array-of-array output");
+ }
return false;
}
//
-// Require array to have size
+// Require array to be completely sized
//
-void TParseContext::arraySizeRequiredCheck(const TSourceLoc& loc, int size)
+void TParseContext::arraySizeRequiredCheck(const TSourceLoc& loc, const TArraySizes& arraySizes)
{
- if (size == UnsizedArraySize)
+ if (arraySizes.isImplicit())
error(loc, "array size required", "", "");
}
const TTypeList& structure = *type.getStruct();
for (int m = 0; m < (int)structure.size(); ++m) {
const TType& member = *structure[m].type;
- if (member.isArray() && ! member.isExplicitlySizedArray())
- arraySizeRequiredCheck(structure[m].loc, 0);
+ if (member.isArray())
+ arraySizeRequiredCheck(structure[m].loc, *member.getArraySizes());
}
}
-void TParseContext::arrayUnsizedCheck(const TSourceLoc& loc, const TQualifier& qualifier, const TArraySizes* arraySizes, bool initializer)
+void TParseContext::arrayUnsizedCheck(const TSourceLoc& loc, const TQualifier& qualifier, const TArraySizes* arraySizes, bool initializer, bool lastMember)
{
assert(arraySizes);
// for ES, if size isn't coming from an initializer, it has to be explicitly declared now,
// with very few exceptions
+
+ // last member of ssbo block exception:
+ if (qualifier.storage == EvqBuffer && lastMember)
+ return;
+
+ // implicitly-sized io exceptions:
switch (language) {
case EShLangGeometry:
if (qualifier.storage == EvqVaryingIn)
break;
}
- arraySizeRequiredCheck(loc, arraySizes->getOuterSize());
+ arraySizeRequiredCheck(loc, *arraySizes);
}
void TParseContext::arrayOfArrayVersionCheck(const TSourceLoc& loc)
arrayDimMerge(type, arraySizes);
// Check that implicit sizing is only where allowed.
- arrayUnsizedCheck(loc, type.getQualifier(), &type.getArraySizes(), initializer != nullptr);
+ arrayUnsizedCheck(loc, type.getQualifier(), &type.getArraySizes(), initializer != nullptr, false);
if (! arrayQualifierError(loc, type.getQualifier()) && ! arrayError(loc, type))
declareArray(loc, identifier, type, symbol, newDeclaration);
blockStageIoCheck(loc, currentBlockQualifier);
blockQualifierCheck(loc, currentBlockQualifier);
if (arraySizes) {
- arrayUnsizedCheck(loc, currentBlockQualifier, arraySizes, false);
+ arrayUnsizedCheck(loc, currentBlockQualifier, arraySizes, false, false);
arrayDimCheck(loc, arraySizes, 0);
+ if (arraySizes->getNumDims() > 1)
+ requireProfile(loc, ~EEsProfile, "array-of-array of block");
}
// fix and check for member storage qualifiers and types that don't belong within a block
memberQualifier.storage = currentBlockQualifier.storage;
if ((currentBlockQualifier.storage == EvqUniform || currentBlockQualifier.storage == EvqBuffer) && (memberQualifier.isInterpolation() || memberQualifier.isAuxiliary()))
error(memberLoc, "member of uniform or buffer block cannot have an auxiliary or interpolation qualifier", memberType.getFieldName().c_str(), "");
- if (memberType.isRuntimeSizedArray() && member < typeList.size() - 1)
- error(memberLoc, "only the last member of a buffer block can be run-time sized", memberType.getFieldName().c_str(), "");
- if (memberType.isImplicitlySizedArray())
- requireProfile(memberLoc, ~EEsProfile, "implicitly-sized array in a block");
+ if (memberType.isArray())
+ arrayUnsizedCheck(memberLoc, currentBlockQualifier, &memberType.getArraySizes(), false, member == typeList.size() - 1);
if (memberQualifier.hasOffset()) {
requireProfile(memberLoc, ~EEsProfile, "offset on block member");
profileRequires(memberLoc, ~EEsProfile, 440, E_GL_ARB_enhanced_layouts, "offset on block member");
void arraySizeCheck(const TSourceLoc&, TIntermTyped* expr, int& size);
bool arrayQualifierError(const TSourceLoc&, const TQualifier&);
bool arrayError(const TSourceLoc&, const TType&);
- void arraySizeRequiredCheck(const TSourceLoc&, int size);
+ void arraySizeRequiredCheck(const TSourceLoc&, const TArraySizes&);
void structArrayCheck(const TSourceLoc&, const TType& structure);
- void arrayUnsizedCheck(const TSourceLoc&, const TQualifier&, const TArraySizes*, bool initializer);
+ void arrayUnsizedCheck(const TSourceLoc&, const TQualifier&, const TArraySizes*, bool initializer, bool lastMember);
void arrayOfArrayVersionCheck(const TSourceLoc&);
void arrayDimCheck(const TSourceLoc&, const TArraySizes* sizes1, const TArraySizes* sizes2);
void arrayDimCheck(const TSourceLoc&, const TType*, const TArraySizes*);
GetStorageQualifierString($1.qualifier.storage), "");
}
if ($1.arraySizes)
- parseContext.arraySizeRequiredCheck($1.loc, $1.arraySizes->getOuterSize());
+ parseContext.arraySizeRequiredCheck($1.loc, *$1.arraySizes);
// Add the function as a prototype after parsing it (we do not support recursion)
TFunction *function;
if ($1.arraySizes) {
parseContext.profileRequires($1.loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type");
parseContext.profileRequires($1.loc, EEsProfile, 300, 0, "arrayed type");
- parseContext.arraySizeRequiredCheck($1.loc, $1.arraySizes->getOuterSize());
+ parseContext.arraySizeRequiredCheck($1.loc, *$1.arraySizes);
}
if ($1.basicType == EbtVoid) {
parseContext.error($2.loc, "illegal use of type 'void'", $2.string->c_str(), "");
if ($1.arraySizes) {
parseContext.profileRequires($1.loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type");
parseContext.profileRequires($1.loc, EEsProfile, 300, 0, "arrayed type");
- parseContext.arraySizeRequiredCheck($1.loc, $1.arraySizes->getOuterSize());
+ parseContext.arraySizeRequiredCheck($1.loc, *$1.arraySizes);
}
parseContext.arrayDimCheck($2.loc, $1.arraySizes, $3.arraySizes);
- parseContext.arraySizeRequiredCheck($3.loc, $3.arraySizes->getOuterSize());
+ parseContext.arraySizeRequiredCheck($3.loc, *$3.arraySizes);
parseContext.reservedErrorCheck($2.loc, *$2.string);
$1.arraySizes = $3.arraySizes;
TParameter param = { 0, new TType($1) };
$$.param = param;
if ($1.arraySizes)
- parseContext.arraySizeRequiredCheck($1.loc, $1.arraySizes->getOuterSize());
+ parseContext.arraySizeRequiredCheck($1.loc, *$1.arraySizes);
}
;
parseContext.profileRequires($1.loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type");
parseContext.profileRequires($1.loc, EEsProfile, 300, 0, "arrayed type");
if (parseContext.profile == EEsProfile)
- parseContext.arraySizeRequiredCheck($1.loc, $1.arraySizes->getOuterSize());
+ parseContext.arraySizeRequiredCheck($1.loc, *$1.arraySizes);
}
$$ = $2;
parseContext.profileRequires($2.loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type");
parseContext.profileRequires($2.loc, EEsProfile, 300, 0, "arrayed type");
if (parseContext.profile == EEsProfile)
- parseContext.arraySizeRequiredCheck($2.loc, $2.arraySizes->getOuterSize());
+ parseContext.arraySizeRequiredCheck($2.loc, *$2.arraySizes);
}
$$ = $3;