summaryrefslogtreecommitdiffstats
path: root/src/glsl
diff options
context:
space:
mode:
Diffstat (limited to 'src/glsl')
-rw-r--r--src/glsl/glcpp/glcpp-parse.c2
-rw-r--r--src/glsl/glsl_lexer.cpp32
-rw-r--r--src/glsl/glsl_parser.cpp311
3 files changed, 180 insertions, 165 deletions
diff --git a/src/glsl/glcpp/glcpp-parse.c b/src/glsl/glcpp/glcpp-parse.c
index fa594378189..8567bda1e5d 100644
--- a/src/glsl/glcpp/glcpp-parse.c
+++ b/src/glsl/glcpp/glcpp-parse.c
@@ -3449,6 +3449,8 @@ glcpp_parser_create (const struct gl_extensions *extensions, int api)
if (extensions->ARB_explicit_attrib_location)
add_builtin_define(parser, "GL_ARB_explicit_attrib_location", 1);
+ if (extensions->AMD_conservative_depth)
+ add_builtin_define(parser, "GL_AMD_conservative_depth", 1);
}
language_version = 110;
diff --git a/src/glsl/glsl_lexer.cpp b/src/glsl/glsl_lexer.cpp
index 7c0a51b99bf..d20eefb6794 100644
--- a/src/glsl/glsl_lexer.cpp
+++ b/src/glsl/glsl_lexer.cpp
@@ -54,6 +54,7 @@ typedef int flex_int32_t;
typedef unsigned char flex_uint8_t;
typedef unsigned short int flex_uint16_t;
typedef unsigned int flex_uint32_t;
+#endif /* ! C99 */
/* Limits of integral types. */
#ifndef INT8_MIN
@@ -84,8 +85,6 @@ typedef unsigned int flex_uint32_t;
#define UINT32_MAX (4294967295U)
#endif
-#endif /* ! C99 */
-
#endif /* ! FLEXINT_H */
#ifdef __cplusplus
@@ -159,15 +158,7 @@ typedef void* yyscan_t;
/* Size of default input buffer. */
#ifndef YY_BUF_SIZE
-#ifdef __ia64__
-/* On IA-64, the buffer size is 16k, not 8k.
- * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
- * Ditto for the __ia64__ case accordingly.
- */
-#define YY_BUF_SIZE 32768
-#else
#define YY_BUF_SIZE 16384
-#endif /* __ia64__ */
#endif
/* The state buf must be large enough to hold one state per character in the main buffer.
@@ -1076,7 +1067,7 @@ static yyconst flex_int16_t yy_chk[1283] =
*/
#define ES yyextra->es_shader
-#line 1080 "glsl_lexer.cpp"
+#line 1071 "glsl_lexer.cpp"
#define INITIAL 0
#define PP 1
@@ -1163,6 +1154,10 @@ int _mesa_glsl_get_lineno (yyscan_t yyscanner );
void _mesa_glsl_set_lineno (int line_number ,yyscan_t yyscanner );
+int _mesa_glsl_get_column (yyscan_t yyscanner );
+
+void _mesa_glsl_set_column (int column_no ,yyscan_t yyscanner );
+
YYSTYPE * _mesa_glsl_get_lval (yyscan_t yyscanner );
void _mesa_glsl_set_lval (YYSTYPE * yylval_param ,yyscan_t yyscanner );
@@ -1203,12 +1198,7 @@ static int input (yyscan_t yyscanner );
/* Amount of stuff to slurp up with each read. */
#ifndef YY_READ_BUF_SIZE
-#ifdef __ia64__
-/* On IA-64, the buffer size is 16k, not 8k */
-#define YY_READ_BUF_SIZE 16384
-#else
#define YY_READ_BUF_SIZE 8192
-#endif /* __ia64__ */
#endif
/* Copy whatever the last rule matched to the standard output. */
@@ -1227,7 +1217,7 @@ static int input (yyscan_t yyscanner );
if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
{ \
int c = '*'; \
- size_t n; \
+ unsigned n; \
for ( n = 0; n < max_size && \
(c = getc( yyin )) != EOF && c != '\n'; ++n ) \
buf[n] = (char) c; \
@@ -1318,7 +1308,7 @@ YY_DECL
#line 95 "glsl_lexer.lpp"
-#line 1322 "glsl_lexer.cpp"
+#line 1312 "glsl_lexer.cpp"
yylval = yylval_param;
@@ -2560,7 +2550,7 @@ YY_RULE_SETUP
#line 426 "glsl_lexer.lpp"
ECHO;
YY_BREAK
-#line 2564 "glsl_lexer.cpp"
+#line 2554 "glsl_lexer.cpp"
case YY_STATE_EOF(INITIAL):
case YY_STATE_EOF(PP):
case YY_STATE_EOF(PRAGMA):
@@ -3296,8 +3286,8 @@ YY_BUFFER_STATE _mesa_glsl__scan_string (yyconst char * yystr , yyscan_t yyscann
/** Setup the input buffer state to scan the given bytes. The next call to _mesa_glsl_lex() will
* scan from a @e copy of @a bytes.
- * @param yybytes the byte buffer to scan
- * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
+ * @param bytes the byte buffer to scan
+ * @param len the number of bytes in the buffer pointed to by @a bytes.
* @param yyscanner The scanner object.
* @return the newly allocated buffer state object.
*/
diff --git a/src/glsl/glsl_parser.cpp b/src/glsl/glsl_parser.cpp
index 8b196ae7fc6..360676cf87b 100644
--- a/src/glsl/glsl_parser.cpp
+++ b/src/glsl/glsl_parser.cpp
@@ -821,20 +821,20 @@ static const yytype_uint16 yyrline[] =
770, 777, 782, 793, 806, 809, 814, 819, 828, 832,
833, 842, 851, 860, 869, 878, 891, 902, 911, 920,
929, 938, 947, 956, 970, 977, 988, 995, 996, 1015,
- 1044, 1085, 1090, 1095, 1103, 1111, 1112, 1113, 1118, 1119,
- 1124, 1129, 1135, 1143, 1148, 1153, 1158, 1164, 1169, 1174,
- 1179, 1184, 1192, 1196, 1204, 1205, 1211, 1220, 1226, 1232,
- 1241, 1242, 1243, 1244, 1245, 1246, 1247, 1248, 1249, 1250,
- 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 1259, 1260,
- 1261, 1262, 1263, 1264, 1265, 1266, 1267, 1268, 1269, 1270,
- 1271, 1272, 1273, 1274, 1275, 1276, 1277, 1278, 1279, 1280,
- 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 1290,
- 1291, 1295, 1305, 1315, 1328, 1334, 1343, 1348, 1356, 1371,
- 1376, 1384, 1390, 1399, 1403, 1409, 1410, 1414, 1415, 1416,
- 1417, 1418, 1419, 1420, 1424, 1430, 1439, 1440, 1444, 1450,
- 1459, 1469, 1481, 1487, 1496, 1505, 1510, 1518, 1522, 1536,
- 1540, 1541, 1545, 1552, 1559, 1569, 1570, 1574, 1576, 1582,
- 1587, 1596, 1602, 1608, 1614, 1620, 1629, 1630, 1631, 1635
+ 1067, 1108, 1113, 1118, 1126, 1134, 1135, 1136, 1141, 1142,
+ 1147, 1152, 1158, 1166, 1171, 1176, 1181, 1187, 1192, 1197,
+ 1202, 1207, 1215, 1219, 1227, 1228, 1234, 1243, 1249, 1255,
+ 1264, 1265, 1266, 1267, 1268, 1269, 1270, 1271, 1272, 1273,
+ 1274, 1275, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1283,
+ 1284, 1285, 1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293,
+ 1294, 1295, 1296, 1297, 1298, 1299, 1300, 1301, 1302, 1303,
+ 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313,
+ 1314, 1318, 1328, 1338, 1351, 1357, 1366, 1371, 1379, 1394,
+ 1399, 1407, 1413, 1422, 1426, 1432, 1433, 1437, 1438, 1439,
+ 1440, 1441, 1442, 1443, 1447, 1453, 1462, 1463, 1467, 1473,
+ 1482, 1492, 1504, 1510, 1519, 1528, 1533, 1541, 1545, 1559,
+ 1563, 1564, 1568, 1575, 1582, 1592, 1593, 1597, 1599, 1605,
+ 1610, 1619, 1625, 1631, 1637, 1643, 1652, 1653, 1654, 1658
};
#endif
@@ -3946,7 +3946,8 @@ yyreduce:
memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
- if (state->ARB_fragment_coord_conventions_enable) {
+ /* Layout qualifiers for ARB_fragment_coord_conventions. */
+ if (!got_one && state->ARB_fragment_coord_conventions_enable) {
if (strcmp((yyvsp[(1) - (1)].identifier), "origin_upper_left") == 0) {
got_one = true;
(yyval.type_qualifier).flags.q.origin_upper_left = 1;
@@ -3954,19 +3955,41 @@ yyreduce:
got_one = true;
(yyval.type_qualifier).flags.q.pixel_center_integer = 1;
}
+
+ if (got_one && state->ARB_fragment_coord_conventions_warn) {
+ _mesa_glsl_warning(& (yylsp[(1) - (1)]), state,
+ "GL_ARB_fragment_coord_conventions layout "
+ "identifier `%s' used\n", (yyvsp[(1) - (1)].identifier));
+ }
+ }
+
+ /* Layout qualifiers for AMD_conservative_depth. */
+ if (!got_one && state->AMD_conservative_depth_enable) {
+ if (strcmp((yyvsp[(1) - (1)].identifier), "depth_any") == 0) {
+ got_one = true;
+ (yyval.type_qualifier).flags.q.depth_any = 1;
+ } else if (strcmp((yyvsp[(1) - (1)].identifier), "depth_greater") == 0) {
+ got_one = true;
+ (yyval.type_qualifier).flags.q.depth_greater = 1;
+ } else if (strcmp((yyvsp[(1) - (1)].identifier), "depth_less") == 0) {
+ got_one = true;
+ (yyval.type_qualifier).flags.q.depth_less = 1;
+ } else if (strcmp((yyvsp[(1) - (1)].identifier), "depth_unchanged") == 0) {
+ got_one = true;
+ (yyval.type_qualifier).flags.q.depth_unchanged = 1;
+ }
+
+ if (got_one && state->AMD_conservative_depth_warn) {
+ _mesa_glsl_warning(& (yylsp[(1) - (1)]), state,
+ "GL_AMD_conservative_depth "
+ "layout qualifier `%s' is used\n", (yyvsp[(1) - (1)].identifier));
+ }
}
- /* If the identifier didn't match any known layout identifiers,
- * emit an error.
- */
if (!got_one) {
_mesa_glsl_error(& (yylsp[(1) - (1)]), state, "unrecognized layout identifier "
"`%s'\n", (yyvsp[(1) - (1)].identifier));
YYERROR;
- } else if (state->ARB_fragment_coord_conventions_warn) {
- _mesa_glsl_warning(& (yylsp[(1) - (1)]), state,
- "GL_ARB_fragment_coord_conventions layout "
- "identifier `%s' used\n", (yyvsp[(1) - (1)].identifier));
}
;}
break;
@@ -3974,7 +3997,7 @@ yyreduce:
case 140:
/* Line 1464 of yacc.c */
-#line 1045 "glsl_parser.ypp"
+#line 1068 "glsl_parser.ypp"
{
bool got_one = false;
@@ -4017,7 +4040,7 @@ yyreduce:
case 141:
/* Line 1464 of yacc.c */
-#line 1086 "glsl_parser.ypp"
+#line 1109 "glsl_parser.ypp"
{
memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
(yyval.type_qualifier).flags.q.smooth = 1;
@@ -4027,7 +4050,7 @@ yyreduce:
case 142:
/* Line 1464 of yacc.c */
-#line 1091 "glsl_parser.ypp"
+#line 1114 "glsl_parser.ypp"
{
memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
(yyval.type_qualifier).flags.q.flat = 1;
@@ -4037,7 +4060,7 @@ yyreduce:
case 143:
/* Line 1464 of yacc.c */
-#line 1096 "glsl_parser.ypp"
+#line 1119 "glsl_parser.ypp"
{
memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
(yyval.type_qualifier).flags.q.noperspective = 1;
@@ -4047,7 +4070,7 @@ yyreduce:
case 144:
/* Line 1464 of yacc.c */
-#line 1104 "glsl_parser.ypp"
+#line 1127 "glsl_parser.ypp"
{
memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
(yyval.type_qualifier).flags.q.constant = 1;
@@ -4057,7 +4080,7 @@ yyreduce:
case 147:
/* Line 1464 of yacc.c */
-#line 1114 "glsl_parser.ypp"
+#line 1137 "glsl_parser.ypp"
{
(yyval.type_qualifier) = (yyvsp[(1) - (2)].type_qualifier);
(yyval.type_qualifier).flags.i |= (yyvsp[(2) - (2)].type_qualifier).flags.i;
@@ -4067,7 +4090,7 @@ yyreduce:
case 149:
/* Line 1464 of yacc.c */
-#line 1120 "glsl_parser.ypp"
+#line 1143 "glsl_parser.ypp"
{
(yyval.type_qualifier) = (yyvsp[(1) - (2)].type_qualifier);
(yyval.type_qualifier).flags.i |= (yyvsp[(2) - (2)].type_qualifier).flags.i;
@@ -4077,7 +4100,7 @@ yyreduce:
case 150:
/* Line 1464 of yacc.c */
-#line 1125 "glsl_parser.ypp"
+#line 1148 "glsl_parser.ypp"
{
(yyval.type_qualifier) = (yyvsp[(2) - (2)].type_qualifier);
(yyval.type_qualifier).flags.q.invariant = 1;
@@ -4087,7 +4110,7 @@ yyreduce:
case 151:
/* Line 1464 of yacc.c */
-#line 1130 "glsl_parser.ypp"
+#line 1153 "glsl_parser.ypp"
{
(yyval.type_qualifier) = (yyvsp[(2) - (3)].type_qualifier);
(yyval.type_qualifier).flags.i |= (yyvsp[(3) - (3)].type_qualifier).flags.i;
@@ -4098,7 +4121,7 @@ yyreduce:
case 152:
/* Line 1464 of yacc.c */
-#line 1136 "glsl_parser.ypp"
+#line 1159 "glsl_parser.ypp"
{
memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
(yyval.type_qualifier).flags.q.invariant = 1;
@@ -4108,7 +4131,7 @@ yyreduce:
case 153:
/* Line 1464 of yacc.c */
-#line 1144 "glsl_parser.ypp"
+#line 1167 "glsl_parser.ypp"
{
memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
(yyval.type_qualifier).flags.q.constant = 1;
@@ -4118,7 +4141,7 @@ yyreduce:
case 154:
/* Line 1464 of yacc.c */
-#line 1149 "glsl_parser.ypp"
+#line 1172 "glsl_parser.ypp"
{
memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
(yyval.type_qualifier).flags.q.attribute = 1;
@@ -4128,7 +4151,7 @@ yyreduce:
case 155:
/* Line 1464 of yacc.c */
-#line 1154 "glsl_parser.ypp"
+#line 1177 "glsl_parser.ypp"
{
memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
(yyval.type_qualifier).flags.q.varying = 1;
@@ -4138,7 +4161,7 @@ yyreduce:
case 156:
/* Line 1464 of yacc.c */
-#line 1159 "glsl_parser.ypp"
+#line 1182 "glsl_parser.ypp"
{
memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
(yyval.type_qualifier).flags.q.centroid = 1;
@@ -4149,7 +4172,7 @@ yyreduce:
case 157:
/* Line 1464 of yacc.c */
-#line 1165 "glsl_parser.ypp"
+#line 1188 "glsl_parser.ypp"
{
memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
(yyval.type_qualifier).flags.q.in = 1;
@@ -4159,7 +4182,7 @@ yyreduce:
case 158:
/* Line 1464 of yacc.c */
-#line 1170 "glsl_parser.ypp"
+#line 1193 "glsl_parser.ypp"
{
memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
(yyval.type_qualifier).flags.q.out = 1;
@@ -4169,7 +4192,7 @@ yyreduce:
case 159:
/* Line 1464 of yacc.c */
-#line 1175 "glsl_parser.ypp"
+#line 1198 "glsl_parser.ypp"
{
memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
(yyval.type_qualifier).flags.q.centroid = 1; (yyval.type_qualifier).flags.q.in = 1;
@@ -4179,7 +4202,7 @@ yyreduce:
case 160:
/* Line 1464 of yacc.c */
-#line 1180 "glsl_parser.ypp"
+#line 1203 "glsl_parser.ypp"
{
memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
(yyval.type_qualifier).flags.q.centroid = 1; (yyval.type_qualifier).flags.q.out = 1;
@@ -4189,7 +4212,7 @@ yyreduce:
case 161:
/* Line 1464 of yacc.c */
-#line 1185 "glsl_parser.ypp"
+#line 1208 "glsl_parser.ypp"
{
memset(& (yyval.type_qualifier), 0, sizeof((yyval.type_qualifier)));
(yyval.type_qualifier).flags.q.uniform = 1;
@@ -4199,7 +4222,7 @@ yyreduce:
case 162:
/* Line 1464 of yacc.c */
-#line 1193 "glsl_parser.ypp"
+#line 1216 "glsl_parser.ypp"
{
(yyval.type_specifier) = (yyvsp[(1) - (1)].type_specifier);
;}
@@ -4208,7 +4231,7 @@ yyreduce:
case 163:
/* Line 1464 of yacc.c */
-#line 1197 "glsl_parser.ypp"
+#line 1220 "glsl_parser.ypp"
{
(yyval.type_specifier) = (yyvsp[(2) - (2)].type_specifier);
(yyval.type_specifier)->precision = (yyvsp[(1) - (2)].n);
@@ -4218,7 +4241,7 @@ yyreduce:
case 165:
/* Line 1464 of yacc.c */
-#line 1206 "glsl_parser.ypp"
+#line 1229 "glsl_parser.ypp"
{
(yyval.type_specifier) = (yyvsp[(1) - (3)].type_specifier);
(yyval.type_specifier)->is_array = true;
@@ -4229,7 +4252,7 @@ yyreduce:
case 166:
/* Line 1464 of yacc.c */
-#line 1212 "glsl_parser.ypp"
+#line 1235 "glsl_parser.ypp"
{
(yyval.type_specifier) = (yyvsp[(1) - (4)].type_specifier);
(yyval.type_specifier)->is_array = true;
@@ -4240,7 +4263,7 @@ yyreduce:
case 167:
/* Line 1464 of yacc.c */
-#line 1221 "glsl_parser.ypp"
+#line 1244 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.type_specifier) = new(ctx) ast_type_specifier((yyvsp[(1) - (1)].n));
@@ -4251,7 +4274,7 @@ yyreduce:
case 168:
/* Line 1464 of yacc.c */
-#line 1227 "glsl_parser.ypp"
+#line 1250 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.type_specifier) = new(ctx) ast_type_specifier((yyvsp[(1) - (1)].struct_specifier));
@@ -4262,7 +4285,7 @@ yyreduce:
case 169:
/* Line 1464 of yacc.c */
-#line 1233 "glsl_parser.ypp"
+#line 1256 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.type_specifier) = new(ctx) ast_type_specifier((yyvsp[(1) - (1)].identifier));
@@ -4273,364 +4296,364 @@ yyreduce:
case 170:
/* Line 1464 of yacc.c */
-#line 1241 "glsl_parser.ypp"
+#line 1264 "glsl_parser.ypp"
{ (yyval.n) = ast_void; ;}
break;
case 171:
/* Line 1464 of yacc.c */
-#line 1242 "glsl_parser.ypp"
+#line 1265 "glsl_parser.ypp"
{ (yyval.n) = ast_float; ;}
break;
case 172:
/* Line 1464 of yacc.c */
-#line 1243 "glsl_parser.ypp"
+#line 1266 "glsl_parser.ypp"
{ (yyval.n) = ast_int; ;}
break;
case 173:
/* Line 1464 of yacc.c */
-#line 1244 "glsl_parser.ypp"
+#line 1267 "glsl_parser.ypp"
{ (yyval.n) = ast_uint; ;}
break;
case 174:
/* Line 1464 of yacc.c */
-#line 1245 "glsl_parser.ypp"
+#line 1268 "glsl_parser.ypp"
{ (yyval.n) = ast_bool; ;}
break;
case 175:
/* Line 1464 of yacc.c */
-#line 1246 "glsl_parser.ypp"
+#line 1269 "glsl_parser.ypp"
{ (yyval.n) = ast_vec2; ;}
break;
case 176:
/* Line 1464 of yacc.c */
-#line 1247 "glsl_parser.ypp"
+#line 1270 "glsl_parser.ypp"
{ (yyval.n) = ast_vec3; ;}
break;
case 177:
/* Line 1464 of yacc.c */
-#line 1248 "glsl_parser.ypp"
+#line 1271 "glsl_parser.ypp"
{ (yyval.n) = ast_vec4; ;}
break;
case 178:
/* Line 1464 of yacc.c */
-#line 1249 "glsl_parser.ypp"
+#line 1272 "glsl_parser.ypp"
{ (yyval.n) = ast_bvec2; ;}
break;
case 179:
/* Line 1464 of yacc.c */
-#line 1250 "glsl_parser.ypp"
+#line 1273 "glsl_parser.ypp"
{ (yyval.n) = ast_bvec3; ;}
break;
case 180:
/* Line 1464 of yacc.c */
-#line 1251 "glsl_parser.ypp"
+#line 1274 "glsl_parser.ypp"
{ (yyval.n) = ast_bvec4; ;}
break;
case 181:
/* Line 1464 of yacc.c */
-#line 1252 "glsl_parser.ypp"
+#line 1275 "glsl_parser.ypp"
{ (yyval.n) = ast_ivec2; ;}
break;
case 182:
/* Line 1464 of yacc.c */
-#line 1253 "glsl_parser.ypp"
+#line 1276 "glsl_parser.ypp"
{ (yyval.n) = ast_ivec3; ;}
break;
case 183:
/* Line 1464 of yacc.c */
-#line 1254 "glsl_parser.ypp"
+#line 1277 "glsl_parser.ypp"
{ (yyval.n) = ast_ivec4; ;}
break;
case 184:
/* Line 1464 of yacc.c */
-#line 1255 "glsl_parser.ypp"
+#line 1278 "glsl_parser.ypp"
{ (yyval.n) = ast_uvec2; ;}
break;
case 185:
/* Line 1464 of yacc.c */
-#line 1256 "glsl_parser.ypp"
+#line 1279 "glsl_parser.ypp"
{ (yyval.n) = ast_uvec3; ;}
break;
case 186:
/* Line 1464 of yacc.c */
-#line 1257 "glsl_parser.ypp"
+#line 1280 "glsl_parser.ypp"
{ (yyval.n) = ast_uvec4; ;}
break;
case 187:
/* Line 1464 of yacc.c */
-#line 1258 "glsl_parser.ypp"
+#line 1281 "glsl_parser.ypp"
{ (yyval.n) = ast_mat2; ;}
break;
case 188:
/* Line 1464 of yacc.c */
-#line 1259 "glsl_parser.ypp"
+#line 1282 "glsl_parser.ypp"
{ (yyval.n) = ast_mat2x3; ;}
break;
case 189:
/* Line 1464 of yacc.c */
-#line 1260 "glsl_parser.ypp"
+#line 1283 "glsl_parser.ypp"
{ (yyval.n) = ast_mat2x4; ;}
break;
case 190:
/* Line 1464 of yacc.c */
-#line 1261 "glsl_parser.ypp"
+#line 1284 "glsl_parser.ypp"
{ (yyval.n) = ast_mat3x2; ;}
break;
case 191:
/* Line 1464 of yacc.c */
-#line 1262 "glsl_parser.ypp"
+#line 1285 "glsl_parser.ypp"
{ (yyval.n) = ast_mat3; ;}
break;
case 192:
/* Line 1464 of yacc.c */
-#line 1263 "glsl_parser.ypp"
+#line 1286 "glsl_parser.ypp"
{ (yyval.n) = ast_mat3x4; ;}
break;
case 193:
/* Line 1464 of yacc.c */
-#line 1264 "glsl_parser.ypp"
+#line 1287 "glsl_parser.ypp"
{ (yyval.n) = ast_mat4x2; ;}
break;
case 194:
/* Line 1464 of yacc.c */
-#line 1265 "glsl_parser.ypp"
+#line 1288 "glsl_parser.ypp"
{ (yyval.n) = ast_mat4x3; ;}
break;
case 195:
/* Line 1464 of yacc.c */
-#line 1266 "glsl_parser.ypp"
+#line 1289 "glsl_parser.ypp"
{ (yyval.n) = ast_mat4; ;}
break;
case 196:
/* Line 1464 of yacc.c */
-#line 1267 "glsl_parser.ypp"
+#line 1290 "glsl_parser.ypp"
{ (yyval.n) = ast_sampler1d; ;}
break;
case 197:
/* Line 1464 of yacc.c */
-#line 1268 "glsl_parser.ypp"
+#line 1291 "glsl_parser.ypp"
{ (yyval.n) = ast_sampler2d; ;}
break;
case 198:
/* Line 1464 of yacc.c */
-#line 1269 "glsl_parser.ypp"
+#line 1292 "glsl_parser.ypp"
{ (yyval.n) = ast_sampler2drect; ;}
break;
case 199:
/* Line 1464 of yacc.c */
-#line 1270 "glsl_parser.ypp"
+#line 1293 "glsl_parser.ypp"
{ (yyval.n) = ast_sampler3d; ;}
break;
case 200:
/* Line 1464 of yacc.c */
-#line 1271 "glsl_parser.ypp"
+#line 1294 "glsl_parser.ypp"
{ (yyval.n) = ast_samplercube; ;}
break;
case 201:
/* Line 1464 of yacc.c */
-#line 1272 "glsl_parser.ypp"
+#line 1295 "glsl_parser.ypp"
{ (yyval.n) = ast_sampler1dshadow; ;}
break;
case 202:
/* Line 1464 of yacc.c */
-#line 1273 "glsl_parser.ypp"
+#line 1296 "glsl_parser.ypp"
{ (yyval.n) = ast_sampler2dshadow; ;}
break;
case 203:
/* Line 1464 of yacc.c */
-#line 1274 "glsl_parser.ypp"
+#line 1297 "glsl_parser.ypp"
{ (yyval.n) = ast_sampler2drectshadow; ;}
break;
case 204:
/* Line 1464 of yacc.c */
-#line 1275 "glsl_parser.ypp"
+#line 1298 "glsl_parser.ypp"
{ (yyval.n) = ast_samplercubeshadow; ;}
break;
case 205:
/* Line 1464 of yacc.c */
-#line 1276 "glsl_parser.ypp"
+#line 1299 "glsl_parser.ypp"
{ (yyval.n) = ast_sampler1darray; ;}
break;
case 206:
/* Line 1464 of yacc.c */
-#line 1277 "glsl_parser.ypp"
+#line 1300 "glsl_parser.ypp"
{ (yyval.n) = ast_sampler2darray; ;}
break;
case 207:
/* Line 1464 of yacc.c */
-#line 1278 "glsl_parser.ypp"
+#line 1301 "glsl_parser.ypp"
{ (yyval.n) = ast_sampler1darrayshadow; ;}
break;
case 208:
/* Line 1464 of yacc.c */
-#line 1279 "glsl_parser.ypp"
+#line 1302 "glsl_parser.ypp"
{ (yyval.n) = ast_sampler2darrayshadow; ;}
break;
case 209:
/* Line 1464 of yacc.c */
-#line 1280 "glsl_parser.ypp"
+#line 1303 "glsl_parser.ypp"
{ (yyval.n) = ast_isampler1d; ;}
break;
case 210:
/* Line 1464 of yacc.c */
-#line 1281 "glsl_parser.ypp"
+#line 1304 "glsl_parser.ypp"
{ (yyval.n) = ast_isampler2d; ;}
break;
case 211:
/* Line 1464 of yacc.c */
-#line 1282 "glsl_parser.ypp"
+#line 1305 "glsl_parser.ypp"
{ (yyval.n) = ast_isampler3d; ;}
break;
case 212:
/* Line 1464 of yacc.c */
-#line 1283 "glsl_parser.ypp"
+#line 1306 "glsl_parser.ypp"
{ (yyval.n) = ast_isamplercube; ;}
break;
case 213:
/* Line 1464 of yacc.c */
-#line 1284 "glsl_parser.ypp"
+#line 1307 "glsl_parser.ypp"
{ (yyval.n) = ast_isampler1darray; ;}
break;
case 214:
/* Line 1464 of yacc.c */
-#line 1285 "glsl_parser.ypp"
+#line 1308 "glsl_parser.ypp"
{ (yyval.n) = ast_isampler2darray; ;}
break;
case 215:
/* Line 1464 of yacc.c */
-#line 1286 "glsl_parser.ypp"
+#line 1309 "glsl_parser.ypp"
{ (yyval.n) = ast_usampler1d; ;}
break;
case 216:
/* Line 1464 of yacc.c */
-#line 1287 "glsl_parser.ypp"
+#line 1310 "glsl_parser.ypp"
{ (yyval.n) = ast_usampler2d; ;}
break;
case 217:
/* Line 1464 of yacc.c */
-#line 1288 "glsl_parser.ypp"
+#line 1311 "glsl_parser.ypp"
{ (yyval.n) = ast_usampler3d; ;}
break;
case 218:
/* Line 1464 of yacc.c */
-#line 1289 "glsl_parser.ypp"
+#line 1312 "glsl_parser.ypp"
{ (yyval.n) = ast_usamplercube; ;}
break;
case 219:
/* Line 1464 of yacc.c */
-#line 1290 "glsl_parser.ypp"
+#line 1313 "glsl_parser.ypp"
{ (yyval.n) = ast_usampler1darray; ;}
break;
case 220:
/* Line 1464 of yacc.c */
-#line 1291 "glsl_parser.ypp"
+#line 1314 "glsl_parser.ypp"
{ (yyval.n) = ast_usampler2darray; ;}
break;
case 221:
/* Line 1464 of yacc.c */
-#line 1295 "glsl_parser.ypp"
+#line 1318 "glsl_parser.ypp"
{
if (!state->es_shader && state->language_version < 130)
_mesa_glsl_error(& (yylsp[(1) - (1)]), state,
@@ -4646,7 +4669,7 @@ yyreduce:
case 222:
/* Line 1464 of yacc.c */
-#line 1305 "glsl_parser.ypp"
+#line 1328 "glsl_parser.ypp"
{
if (!state->es_shader && state->language_version < 130)
_mesa_glsl_error(& (yylsp[(1) - (1)]), state,
@@ -4662,7 +4685,7 @@ yyreduce:
case 223:
/* Line 1464 of yacc.c */
-#line 1315 "glsl_parser.ypp"
+#line 1338 "glsl_parser.ypp"
{
if (!state->es_shader && state->language_version < 130)
_mesa_glsl_error(& (yylsp[(1) - (1)]), state,
@@ -4678,7 +4701,7 @@ yyreduce:
case 224:
/* Line 1464 of yacc.c */
-#line 1329 "glsl_parser.ypp"
+#line 1352 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.struct_specifier) = new(ctx) ast_struct_specifier((yyvsp[(2) - (5)].identifier), (yyvsp[(4) - (5)].node));
@@ -4689,7 +4712,7 @@ yyreduce:
case 225:
/* Line 1464 of yacc.c */
-#line 1335 "glsl_parser.ypp"
+#line 1358 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.struct_specifier) = new(ctx) ast_struct_specifier(NULL, (yyvsp[(3) - (4)].node));
@@ -4700,7 +4723,7 @@ yyreduce:
case 226:
/* Line 1464 of yacc.c */
-#line 1344 "glsl_parser.ypp"
+#line 1367 "glsl_parser.ypp"
{
(yyval.node) = (ast_node *) (yyvsp[(1) - (1)].declarator_list);
(yyvsp[(1) - (1)].declarator_list)->link.self_link();
@@ -4710,7 +4733,7 @@ yyreduce:
case 227:
/* Line 1464 of yacc.c */
-#line 1349 "glsl_parser.ypp"
+#line 1372 "glsl_parser.ypp"
{
(yyval.node) = (ast_node *) (yyvsp[(1) - (2)].node);
(yyval.node)->link.insert_before(& (yyvsp[(2) - (2)].declarator_list)->link);
@@ -4720,7 +4743,7 @@ yyreduce:
case 228:
/* Line 1464 of yacc.c */
-#line 1357 "glsl_parser.ypp"
+#line 1380 "glsl_parser.ypp"
{
void *ctx = state;
ast_fully_specified_type *type = new(ctx) ast_fully_specified_type();
@@ -4737,7 +4760,7 @@ yyreduce:
case 229:
/* Line 1464 of yacc.c */
-#line 1372 "glsl_parser.ypp"
+#line 1395 "glsl_parser.ypp"
{
(yyval.declaration) = (yyvsp[(1) - (1)].declaration);
(yyvsp[(1) - (1)].declaration)->link.self_link();
@@ -4747,7 +4770,7 @@ yyreduce:
case 230:
/* Line 1464 of yacc.c */
-#line 1377 "glsl_parser.ypp"
+#line 1400 "glsl_parser.ypp"
{
(yyval.declaration) = (yyvsp[(1) - (3)].declaration);
(yyval.declaration)->link.insert_before(& (yyvsp[(3) - (3)].declaration)->link);
@@ -4757,7 +4780,7 @@ yyreduce:
case 231:
/* Line 1464 of yacc.c */
-#line 1385 "glsl_parser.ypp"
+#line 1408 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.declaration) = new(ctx) ast_declaration((yyvsp[(1) - (1)].identifier), false, NULL, NULL);
@@ -4768,7 +4791,7 @@ yyreduce:
case 232:
/* Line 1464 of yacc.c */
-#line 1391 "glsl_parser.ypp"
+#line 1414 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.declaration) = new(ctx) ast_declaration((yyvsp[(1) - (4)].identifier), true, (yyvsp[(3) - (4)].expression), NULL);
@@ -4779,28 +4802,28 @@ yyreduce:
case 235:
/* Line 1464 of yacc.c */
-#line 1409 "glsl_parser.ypp"
+#line 1432 "glsl_parser.ypp"
{ (yyval.node) = (ast_node *) (yyvsp[(1) - (1)].compound_statement); ;}
break;
case 240:
/* Line 1464 of yacc.c */
-#line 1417 "glsl_parser.ypp"
+#line 1440 "glsl_parser.ypp"
{ (yyval.node) = NULL; ;}
break;
case 241:
/* Line 1464 of yacc.c */
-#line 1418 "glsl_parser.ypp"
+#line 1441 "glsl_parser.ypp"
{ (yyval.node) = NULL; ;}
break;
case 244:
/* Line 1464 of yacc.c */
-#line 1425 "glsl_parser.ypp"
+#line 1448 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.compound_statement) = new(ctx) ast_compound_statement(true, NULL);
@@ -4811,7 +4834,7 @@ yyreduce:
case 245:
/* Line 1464 of yacc.c */
-#line 1431 "glsl_parser.ypp"
+#line 1454 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.compound_statement) = new(ctx) ast_compound_statement(true, (yyvsp[(2) - (3)].node));
@@ -4822,14 +4845,14 @@ yyreduce:
case 246:
/* Line 1464 of yacc.c */
-#line 1439 "glsl_parser.ypp"
+#line 1462 "glsl_parser.ypp"
{ (yyval.node) = (ast_node *) (yyvsp[(1) - (1)].compound_statement); ;}
break;
case 248:
/* Line 1464 of yacc.c */
-#line 1445 "glsl_parser.ypp"
+#line 1468 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.compound_statement) = new(ctx) ast_compound_statement(false, NULL);
@@ -4840,7 +4863,7 @@ yyreduce:
case 249:
/* Line 1464 of yacc.c */
-#line 1451 "glsl_parser.ypp"
+#line 1474 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.compound_statement) = new(ctx) ast_compound_statement(false, (yyvsp[(2) - (3)].node));
@@ -4851,7 +4874,7 @@ yyreduce:
case 250:
/* Line 1464 of yacc.c */
-#line 1460 "glsl_parser.ypp"
+#line 1483 "glsl_parser.ypp"
{
if ((yyvsp[(1) - (1)].node) == NULL) {
_mesa_glsl_error(& (yylsp[(1) - (1)]), state, "<nil> statement\n");
@@ -4866,7 +4889,7 @@ yyreduce:
case 251:
/* Line 1464 of yacc.c */
-#line 1470 "glsl_parser.ypp"
+#line 1493 "glsl_parser.ypp"
{
if ((yyvsp[(2) - (2)].node) == NULL) {
_mesa_glsl_error(& (yylsp[(2) - (2)]), state, "<nil> statement\n");
@@ -4880,7 +4903,7 @@ yyreduce:
case 252:
/* Line 1464 of yacc.c */
-#line 1482 "glsl_parser.ypp"
+#line 1505 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.node) = new(ctx) ast_expression_statement(NULL);
@@ -4891,7 +4914,7 @@ yyreduce:
case 253:
/* Line 1464 of yacc.c */
-#line 1488 "glsl_parser.ypp"
+#line 1511 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.node) = new(ctx) ast_expression_statement((yyvsp[(1) - (2)].expression));
@@ -4902,7 +4925,7 @@ yyreduce:
case 254:
/* Line 1464 of yacc.c */
-#line 1497 "glsl_parser.ypp"
+#line 1520 "glsl_parser.ypp"
{
(yyval.node) = new(state) ast_selection_statement((yyvsp[(3) - (5)].expression), (yyvsp[(5) - (5)].selection_rest_statement).then_statement,
(yyvsp[(5) - (5)].selection_rest_statement).else_statement);
@@ -4913,7 +4936,7 @@ yyreduce:
case 255:
/* Line 1464 of yacc.c */
-#line 1506 "glsl_parser.ypp"
+#line 1529 "glsl_parser.ypp"
{
(yyval.selection_rest_statement).then_statement = (yyvsp[(1) - (3)].node);
(yyval.selection_rest_statement).else_statement = (yyvsp[(3) - (3)].node);
@@ -4923,7 +4946,7 @@ yyreduce:
case 256:
/* Line 1464 of yacc.c */
-#line 1511 "glsl_parser.ypp"
+#line 1534 "glsl_parser.ypp"
{
(yyval.selection_rest_statement).then_statement = (yyvsp[(1) - (1)].node);
(yyval.selection_rest_statement).else_statement = NULL;
@@ -4933,7 +4956,7 @@ yyreduce:
case 257:
/* Line 1464 of yacc.c */
-#line 1519 "glsl_parser.ypp"
+#line 1542 "glsl_parser.ypp"
{
(yyval.node) = (ast_node *) (yyvsp[(1) - (1)].expression);
;}
@@ -4942,7 +4965,7 @@ yyreduce:
case 258:
/* Line 1464 of yacc.c */
-#line 1523 "glsl_parser.ypp"
+#line 1546 "glsl_parser.ypp"
{
void *ctx = state;
ast_declaration *decl = new(ctx) ast_declaration((yyvsp[(2) - (4)].identifier), false, NULL, (yyvsp[(4) - (4)].expression));
@@ -4958,7 +4981,7 @@ yyreduce:
case 262:
/* Line 1464 of yacc.c */
-#line 1546 "glsl_parser.ypp"
+#line 1569 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.node) = new(ctx) ast_iteration_statement(ast_iteration_statement::ast_while,
@@ -4970,7 +4993,7 @@ yyreduce:
case 263:
/* Line 1464 of yacc.c */
-#line 1553 "glsl_parser.ypp"
+#line 1576 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.node) = new(ctx) ast_iteration_statement(ast_iteration_statement::ast_do_while,
@@ -4982,7 +5005,7 @@ yyreduce:
case 264:
/* Line 1464 of yacc.c */
-#line 1560 "glsl_parser.ypp"
+#line 1583 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.node) = new(ctx) ast_iteration_statement(ast_iteration_statement::ast_for,
@@ -4994,7 +5017,7 @@ yyreduce:
case 268:
/* Line 1464 of yacc.c */
-#line 1576 "glsl_parser.ypp"
+#line 1599 "glsl_parser.ypp"
{
(yyval.node) = NULL;
;}
@@ -5003,7 +5026,7 @@ yyreduce:
case 269:
/* Line 1464 of yacc.c */
-#line 1583 "glsl_parser.ypp"
+#line 1606 "glsl_parser.ypp"
{
(yyval.for_rest_statement).cond = (yyvsp[(1) - (2)].node);
(yyval.for_rest_statement).rest = NULL;
@@ -5013,7 +5036,7 @@ yyreduce:
case 270:
/* Line 1464 of yacc.c */
-#line 1588 "glsl_parser.ypp"
+#line 1611 "glsl_parser.ypp"
{
(yyval.for_rest_statement).cond = (yyvsp[(1) - (3)].node);
(yyval.for_rest_statement).rest = (yyvsp[(3) - (3)].expression);
@@ -5023,7 +5046,7 @@ yyreduce:
case 271:
/* Line 1464 of yacc.c */
-#line 1597 "glsl_parser.ypp"
+#line 1620 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.node) = new(ctx) ast_jump_statement(ast_jump_statement::ast_continue, NULL);
@@ -5034,7 +5057,7 @@ yyreduce:
case 272:
/* Line 1464 of yacc.c */
-#line 1603 "glsl_parser.ypp"
+#line 1626 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.node) = new(ctx) ast_jump_statement(ast_jump_statement::ast_break, NULL);
@@ -5045,7 +5068,7 @@ yyreduce:
case 273:
/* Line 1464 of yacc.c */
-#line 1609 "glsl_parser.ypp"
+#line 1632 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.node) = new(ctx) ast_jump_statement(ast_jump_statement::ast_return, NULL);
@@ -5056,7 +5079,7 @@ yyreduce:
case 274:
/* Line 1464 of yacc.c */
-#line 1615 "glsl_parser.ypp"
+#line 1638 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.node) = new(ctx) ast_jump_statement(ast_jump_statement::ast_return, (yyvsp[(2) - (3)].expression));
@@ -5067,7 +5090,7 @@ yyreduce:
case 275:
/* Line 1464 of yacc.c */
-#line 1621 "glsl_parser.ypp"
+#line 1644 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.node) = new(ctx) ast_jump_statement(ast_jump_statement::ast_discard, NULL);
@@ -5078,28 +5101,28 @@ yyreduce:
case 276:
/* Line 1464 of yacc.c */
-#line 1629 "glsl_parser.ypp"
+#line 1652 "glsl_parser.ypp"
{ (yyval.node) = (yyvsp[(1) - (1)].function_definition); ;}
break;
case 277:
/* Line 1464 of yacc.c */
-#line 1630 "glsl_parser.ypp"
+#line 1653 "glsl_parser.ypp"
{ (yyval.node) = (yyvsp[(1) - (1)].node); ;}
break;
case 278:
/* Line 1464 of yacc.c */
-#line 1631 "glsl_parser.ypp"
+#line 1654 "glsl_parser.ypp"
{ (yyval.node) = NULL; ;}
break;
case 279:
/* Line 1464 of yacc.c */
-#line 1636 "glsl_parser.ypp"
+#line 1659 "glsl_parser.ypp"
{
void *ctx = state;
(yyval.function_definition) = new(ctx) ast_function_definition();
@@ -5112,7 +5135,7 @@ yyreduce:
/* Line 1464 of yacc.c */
-#line 5116 "glsl_parser.cpp"
+#line 5139 "glsl_parser.cpp"
default: break;
}
YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);