summaryrefslogtreecommitdiffstats
path: root/src/mesa
diff options
context:
space:
mode:
authorIan Romanick <[email protected]>2009-07-22 16:21:54 -0700
committerIan Romanick <[email protected]>2009-07-22 16:21:54 -0700
commit0db5ef074169589bc4d665094147aa284a5496d7 (patch)
tree50533fdd340ad7e62209a7c4669c3c9268a30b30 /src/mesa
parent28b13038d84db1c4e1e56e15d310b30ddffcb7bd (diff)
parser: Track a few more frag prog related values
Diffstat (limited to 'src/mesa')
-rw-r--r--src/mesa/shader/program_parse.tab.c477
-rw-r--r--src/mesa/shader/program_parse.y11
2 files changed, 261 insertions, 227 deletions
diff --git a/src/mesa/shader/program_parse.tab.c b/src/mesa/shader/program_parse.tab.c
index 0ea0e241066..452782e832e 100644
--- a/src/mesa/shader/program_parse.tab.c
+++ b/src/mesa/shader/program_parse.tab.c
@@ -739,31 +739,31 @@ static const yytype_int16 yyrhs[] =
static const yytype_uint16 yyrline[] =
{
0, 240, 240, 243, 251, 260, 261, 264, 282, 283,
- 286, 301, 304, 305, 308, 309, 310, 311, 312, 313,
- 314, 317, 318, 321, 327, 334, 341, 349, 356, 364,
- 375, 381, 387, 388, 389, 390, 391, 394, 406, 419,
- 432, 454, 463, 472, 479, 488, 516, 558, 569, 590,
- 600, 606, 630, 647, 647, 649, 656, 668, 669, 670,
- 673, 685, 697, 715, 726, 738, 740, 741, 742, 743,
- 746, 746, 746, 746, 747, 750, 751, 752, 753, 754,
- 755, 758, 776, 780, 786, 790, 794, 798, 802, 806,
- 810, 814, 820, 831, 831, 832, 834, 838, 842, 846,
- 852, 852, 854, 870, 893, 896, 907, 913, 919, 920,
- 927, 933, 939, 947, 953, 959, 967, 973, 979, 987,
- 988, 991, 992, 993, 994, 995, 996, 997, 998, 999,
- 1000, 1003, 1012, 1016, 1020, 1026, 1035, 1039, 1043, 1047,
- 1051, 1057, 1063, 1070, 1075, 1083, 1093, 1095, 1103, 1109,
- 1113, 1117, 1123, 1134, 1143, 1147, 1152, 1156, 1160, 1164,
- 1170, 1177, 1181, 1187, 1195, 1206, 1213, 1217, 1223, 1233,
- 1244, 1248, 1266, 1275, 1278, 1284, 1288, 1292, 1298, 1309,
- 1314, 1319, 1324, 1329, 1333, 1341, 1344, 1349, 1362, 1370,
- 1383, 1383, 1385, 1385, 1387, 1397, 1402, 1409, 1419, 1428,
- 1433, 1440, 1450, 1460, 1472, 1472, 1473, 1473, 1475, 1482,
- 1487, 1494, 1499, 1505, 1513, 1524, 1528, 1534, 1535, 1536,
- 1539, 1539, 1542, 1542, 1545, 1551, 1559, 1572, 1581, 1590,
- 1594, 1603, 1612, 1623, 1630, 1635, 1644, 1656, 1659, 1668,
- 1679, 1680, 1681, 1684, 1685, 1686, 1689, 1690, 1693, 1694,
- 1697, 1698, 1701, 1712, 1723, 1734
+ 286, 301, 304, 309, 316, 317, 318, 319, 320, 321,
+ 322, 325, 326, 329, 335, 342, 349, 357, 364, 372,
+ 385, 392, 398, 399, 400, 401, 402, 405, 417, 430,
+ 443, 465, 474, 483, 490, 499, 527, 569, 580, 601,
+ 611, 617, 641, 658, 658, 660, 667, 679, 680, 681,
+ 684, 696, 708, 726, 737, 749, 751, 752, 753, 754,
+ 757, 757, 757, 757, 758, 761, 762, 763, 764, 765,
+ 766, 769, 787, 791, 797, 801, 805, 809, 813, 817,
+ 821, 825, 831, 842, 842, 843, 845, 849, 853, 857,
+ 863, 863, 865, 881, 904, 907, 918, 924, 930, 931,
+ 938, 944, 950, 958, 964, 970, 978, 984, 990, 998,
+ 999, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010,
+ 1011, 1014, 1023, 1027, 1031, 1037, 1046, 1050, 1054, 1058,
+ 1062, 1068, 1074, 1081, 1086, 1094, 1104, 1106, 1114, 1120,
+ 1124, 1128, 1134, 1145, 1154, 1158, 1163, 1167, 1171, 1175,
+ 1181, 1188, 1192, 1198, 1206, 1217, 1224, 1228, 1234, 1244,
+ 1255, 1259, 1277, 1286, 1289, 1295, 1299, 1303, 1309, 1320,
+ 1325, 1330, 1335, 1340, 1344, 1352, 1355, 1360, 1373, 1381,
+ 1394, 1394, 1396, 1396, 1398, 1408, 1413, 1420, 1430, 1439,
+ 1444, 1451, 1461, 1471, 1483, 1483, 1484, 1484, 1486, 1493,
+ 1498, 1505, 1510, 1516, 1524, 1535, 1539, 1545, 1546, 1547,
+ 1550, 1550, 1553, 1553, 1556, 1562, 1570, 1583, 1592, 1601,
+ 1605, 1614, 1623, 1634, 1641, 1646, 1655, 1667, 1670, 1679,
+ 1690, 1691, 1692, 1695, 1696, 1697, 1700, 1701, 1704, 1705,
+ 1708, 1709, 1712, 1723, 1734, 1745
};
#endif
@@ -2094,10 +2094,30 @@ yyreduce:
;}
break;
+ case 12:
+
+/* Line 1455 of yacc.c */
+#line 305 "program_parse.y"
+ {
+ (yyval.inst) = (yyvsp[(1) - (1)].inst);
+ state->prog->NumAluInstructions++;
+ ;}
+ break;
+
+ case 13:
+
+/* Line 1455 of yacc.c */
+#line 310 "program_parse.y"
+ {
+ (yyval.inst) = (yyvsp[(1) - (1)].inst);
+ state->prog->NumTexInstructions++;
+ ;}
+ break;
+
case 23:
/* Line 1455 of yacc.c */
-#line 322 "program_parse.y"
+#line 330 "program_parse.y"
{
(yyval.inst) = asm_instruction_ctor(OPCODE_ARL, & (yyvsp[(2) - (4)].dst_reg), & (yyvsp[(4) - (4)].src_reg), NULL, NULL);
;}
@@ -2106,7 +2126,7 @@ yyreduce:
case 24:
/* Line 1455 of yacc.c */
-#line 328 "program_parse.y"
+#line 336 "program_parse.y"
{
(yyval.inst) = asm_instruction_ctor((yyvsp[(1) - (4)].temp_inst).Opcode, & (yyvsp[(2) - (4)].dst_reg), & (yyvsp[(4) - (4)].src_reg), NULL, NULL);
(yyval.inst)->Base.SaturateMode = (yyvsp[(1) - (4)].temp_inst).SaturateMode;
@@ -2116,7 +2136,7 @@ yyreduce:
case 25:
/* Line 1455 of yacc.c */
-#line 335 "program_parse.y"
+#line 343 "program_parse.y"
{
(yyval.inst) = asm_instruction_ctor((yyvsp[(1) - (4)].temp_inst).Opcode, & (yyvsp[(2) - (4)].dst_reg), & (yyvsp[(4) - (4)].src_reg), NULL, NULL);
(yyval.inst)->Base.SaturateMode = (yyvsp[(1) - (4)].temp_inst).SaturateMode;
@@ -2126,7 +2146,7 @@ yyreduce:
case 26:
/* Line 1455 of yacc.c */
-#line 342 "program_parse.y"
+#line 350 "program_parse.y"
{
(yyval.inst) = asm_instruction_ctor((yyvsp[(1) - (6)].temp_inst).Opcode, & (yyvsp[(2) - (6)].dst_reg), & (yyvsp[(4) - (6)].src_reg), & (yyvsp[(6) - (6)].src_reg), NULL);
(yyval.inst)->Base.SaturateMode = (yyvsp[(1) - (6)].temp_inst).SaturateMode;
@@ -2136,7 +2156,7 @@ yyreduce:
case 27:
/* Line 1455 of yacc.c */
-#line 350 "program_parse.y"
+#line 358 "program_parse.y"
{
(yyval.inst) = asm_instruction_ctor((yyvsp[(1) - (6)].temp_inst).Opcode, & (yyvsp[(2) - (6)].dst_reg), & (yyvsp[(4) - (6)].src_reg), & (yyvsp[(6) - (6)].src_reg), NULL);
(yyval.inst)->Base.SaturateMode = (yyvsp[(1) - (6)].temp_inst).SaturateMode;
@@ -2146,7 +2166,7 @@ yyreduce:
case 28:
/* Line 1455 of yacc.c */
-#line 358 "program_parse.y"
+#line 366 "program_parse.y"
{
(yyval.inst) = asm_instruction_ctor((yyvsp[(1) - (8)].temp_inst).Opcode, & (yyvsp[(2) - (8)].dst_reg), & (yyvsp[(4) - (8)].src_reg), & (yyvsp[(6) - (8)].src_reg), & (yyvsp[(8) - (8)].src_reg));
(yyval.inst)->Base.SaturateMode = (yyvsp[(1) - (8)].temp_inst).SaturateMode;
@@ -2156,13 +2176,15 @@ yyreduce:
case 29:
/* Line 1455 of yacc.c */
-#line 365 "program_parse.y"
+#line 373 "program_parse.y"
{
(yyval.inst) = asm_instruction_ctor((yyvsp[(1) - (8)].temp_inst).Opcode, & (yyvsp[(2) - (8)].dst_reg), & (yyvsp[(4) - (8)].src_reg), NULL, NULL);
if ((yyval.inst) != NULL) {
(yyval.inst)->Base.SaturateMode = (yyvsp[(1) - (8)].temp_inst).SaturateMode;
(yyval.inst)->Base.TexSrcUnit = (yyvsp[(6) - (8)].integer);
(yyval.inst)->Base.TexSrcTarget = (yyvsp[(8) - (8)].integer);
+
+ state->prog->TexturesUsed[(yyvsp[(6) - (8)].integer)] |= (1U << (yyvsp[(8) - (8)].integer));
}
;}
break;
@@ -2170,16 +2192,17 @@ yyreduce:
case 30:
/* Line 1455 of yacc.c */
-#line 376 "program_parse.y"
+#line 386 "program_parse.y"
{
(yyval.inst) = asm_instruction_ctor(OPCODE_KIL, NULL, & (yyvsp[(2) - (2)].src_reg), NULL, NULL);
+ state->fragment.UsesKill = 1;
;}
break;
case 31:
/* Line 1455 of yacc.c */
-#line 382 "program_parse.y"
+#line 393 "program_parse.y"
{
(yyval.integer) = (yyvsp[(2) - (2)].integer);
;}
@@ -2188,42 +2211,42 @@ yyreduce:
case 32:
/* Line 1455 of yacc.c */
-#line 387 "program_parse.y"
+#line 398 "program_parse.y"
{ (yyval.integer) = TEXTURE_1D_INDEX; ;}
break;
case 33:
/* Line 1455 of yacc.c */
-#line 388 "program_parse.y"
+#line 399 "program_parse.y"
{ (yyval.integer) = TEXTURE_2D_INDEX; ;}
break;
case 34:
/* Line 1455 of yacc.c */
-#line 389 "program_parse.y"
+#line 400 "program_parse.y"
{ (yyval.integer) = TEXTURE_3D_INDEX; ;}
break;
case 35:
/* Line 1455 of yacc.c */
-#line 390 "program_parse.y"
+#line 401 "program_parse.y"
{ (yyval.integer) = TEXTURE_CUBE_INDEX; ;}
break;
case 36:
/* Line 1455 of yacc.c */
-#line 391 "program_parse.y"
+#line 402 "program_parse.y"
{ (yyval.integer) = TEXTURE_RECT_INDEX; ;}
break;
case 37:
/* Line 1455 of yacc.c */
-#line 395 "program_parse.y"
+#line 406 "program_parse.y"
{
/* FIXME: Is this correct? Should the extenedSwizzle be applied
* FIXME: to the existing swizzle?
@@ -2238,7 +2261,7 @@ yyreduce:
case 38:
/* Line 1455 of yacc.c */
-#line 407 "program_parse.y"
+#line 418 "program_parse.y"
{
(yyval.src_reg) = (yyvsp[(2) - (3)].src_reg);
@@ -2254,7 +2277,7 @@ yyreduce:
case 39:
/* Line 1455 of yacc.c */
-#line 420 "program_parse.y"
+#line 431 "program_parse.y"
{
(yyval.src_reg) = (yyvsp[(2) - (3)].src_reg);
@@ -2270,7 +2293,7 @@ yyreduce:
case 40:
/* Line 1455 of yacc.c */
-#line 433 "program_parse.y"
+#line 444 "program_parse.y"
{
(yyval.dst_reg) = (yyvsp[(1) - (2)].dst_reg);
(yyval.dst_reg).WriteMask = (yyvsp[(2) - (2)].swiz_mask).mask;
@@ -2295,7 +2318,7 @@ yyreduce:
case 41:
/* Line 1455 of yacc.c */
-#line 455 "program_parse.y"
+#line 466 "program_parse.y"
{
init_dst_reg(& (yyval.dst_reg));
(yyval.dst_reg).File = PROGRAM_ADDRESS;
@@ -2307,7 +2330,7 @@ yyreduce:
case 42:
/* Line 1455 of yacc.c */
-#line 464 "program_parse.y"
+#line 475 "program_parse.y"
{
(yyval.swiz_mask).swizzle = MAKE_SWIZZLE4((yyvsp[(1) - (7)].swiz_mask).swizzle, (yyvsp[(3) - (7)].swiz_mask).swizzle,
(yyvsp[(5) - (7)].swiz_mask).swizzle, (yyvsp[(7) - (7)].swiz_mask).swizzle);
@@ -2319,7 +2342,7 @@ yyreduce:
case 43:
/* Line 1455 of yacc.c */
-#line 473 "program_parse.y"
+#line 484 "program_parse.y"
{
(yyval.swiz_mask).swizzle = (yyvsp[(2) - (2)].integer);
(yyval.swiz_mask).mask = ((yyvsp[(1) - (2)].negate)) ? 1 : 0;
@@ -2329,7 +2352,7 @@ yyreduce:
case 44:
/* Line 1455 of yacc.c */
-#line 480 "program_parse.y"
+#line 491 "program_parse.y"
{
if (((yyvsp[(1) - (1)].integer) != 0) && ((yyvsp[(1) - (1)].integer) != 1)) {
yyerror(& (yylsp[(1) - (1)]), state, "invalid extended swizzle selector");
@@ -2343,7 +2366,7 @@ yyreduce:
case 45:
/* Line 1455 of yacc.c */
-#line 489 "program_parse.y"
+#line 500 "program_parse.y"
{
if (strlen((yyvsp[(1) - (1)].string)) > 1) {
yyerror(& (yylsp[(1) - (1)]), state, "invalid extended swizzle selector");
@@ -2374,7 +2397,7 @@ yyreduce:
case 46:
/* Line 1455 of yacc.c */
-#line 517 "program_parse.y"
+#line 528 "program_parse.y"
{
struct asm_symbol *const s = (struct asm_symbol *)
_mesa_symbol_table_find_symbol(state->st, 0, (yyvsp[(1) - (1)].string));
@@ -2421,7 +2444,7 @@ yyreduce:
case 47:
/* Line 1455 of yacc.c */
-#line 559 "program_parse.y"
+#line 570 "program_parse.y"
{
init_src_reg(& (yyval.src_reg));
(yyval.src_reg).Base.File = PROGRAM_INPUT;
@@ -2437,7 +2460,7 @@ yyreduce:
case 48:
/* Line 1455 of yacc.c */
-#line 570 "program_parse.y"
+#line 581 "program_parse.y"
{
if (! (yyvsp[(3) - (4)].src_reg).Base.RelAddr
&& ((yyvsp[(3) - (4)].src_reg).Base.Index >= (yyvsp[(1) - (4)].sym)->param_binding_length)) {
@@ -2463,7 +2486,7 @@ yyreduce:
case 49:
/* Line 1455 of yacc.c */
-#line 591 "program_parse.y"
+#line 602 "program_parse.y"
{
init_src_reg(& (yyval.src_reg));
(yyval.src_reg).Base.File = ((yyvsp[(1) - (1)].temp_sym).name != NULL)
@@ -2476,7 +2499,7 @@ yyreduce:
case 50:
/* Line 1455 of yacc.c */
-#line 601 "program_parse.y"
+#line 612 "program_parse.y"
{
init_dst_reg(& (yyval.dst_reg));
(yyval.dst_reg).File = PROGRAM_OUTPUT;
@@ -2487,7 +2510,7 @@ yyreduce:
case 51:
/* Line 1455 of yacc.c */
-#line 607 "program_parse.y"
+#line 618 "program_parse.y"
{
struct asm_symbol *const s = (struct asm_symbol *)
_mesa_symbol_table_find_symbol(state->st, 0, (yyvsp[(1) - (1)].string));
@@ -2514,7 +2537,7 @@ yyreduce:
case 52:
/* Line 1455 of yacc.c */
-#line 631 "program_parse.y"
+#line 642 "program_parse.y"
{
struct asm_symbol *const s = (struct asm_symbol *)
_mesa_symbol_table_find_symbol(state->st, 0, (yyvsp[(1) - (1)].string));
@@ -2534,7 +2557,7 @@ yyreduce:
case 55:
/* Line 1455 of yacc.c */
-#line 650 "program_parse.y"
+#line 661 "program_parse.y"
{
init_src_reg(& (yyval.src_reg));
(yyval.src_reg).Base.Index = (yyvsp[(1) - (1)].integer);
@@ -2544,7 +2567,7 @@ yyreduce:
case 56:
/* Line 1455 of yacc.c */
-#line 657 "program_parse.y"
+#line 668 "program_parse.y"
{
/* FINISHME: Add support for multiple address registers.
*/
@@ -2559,28 +2582,28 @@ yyreduce:
case 57:
/* Line 1455 of yacc.c */
-#line 668 "program_parse.y"
+#line 679 "program_parse.y"
{ (yyval.integer) = 0; ;}
break;
case 58:
/* Line 1455 of yacc.c */
-#line 669 "program_parse.y"
+#line 680 "program_parse.y"
{ (yyval.integer) = (yyvsp[(2) - (2)].integer); ;}
break;
case 59:
/* Line 1455 of yacc.c */
-#line 670 "program_parse.y"
+#line 681 "program_parse.y"
{ (yyval.integer) = -(yyvsp[(2) - (2)].integer); ;}
break;
case 60:
/* Line 1455 of yacc.c */
-#line 674 "program_parse.y"
+#line 685 "program_parse.y"
{
if (((yyvsp[(1) - (1)].integer) < 0) || ((yyvsp[(1) - (1)].integer) > 63)) {
yyerror(& (yylsp[(1) - (1)]), state,
@@ -2595,7 +2618,7 @@ yyreduce:
case 61:
/* Line 1455 of yacc.c */
-#line 686 "program_parse.y"
+#line 697 "program_parse.y"
{
if (((yyvsp[(1) - (1)].integer) < 0) || ((yyvsp[(1) - (1)].integer) > 64)) {
yyerror(& (yylsp[(1) - (1)]), state,
@@ -2610,7 +2633,7 @@ yyreduce:
case 62:
/* Line 1455 of yacc.c */
-#line 698 "program_parse.y"
+#line 709 "program_parse.y"
{
struct asm_symbol *const s = (struct asm_symbol *)
_mesa_symbol_table_find_symbol(state->st, 0, (yyvsp[(1) - (1)].string));
@@ -2631,7 +2654,7 @@ yyreduce:
case 63:
/* Line 1455 of yacc.c */
-#line 716 "program_parse.y"
+#line 727 "program_parse.y"
{
if ((yyvsp[(1) - (1)].swiz_mask).mask != WRITEMASK_X) {
yyerror(& (yylsp[(1) - (1)]), state, "invalid address component selector");
@@ -2645,7 +2668,7 @@ yyreduce:
case 64:
/* Line 1455 of yacc.c */
-#line 727 "program_parse.y"
+#line 738 "program_parse.y"
{
if ((yyvsp[(1) - (1)].swiz_mask).mask != WRITEMASK_X) {
yyerror(& (yylsp[(1) - (1)]), state,
@@ -2660,21 +2683,21 @@ yyreduce:
case 69:
/* Line 1455 of yacc.c */
-#line 743 "program_parse.y"
+#line 754 "program_parse.y"
{ (yyval.swiz_mask).swizzle = SWIZZLE_NOOP; (yyval.swiz_mask).mask = WRITEMASK_XYZW; ;}
break;
case 74:
/* Line 1455 of yacc.c */
-#line 747 "program_parse.y"
+#line 758 "program_parse.y"
{ (yyval.swiz_mask).swizzle = SWIZZLE_NOOP; (yyval.swiz_mask).mask = WRITEMASK_XYZW; ;}
break;
case 81:
/* Line 1455 of yacc.c */
-#line 759 "program_parse.y"
+#line 770 "program_parse.y"
{
struct asm_symbol *const s =
declare_variable(state, (yyvsp[(2) - (4)].string), at_attrib, & (yylsp[(2) - (4)]));
@@ -2695,7 +2718,7 @@ yyreduce:
case 82:
/* Line 1455 of yacc.c */
-#line 777 "program_parse.y"
+#line 788 "program_parse.y"
{
(yyval.attrib) = (yyvsp[(2) - (2)].attrib);
;}
@@ -2704,7 +2727,7 @@ yyreduce:
case 83:
/* Line 1455 of yacc.c */
-#line 781 "program_parse.y"
+#line 792 "program_parse.y"
{
(yyval.attrib) = (yyvsp[(2) - (2)].attrib);
;}
@@ -2713,7 +2736,7 @@ yyreduce:
case 84:
/* Line 1455 of yacc.c */
-#line 787 "program_parse.y"
+#line 798 "program_parse.y"
{
(yyval.attrib) = VERT_ATTRIB_POS;
;}
@@ -2722,7 +2745,7 @@ yyreduce:
case 85:
/* Line 1455 of yacc.c */
-#line 791 "program_parse.y"
+#line 802 "program_parse.y"
{
(yyval.attrib) = VERT_ATTRIB_WEIGHT;
;}
@@ -2731,7 +2754,7 @@ yyreduce:
case 86:
/* Line 1455 of yacc.c */
-#line 795 "program_parse.y"
+#line 806 "program_parse.y"
{
(yyval.attrib) = VERT_ATTRIB_NORMAL;
;}
@@ -2740,7 +2763,7 @@ yyreduce:
case 87:
/* Line 1455 of yacc.c */
-#line 799 "program_parse.y"
+#line 810 "program_parse.y"
{
(yyval.attrib) = VERT_ATTRIB_COLOR0 + (yyvsp[(2) - (2)].integer);
;}
@@ -2749,7 +2772,7 @@ yyreduce:
case 88:
/* Line 1455 of yacc.c */
-#line 803 "program_parse.y"
+#line 814 "program_parse.y"
{
(yyval.attrib) = VERT_ATTRIB_FOG;
;}
@@ -2758,7 +2781,7 @@ yyreduce:
case 89:
/* Line 1455 of yacc.c */
-#line 807 "program_parse.y"
+#line 818 "program_parse.y"
{
(yyval.attrib) = VERT_ATTRIB_TEX0 + (yyvsp[(2) - (2)].integer);
;}
@@ -2767,7 +2790,7 @@ yyreduce:
case 90:
/* Line 1455 of yacc.c */
-#line 811 "program_parse.y"
+#line 822 "program_parse.y"
{
YYERROR;
;}
@@ -2776,7 +2799,7 @@ yyreduce:
case 91:
/* Line 1455 of yacc.c */
-#line 815 "program_parse.y"
+#line 826 "program_parse.y"
{
(yyval.attrib) = VERT_ATTRIB_GENERIC0 + (yyvsp[(3) - (4)].integer);
;}
@@ -2785,7 +2808,7 @@ yyreduce:
case 92:
/* Line 1455 of yacc.c */
-#line 821 "program_parse.y"
+#line 832 "program_parse.y"
{
if ((yyvsp[(1) - (1)].integer) >= state->limits->MaxAttribs) {
yyerror(& (yylsp[(1) - (1)]), state, "invalid vertex attribute reference");
@@ -2799,7 +2822,7 @@ yyreduce:
case 96:
/* Line 1455 of yacc.c */
-#line 835 "program_parse.y"
+#line 846 "program_parse.y"
{
(yyval.attrib) = FRAG_ATTRIB_WPOS;
;}
@@ -2808,7 +2831,7 @@ yyreduce:
case 97:
/* Line 1455 of yacc.c */
-#line 839 "program_parse.y"
+#line 850 "program_parse.y"
{
(yyval.attrib) = FRAG_ATTRIB_COL0 + (yyvsp[(2) - (2)].integer);
;}
@@ -2817,7 +2840,7 @@ yyreduce:
case 98:
/* Line 1455 of yacc.c */
-#line 843 "program_parse.y"
+#line 854 "program_parse.y"
{
(yyval.attrib) = FRAG_ATTRIB_FOGC;
;}
@@ -2826,7 +2849,7 @@ yyreduce:
case 99:
/* Line 1455 of yacc.c */
-#line 847 "program_parse.y"
+#line 858 "program_parse.y"
{
(yyval.attrib) = FRAG_ATTRIB_TEX0 + (yyvsp[(2) - (2)].integer);
;}
@@ -2835,7 +2858,7 @@ yyreduce:
case 102:
/* Line 1455 of yacc.c */
-#line 855 "program_parse.y"
+#line 866 "program_parse.y"
{
struct asm_symbol *const s =
declare_variable(state, (yyvsp[(2) - (3)].string), at_param, & (yylsp[(2) - (3)]));
@@ -2854,7 +2877,7 @@ yyreduce:
case 103:
/* Line 1455 of yacc.c */
-#line 871 "program_parse.y"
+#line 882 "program_parse.y"
{
if (((yyvsp[(4) - (6)].integer) != 0) && ((yyvsp[(4) - (6)].integer) != (yyvsp[(6) - (6)].temp_sym).param_binding_length)) {
yyerror(& (yylsp[(4) - (6)]), state,
@@ -2879,7 +2902,7 @@ yyreduce:
case 104:
/* Line 1455 of yacc.c */
-#line 893 "program_parse.y"
+#line 904 "program_parse.y"
{
(yyval.integer) = 0;
;}
@@ -2888,7 +2911,7 @@ yyreduce:
case 105:
/* Line 1455 of yacc.c */
-#line 897 "program_parse.y"
+#line 908 "program_parse.y"
{
if (((yyvsp[(1) - (1)].integer) < 1) || ((yyvsp[(1) - (1)].integer) >= state->limits->MaxParameters)) {
yyerror(& (yylsp[(1) - (1)]), state, "invalid parameter array size");
@@ -2902,7 +2925,7 @@ yyreduce:
case 106:
/* Line 1455 of yacc.c */
-#line 908 "program_parse.y"
+#line 919 "program_parse.y"
{
(yyval.temp_sym) = (yyvsp[(2) - (2)].temp_sym);
;}
@@ -2911,7 +2934,7 @@ yyreduce:
case 107:
/* Line 1455 of yacc.c */
-#line 914 "program_parse.y"
+#line 925 "program_parse.y"
{
(yyval.temp_sym) = (yyvsp[(3) - (4)].temp_sym);
;}
@@ -2920,7 +2943,7 @@ yyreduce:
case 109:
/* Line 1455 of yacc.c */
-#line 921 "program_parse.y"
+#line 932 "program_parse.y"
{
(yyvsp[(1) - (3)].temp_sym).param_binding_length += (yyvsp[(3) - (3)].temp_sym).param_binding_length;
(yyval.temp_sym) = (yyvsp[(1) - (3)].temp_sym);
@@ -2930,7 +2953,7 @@ yyreduce:
case 110:
/* Line 1455 of yacc.c */
-#line 928 "program_parse.y"
+#line 939 "program_parse.y"
{
memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym)));
(yyval.temp_sym).param_binding_begin = ~0;
@@ -2941,7 +2964,7 @@ yyreduce:
case 111:
/* Line 1455 of yacc.c */
-#line 934 "program_parse.y"
+#line 945 "program_parse.y"
{
memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym)));
(yyval.temp_sym).param_binding_begin = ~0;
@@ -2952,7 +2975,7 @@ yyreduce:
case 112:
/* Line 1455 of yacc.c */
-#line 940 "program_parse.y"
+#line 951 "program_parse.y"
{
memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym)));
(yyval.temp_sym).param_binding_begin = ~0;
@@ -2963,7 +2986,7 @@ yyreduce:
case 113:
/* Line 1455 of yacc.c */
-#line 948 "program_parse.y"
+#line 959 "program_parse.y"
{
memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym)));
(yyval.temp_sym).param_binding_begin = ~0;
@@ -2974,7 +2997,7 @@ yyreduce:
case 114:
/* Line 1455 of yacc.c */
-#line 954 "program_parse.y"
+#line 965 "program_parse.y"
{
memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym)));
(yyval.temp_sym).param_binding_begin = ~0;
@@ -2985,7 +3008,7 @@ yyreduce:
case 115:
/* Line 1455 of yacc.c */
-#line 960 "program_parse.y"
+#line 971 "program_parse.y"
{
memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym)));
(yyval.temp_sym).param_binding_begin = ~0;
@@ -2996,7 +3019,7 @@ yyreduce:
case 116:
/* Line 1455 of yacc.c */
-#line 968 "program_parse.y"
+#line 979 "program_parse.y"
{
memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym)));
(yyval.temp_sym).param_binding_begin = ~0;
@@ -3007,7 +3030,7 @@ yyreduce:
case 117:
/* Line 1455 of yacc.c */
-#line 974 "program_parse.y"
+#line 985 "program_parse.y"
{
memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym)));
(yyval.temp_sym).param_binding_begin = ~0;
@@ -3018,7 +3041,7 @@ yyreduce:
case 118:
/* Line 1455 of yacc.c */
-#line 980 "program_parse.y"
+#line 991 "program_parse.y"
{
memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym)));
(yyval.temp_sym).param_binding_begin = ~0;
@@ -3029,91 +3052,91 @@ yyreduce:
case 119:
/* Line 1455 of yacc.c */
-#line 987 "program_parse.y"
+#line 998 "program_parse.y"
{ memcpy((yyval.state), (yyvsp[(1) - (1)].state), sizeof((yyval.state))); ;}
break;
case 120:
/* Line 1455 of yacc.c */
-#line 988 "program_parse.y"
+#line 999 "program_parse.y"
{ memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;}
break;
case 121:
/* Line 1455 of yacc.c */
-#line 991 "program_parse.y"
+#line 1002 "program_parse.y"
{ memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;}
break;
case 122:
/* Line 1455 of yacc.c */
-#line 992 "program_parse.y"
+#line 1003 "program_parse.y"
{ memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;}
break;
case 123:
/* Line 1455 of yacc.c */
-#line 993 "program_parse.y"
+#line 1004 "program_parse.y"
{ memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;}
break;
case 124:
/* Line 1455 of yacc.c */
-#line 994 "program_parse.y"
+#line 1005 "program_parse.y"
{ memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;}
break;
case 125:
/* Line 1455 of yacc.c */
-#line 995 "program_parse.y"
+#line 1006 "program_parse.y"
{ memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;}
break;
case 126:
/* Line 1455 of yacc.c */
-#line 996 "program_parse.y"
+#line 1007 "program_parse.y"
{ memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;}
break;
case 127:
/* Line 1455 of yacc.c */
-#line 997 "program_parse.y"
+#line 1008 "program_parse.y"
{ memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;}
break;
case 128:
/* Line 1455 of yacc.c */
-#line 998 "program_parse.y"
+#line 1009 "program_parse.y"
{ memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;}
break;
case 129:
/* Line 1455 of yacc.c */
-#line 999 "program_parse.y"
+#line 1010 "program_parse.y"
{ memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;}
break;
case 130:
/* Line 1455 of yacc.c */
-#line 1000 "program_parse.y"
+#line 1011 "program_parse.y"
{ memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;}
break;
case 131:
/* Line 1455 of yacc.c */
-#line 1004 "program_parse.y"
+#line 1015 "program_parse.y"
{
memset((yyval.state), 0, sizeof((yyval.state)));
(yyval.state)[0] = STATE_MATERIAL;
@@ -3125,7 +3148,7 @@ yyreduce:
case 132:
/* Line 1455 of yacc.c */
-#line 1013 "program_parse.y"
+#line 1024 "program_parse.y"
{
(yyval.integer) = (yyvsp[(1) - (1)].integer);
;}
@@ -3134,7 +3157,7 @@ yyreduce:
case 133:
/* Line 1455 of yacc.c */
-#line 1017 "program_parse.y"
+#line 1028 "program_parse.y"
{
(yyval.integer) = STATE_EMISSION;
;}
@@ -3143,7 +3166,7 @@ yyreduce:
case 134:
/* Line 1455 of yacc.c */
-#line 1021 "program_parse.y"
+#line 1032 "program_parse.y"
{
(yyval.integer) = STATE_SHININESS;
;}
@@ -3152,7 +3175,7 @@ yyreduce:
case 135:
/* Line 1455 of yacc.c */
-#line 1027 "program_parse.y"
+#line 1038 "program_parse.y"
{
memset((yyval.state), 0, sizeof((yyval.state)));
(yyval.state)[0] = STATE_LIGHT;
@@ -3164,7 +3187,7 @@ yyreduce:
case 136:
/* Line 1455 of yacc.c */
-#line 1036 "program_parse.y"
+#line 1047 "program_parse.y"
{
(yyval.integer) = (yyvsp[(1) - (1)].integer);
;}
@@ -3173,7 +3196,7 @@ yyreduce:
case 137:
/* Line 1455 of yacc.c */
-#line 1040 "program_parse.y"
+#line 1051 "program_parse.y"
{
(yyval.integer) = STATE_POSITION;
;}
@@ -3182,7 +3205,7 @@ yyreduce:
case 138:
/* Line 1455 of yacc.c */
-#line 1044 "program_parse.y"
+#line 1055 "program_parse.y"
{
(yyval.integer) = STATE_ATTENUATION;
;}
@@ -3191,7 +3214,7 @@ yyreduce:
case 139:
/* Line 1455 of yacc.c */
-#line 1048 "program_parse.y"
+#line 1059 "program_parse.y"
{
(yyval.integer) = (yyvsp[(2) - (2)].integer);
;}
@@ -3200,7 +3223,7 @@ yyreduce:
case 140:
/* Line 1455 of yacc.c */
-#line 1052 "program_parse.y"
+#line 1063 "program_parse.y"
{
(yyval.integer) = STATE_HALF_VECTOR;
;}
@@ -3209,7 +3232,7 @@ yyreduce:
case 141:
/* Line 1455 of yacc.c */
-#line 1058 "program_parse.y"
+#line 1069 "program_parse.y"
{
(yyval.integer) = STATE_SPOT_DIRECTION;
;}
@@ -3218,7 +3241,7 @@ yyreduce:
case 142:
/* Line 1455 of yacc.c */
-#line 1064 "program_parse.y"
+#line 1075 "program_parse.y"
{
(yyval.state)[0] = (yyvsp[(2) - (2)].state)[0];
(yyval.state)[1] = (yyvsp[(2) - (2)].state)[1];
@@ -3228,7 +3251,7 @@ yyreduce:
case 143:
/* Line 1455 of yacc.c */
-#line 1071 "program_parse.y"
+#line 1082 "program_parse.y"
{
memset((yyval.state), 0, sizeof((yyval.state)));
(yyval.state)[0] = STATE_LIGHTMODEL_AMBIENT;
@@ -3238,7 +3261,7 @@ yyreduce:
case 144:
/* Line 1455 of yacc.c */
-#line 1076 "program_parse.y"
+#line 1087 "program_parse.y"
{
memset((yyval.state), 0, sizeof((yyval.state)));
(yyval.state)[0] = STATE_LIGHTMODEL_SCENECOLOR;
@@ -3249,7 +3272,7 @@ yyreduce:
case 145:
/* Line 1455 of yacc.c */
-#line 1084 "program_parse.y"
+#line 1095 "program_parse.y"
{
memset((yyval.state), 0, sizeof((yyval.state)));
(yyval.state)[0] = STATE_LIGHTPROD;
@@ -3262,7 +3285,7 @@ yyreduce:
case 147:
/* Line 1455 of yacc.c */
-#line 1096 "program_parse.y"
+#line 1107 "program_parse.y"
{
memset((yyval.state), 0, sizeof((yyval.state)));
(yyval.state)[0] = (yyvsp[(3) - (3)].integer);
@@ -3273,7 +3296,7 @@ yyreduce:
case 148:
/* Line 1455 of yacc.c */
-#line 1104 "program_parse.y"
+#line 1115 "program_parse.y"
{
(yyval.integer) = STATE_TEXENV_COLOR;
;}
@@ -3282,7 +3305,7 @@ yyreduce:
case 149:
/* Line 1455 of yacc.c */
-#line 1110 "program_parse.y"
+#line 1121 "program_parse.y"
{
(yyval.integer) = STATE_AMBIENT;
;}
@@ -3291,7 +3314,7 @@ yyreduce:
case 150:
/* Line 1455 of yacc.c */
-#line 1114 "program_parse.y"
+#line 1125 "program_parse.y"
{
(yyval.integer) = STATE_DIFFUSE;
;}
@@ -3300,7 +3323,7 @@ yyreduce:
case 151:
/* Line 1455 of yacc.c */
-#line 1118 "program_parse.y"
+#line 1129 "program_parse.y"
{
(yyval.integer) = STATE_SPECULAR;
;}
@@ -3309,7 +3332,7 @@ yyreduce:
case 152:
/* Line 1455 of yacc.c */
-#line 1124 "program_parse.y"
+#line 1135 "program_parse.y"
{
if ((yyvsp[(1) - (1)].integer) >= state->MaxLights) {
yyerror(& (yylsp[(1) - (1)]), state, "invalid light selector");
@@ -3323,7 +3346,7 @@ yyreduce:
case 153:
/* Line 1455 of yacc.c */
-#line 1135 "program_parse.y"
+#line 1146 "program_parse.y"
{
memset((yyval.state), 0, sizeof((yyval.state)));
(yyval.state)[0] = STATE_TEXGEN;
@@ -3335,7 +3358,7 @@ yyreduce:
case 154:
/* Line 1455 of yacc.c */
-#line 1144 "program_parse.y"
+#line 1155 "program_parse.y"
{
(yyval.integer) = STATE_TEXGEN_EYE_S;
;}
@@ -3344,7 +3367,7 @@ yyreduce:
case 155:
/* Line 1455 of yacc.c */
-#line 1148 "program_parse.y"
+#line 1159 "program_parse.y"
{
(yyval.integer) = STATE_TEXGEN_OBJECT_S;
;}
@@ -3353,7 +3376,7 @@ yyreduce:
case 156:
/* Line 1455 of yacc.c */
-#line 1153 "program_parse.y"
+#line 1164 "program_parse.y"
{
(yyval.integer) = STATE_TEXGEN_EYE_S - STATE_TEXGEN_EYE_S;
;}
@@ -3362,7 +3385,7 @@ yyreduce:
case 157:
/* Line 1455 of yacc.c */
-#line 1157 "program_parse.y"
+#line 1168 "program_parse.y"
{
(yyval.integer) = STATE_TEXGEN_EYE_T - STATE_TEXGEN_EYE_S;
;}
@@ -3371,7 +3394,7 @@ yyreduce:
case 158:
/* Line 1455 of yacc.c */
-#line 1161 "program_parse.y"
+#line 1172 "program_parse.y"
{
(yyval.integer) = STATE_TEXGEN_EYE_R - STATE_TEXGEN_EYE_S;
;}
@@ -3380,7 +3403,7 @@ yyreduce:
case 159:
/* Line 1455 of yacc.c */
-#line 1165 "program_parse.y"
+#line 1176 "program_parse.y"
{
(yyval.integer) = STATE_TEXGEN_EYE_Q - STATE_TEXGEN_EYE_S;
;}
@@ -3389,7 +3412,7 @@ yyreduce:
case 160:
/* Line 1455 of yacc.c */
-#line 1171 "program_parse.y"
+#line 1182 "program_parse.y"
{
memset((yyval.state), 0, sizeof((yyval.state)));
(yyval.state)[0] = (yyvsp[(2) - (2)].integer);
@@ -3399,7 +3422,7 @@ yyreduce:
case 161:
/* Line 1455 of yacc.c */
-#line 1178 "program_parse.y"
+#line 1189 "program_parse.y"
{
(yyval.integer) = STATE_FOG_COLOR;
;}
@@ -3408,7 +3431,7 @@ yyreduce:
case 162:
/* Line 1455 of yacc.c */
-#line 1182 "program_parse.y"
+#line 1193 "program_parse.y"
{
(yyval.integer) = STATE_FOG_PARAMS;
;}
@@ -3417,7 +3440,7 @@ yyreduce:
case 163:
/* Line 1455 of yacc.c */
-#line 1188 "program_parse.y"
+#line 1199 "program_parse.y"
{
memset((yyval.state), 0, sizeof((yyval.state)));
(yyval.state)[0] = STATE_CLIPPLANE;
@@ -3428,7 +3451,7 @@ yyreduce:
case 164:
/* Line 1455 of yacc.c */
-#line 1196 "program_parse.y"
+#line 1207 "program_parse.y"
{
if ((yyvsp[(1) - (1)].integer) >= state->MaxClipPlanes) {
yyerror(& (yylsp[(1) - (1)]), state, "invalid clip plane selector");
@@ -3442,7 +3465,7 @@ yyreduce:
case 165:
/* Line 1455 of yacc.c */
-#line 1207 "program_parse.y"
+#line 1218 "program_parse.y"
{
memset((yyval.state), 0, sizeof((yyval.state)));
(yyval.state)[0] = (yyvsp[(2) - (2)].integer);
@@ -3452,7 +3475,7 @@ yyreduce:
case 166:
/* Line 1455 of yacc.c */
-#line 1214 "program_parse.y"
+#line 1225 "program_parse.y"
{
(yyval.integer) = STATE_POINT_SIZE;
;}
@@ -3461,7 +3484,7 @@ yyreduce:
case 167:
/* Line 1455 of yacc.c */
-#line 1218 "program_parse.y"
+#line 1229 "program_parse.y"
{
(yyval.integer) = STATE_POINT_ATTENUATION;
;}
@@ -3470,7 +3493,7 @@ yyreduce:
case 168:
/* Line 1455 of yacc.c */
-#line 1224 "program_parse.y"
+#line 1235 "program_parse.y"
{
(yyval.state)[0] = (yyvsp[(1) - (5)].state)[0];
(yyval.state)[1] = (yyvsp[(1) - (5)].state)[1];
@@ -3483,7 +3506,7 @@ yyreduce:
case 169:
/* Line 1455 of yacc.c */
-#line 1234 "program_parse.y"
+#line 1245 "program_parse.y"
{
(yyval.state)[0] = (yyvsp[(1) - (2)].state)[0];
(yyval.state)[1] = (yyvsp[(1) - (2)].state)[1];
@@ -3496,7 +3519,7 @@ yyreduce:
case 170:
/* Line 1455 of yacc.c */
-#line 1244 "program_parse.y"
+#line 1255 "program_parse.y"
{
(yyval.state)[2] = 0;
(yyval.state)[3] = 3;
@@ -3506,7 +3529,7 @@ yyreduce:
case 171:
/* Line 1455 of yacc.c */
-#line 1249 "program_parse.y"
+#line 1260 "program_parse.y"
{
/* It seems logical that the matrix row range specifier would have
* to specify a range or more than one row (i.e., $5 > $3).
@@ -3527,7 +3550,7 @@ yyreduce:
case 172:
/* Line 1455 of yacc.c */
-#line 1267 "program_parse.y"
+#line 1278 "program_parse.y"
{
(yyval.state)[0] = (yyvsp[(2) - (3)].state)[0];
(yyval.state)[1] = (yyvsp[(2) - (3)].state)[1];
@@ -3538,7 +3561,7 @@ yyreduce:
case 173:
/* Line 1455 of yacc.c */
-#line 1275 "program_parse.y"
+#line 1286 "program_parse.y"
{
(yyval.integer) = 0;
;}
@@ -3547,7 +3570,7 @@ yyreduce:
case 174:
/* Line 1455 of yacc.c */
-#line 1279 "program_parse.y"
+#line 1290 "program_parse.y"
{
(yyval.integer) = (yyvsp[(1) - (1)].integer);
;}
@@ -3556,7 +3579,7 @@ yyreduce:
case 175:
/* Line 1455 of yacc.c */
-#line 1285 "program_parse.y"
+#line 1296 "program_parse.y"
{
(yyval.integer) = STATE_MATRIX_INVERSE;
;}
@@ -3565,7 +3588,7 @@ yyreduce:
case 176:
/* Line 1455 of yacc.c */
-#line 1289 "program_parse.y"
+#line 1300 "program_parse.y"
{
(yyval.integer) = STATE_MATRIX_TRANSPOSE;
;}
@@ -3574,7 +3597,7 @@ yyreduce:
case 177:
/* Line 1455 of yacc.c */
-#line 1293 "program_parse.y"
+#line 1304 "program_parse.y"
{
(yyval.integer) = STATE_MATRIX_INVTRANS;
;}
@@ -3583,7 +3606,7 @@ yyreduce:
case 178:
/* Line 1455 of yacc.c */
-#line 1299 "program_parse.y"
+#line 1310 "program_parse.y"
{
if ((yyvsp[(1) - (1)].integer) > 3) {
yyerror(& (yylsp[(1) - (1)]), state, "invalid matrix row reference");
@@ -3597,7 +3620,7 @@ yyreduce:
case 179:
/* Line 1455 of yacc.c */
-#line 1310 "program_parse.y"
+#line 1321 "program_parse.y"
{
(yyval.state)[0] = STATE_MODELVIEW_MATRIX;
(yyval.state)[1] = (yyvsp[(2) - (2)].integer);
@@ -3607,7 +3630,7 @@ yyreduce:
case 180:
/* Line 1455 of yacc.c */
-#line 1315 "program_parse.y"
+#line 1326 "program_parse.y"
{
(yyval.state)[0] = STATE_PROJECTION_MATRIX;
(yyval.state)[1] = 0;
@@ -3617,7 +3640,7 @@ yyreduce:
case 181:
/* Line 1455 of yacc.c */
-#line 1320 "program_parse.y"
+#line 1331 "program_parse.y"
{
(yyval.state)[0] = STATE_MVP_MATRIX;
(yyval.state)[1] = 0;
@@ -3627,7 +3650,7 @@ yyreduce:
case 182:
/* Line 1455 of yacc.c */
-#line 1325 "program_parse.y"
+#line 1336 "program_parse.y"
{
(yyval.state)[0] = STATE_TEXTURE_MATRIX;
(yyval.state)[1] = (yyvsp[(2) - (2)].integer);
@@ -3637,7 +3660,7 @@ yyreduce:
case 183:
/* Line 1455 of yacc.c */
-#line 1330 "program_parse.y"
+#line 1341 "program_parse.y"
{
YYERROR;
;}
@@ -3646,7 +3669,7 @@ yyreduce:
case 184:
/* Line 1455 of yacc.c */
-#line 1334 "program_parse.y"
+#line 1345 "program_parse.y"
{
(yyval.state)[0] = STATE_PROGRAM_MATRIX;
(yyval.state)[1] = (yyvsp[(3) - (4)].integer);
@@ -3656,7 +3679,7 @@ yyreduce:
case 185:
/* Line 1455 of yacc.c */
-#line 1341 "program_parse.y"
+#line 1352 "program_parse.y"
{
(yyval.integer) = 0;
;}
@@ -3665,7 +3688,7 @@ yyreduce:
case 186:
/* Line 1455 of yacc.c */
-#line 1345 "program_parse.y"
+#line 1356 "program_parse.y"
{
(yyval.integer) = (yyvsp[(1) - (1)].integer);
;}
@@ -3674,7 +3697,7 @@ yyreduce:
case 187:
/* Line 1455 of yacc.c */
-#line 1350 "program_parse.y"
+#line 1361 "program_parse.y"
{
/* Since GL_ARB_vertex_blend isn't supported, only modelview matrix
* zero is valid.
@@ -3691,7 +3714,7 @@ yyreduce:
case 188:
/* Line 1455 of yacc.c */
-#line 1363 "program_parse.y"
+#line 1374 "program_parse.y"
{
/* Since GL_ARB_matrix_palette isn't supported, just let any value
* through here. The error will be generated later.
@@ -3703,7 +3726,7 @@ yyreduce:
case 189:
/* Line 1455 of yacc.c */
-#line 1371 "program_parse.y"
+#line 1382 "program_parse.y"
{
if ((yyvsp[(1) - (1)].integer) >= state->MaxProgramMatrices) {
yyerror(& (yylsp[(1) - (1)]), state, "invalid program matrix selector");
@@ -3717,7 +3740,7 @@ yyreduce:
case 194:
/* Line 1455 of yacc.c */
-#line 1388 "program_parse.y"
+#line 1399 "program_parse.y"
{
memset((yyval.state), 0, sizeof((yyval.state)));
(yyval.state)[0] = state->state_param_enum;
@@ -3730,7 +3753,7 @@ yyreduce:
case 195:
/* Line 1455 of yacc.c */
-#line 1398 "program_parse.y"
+#line 1409 "program_parse.y"
{
(yyval.state)[0] = (yyvsp[(1) - (1)].integer);
(yyval.state)[1] = (yyvsp[(1) - (1)].integer);
@@ -3740,7 +3763,7 @@ yyreduce:
case 196:
/* Line 1455 of yacc.c */
-#line 1403 "program_parse.y"
+#line 1414 "program_parse.y"
{
(yyval.state)[0] = (yyvsp[(1) - (3)].integer);
(yyval.state)[1] = (yyvsp[(3) - (3)].integer);
@@ -3750,7 +3773,7 @@ yyreduce:
case 197:
/* Line 1455 of yacc.c */
-#line 1410 "program_parse.y"
+#line 1421 "program_parse.y"
{
memset((yyval.state), 0, sizeof((yyval.state)));
(yyval.state)[0] = state->state_param_enum;
@@ -3763,7 +3786,7 @@ yyreduce:
case 198:
/* Line 1455 of yacc.c */
-#line 1420 "program_parse.y"
+#line 1431 "program_parse.y"
{
memset((yyval.state), 0, sizeof((yyval.state)));
(yyval.state)[0] = state->state_param_enum;
@@ -3776,7 +3799,7 @@ yyreduce:
case 199:
/* Line 1455 of yacc.c */
-#line 1429 "program_parse.y"
+#line 1440 "program_parse.y"
{
(yyval.state)[0] = (yyvsp[(1) - (1)].integer);
(yyval.state)[1] = (yyvsp[(1) - (1)].integer);
@@ -3786,7 +3809,7 @@ yyreduce:
case 200:
/* Line 1455 of yacc.c */
-#line 1434 "program_parse.y"
+#line 1445 "program_parse.y"
{
(yyval.state)[0] = (yyvsp[(1) - (3)].integer);
(yyval.state)[1] = (yyvsp[(3) - (3)].integer);
@@ -3796,7 +3819,7 @@ yyreduce:
case 201:
/* Line 1455 of yacc.c */
-#line 1441 "program_parse.y"
+#line 1452 "program_parse.y"
{
memset((yyval.state), 0, sizeof((yyval.state)));
(yyval.state)[0] = state->state_param_enum;
@@ -3809,7 +3832,7 @@ yyreduce:
case 202:
/* Line 1455 of yacc.c */
-#line 1451 "program_parse.y"
+#line 1462 "program_parse.y"
{
if ((yyvsp[(1) - (1)].integer) >= state->limits->MaxEnvParams) {
yyerror(& (yylsp[(1) - (1)]), state, "invalid environment parameter reference");
@@ -3822,7 +3845,7 @@ yyreduce:
case 203:
/* Line 1455 of yacc.c */
-#line 1461 "program_parse.y"
+#line 1472 "program_parse.y"
{
if ((yyvsp[(1) - (1)].integer) >= state->limits->MaxLocalParams) {
yyerror(& (yylsp[(1) - (1)]), state, "invalid local parameter reference");
@@ -3835,7 +3858,7 @@ yyreduce:
case 208:
/* Line 1455 of yacc.c */
-#line 1476 "program_parse.y"
+#line 1487 "program_parse.y"
{
(yyval.vector).count = 1;
(yyval.vector).data[0] = (yyvsp[(1) - (1)].real);
@@ -3845,7 +3868,7 @@ yyreduce:
case 209:
/* Line 1455 of yacc.c */
-#line 1483 "program_parse.y"
+#line 1494 "program_parse.y"
{
(yyval.vector).count = 1;
(yyval.vector).data[0] = (yyvsp[(1) - (1)].real);
@@ -3855,7 +3878,7 @@ yyreduce:
case 210:
/* Line 1455 of yacc.c */
-#line 1488 "program_parse.y"
+#line 1499 "program_parse.y"
{
(yyval.vector).count = 1;
(yyval.vector).data[0] = (float) (yyvsp[(1) - (1)].integer);
@@ -3865,7 +3888,7 @@ yyreduce:
case 211:
/* Line 1455 of yacc.c */
-#line 1495 "program_parse.y"
+#line 1506 "program_parse.y"
{
(yyval.vector).count = 1;
(yyval.vector).data[0] = (yyvsp[(2) - (3)].real);
@@ -3875,7 +3898,7 @@ yyreduce:
case 212:
/* Line 1455 of yacc.c */
-#line 1500 "program_parse.y"
+#line 1511 "program_parse.y"
{
(yyval.vector).count = 2;
(yyval.vector).data[0] = (yyvsp[(2) - (5)].real);
@@ -3886,7 +3909,7 @@ yyreduce:
case 213:
/* Line 1455 of yacc.c */
-#line 1507 "program_parse.y"
+#line 1518 "program_parse.y"
{
(yyval.vector).count = 3;
(yyval.vector).data[0] = (yyvsp[(2) - (7)].real);
@@ -3898,7 +3921,7 @@ yyreduce:
case 214:
/* Line 1455 of yacc.c */
-#line 1515 "program_parse.y"
+#line 1526 "program_parse.y"
{
(yyval.vector).count = 4;
(yyval.vector).data[0] = (yyvsp[(2) - (9)].real);
@@ -3911,7 +3934,7 @@ yyreduce:
case 215:
/* Line 1455 of yacc.c */
-#line 1525 "program_parse.y"
+#line 1536 "program_parse.y"
{
(yyval.real) = ((yyvsp[(1) - (2)].negate)) ? -(yyvsp[(2) - (2)].real) : (yyvsp[(2) - (2)].real);
;}
@@ -3920,7 +3943,7 @@ yyreduce:
case 216:
/* Line 1455 of yacc.c */
-#line 1529 "program_parse.y"
+#line 1540 "program_parse.y"
{
(yyval.real) = (float)(((yyvsp[(1) - (2)].negate)) ? -(yyvsp[(2) - (2)].integer) : (yyvsp[(2) - (2)].integer));
;}
@@ -3929,42 +3952,42 @@ yyreduce:
case 217:
/* Line 1455 of yacc.c */
-#line 1534 "program_parse.y"
+#line 1545 "program_parse.y"
{ (yyval.negate) = FALSE; ;}
break;
case 218:
/* Line 1455 of yacc.c */
-#line 1535 "program_parse.y"
+#line 1546 "program_parse.y"
{ (yyval.negate) = TRUE; ;}
break;
case 219:
/* Line 1455 of yacc.c */
-#line 1536 "program_parse.y"
+#line 1547 "program_parse.y"
{ (yyval.negate) = FALSE; ;}
break;
case 220:
/* Line 1455 of yacc.c */
-#line 1539 "program_parse.y"
+#line 1550 "program_parse.y"
{ (yyval.integer) = (yyvsp[(1) - (1)].integer); ;}
break;
case 222:
/* Line 1455 of yacc.c */
-#line 1542 "program_parse.y"
+#line 1553 "program_parse.y"
{ (yyval.integer) = (yyvsp[(1) - (1)].integer); ;}
break;
case 224:
/* Line 1455 of yacc.c */
-#line 1546 "program_parse.y"
+#line 1557 "program_parse.y"
{
if (!declare_variable(state, (yyvsp[(3) - (3)].string), (yyvsp[(0) - (3)].integer), & (yylsp[(3) - (3)]))) {
YYERROR;
@@ -3975,7 +3998,7 @@ yyreduce:
case 225:
/* Line 1455 of yacc.c */
-#line 1552 "program_parse.y"
+#line 1563 "program_parse.y"
{
if (!declare_variable(state, (yyvsp[(1) - (1)].string), (yyvsp[(0) - (1)].integer), & (yylsp[(1) - (1)]))) {
YYERROR;
@@ -3986,7 +4009,7 @@ yyreduce:
case 226:
/* Line 1455 of yacc.c */
-#line 1560 "program_parse.y"
+#line 1571 "program_parse.y"
{
struct asm_symbol *const s =
declare_variable(state, (yyvsp[(2) - (4)].string), at_output, & (yylsp[(2) - (4)]));
@@ -4002,7 +4025,7 @@ yyreduce:
case 227:
/* Line 1455 of yacc.c */
-#line 1573 "program_parse.y"
+#line 1584 "program_parse.y"
{
if (state->mode == ARB_vertex) {
(yyval.result) = VERT_RESULT_HPOS;
@@ -4016,7 +4039,7 @@ yyreduce:
case 228:
/* Line 1455 of yacc.c */
-#line 1582 "program_parse.y"
+#line 1593 "program_parse.y"
{
if (state->mode == ARB_vertex) {
(yyval.result) = VERT_RESULT_FOGC;
@@ -4030,7 +4053,7 @@ yyreduce:
case 229:
/* Line 1455 of yacc.c */
-#line 1591 "program_parse.y"
+#line 1602 "program_parse.y"
{
(yyval.result) = (yyvsp[(2) - (2)].result);
;}
@@ -4039,7 +4062,7 @@ yyreduce:
case 230:
/* Line 1455 of yacc.c */
-#line 1595 "program_parse.y"
+#line 1606 "program_parse.y"
{
if (state->mode == ARB_vertex) {
(yyval.result) = VERT_RESULT_PSIZ;
@@ -4053,7 +4076,7 @@ yyreduce:
case 231:
/* Line 1455 of yacc.c */
-#line 1604 "program_parse.y"
+#line 1615 "program_parse.y"
{
if (state->mode == ARB_vertex) {
(yyval.result) = VERT_RESULT_TEX0 + (yyvsp[(3) - (3)].integer);
@@ -4067,7 +4090,7 @@ yyreduce:
case 232:
/* Line 1455 of yacc.c */
-#line 1613 "program_parse.y"
+#line 1624 "program_parse.y"
{
if (state->mode == ARB_fragment) {
(yyval.result) = FRAG_RESULT_DEPTH;
@@ -4081,7 +4104,7 @@ yyreduce:
case 233:
/* Line 1455 of yacc.c */
-#line 1624 "program_parse.y"
+#line 1635 "program_parse.y"
{
(yyval.result) = (yyvsp[(2) - (3)].integer) + (yyvsp[(3) - (3)].integer);
;}
@@ -4090,7 +4113,7 @@ yyreduce:
case 234:
/* Line 1455 of yacc.c */
-#line 1630 "program_parse.y"
+#line 1641 "program_parse.y"
{
(yyval.integer) = (state->mode == ARB_vertex)
? VERT_RESULT_COL0
@@ -4101,7 +4124,7 @@ yyreduce:
case 235:
/* Line 1455 of yacc.c */
-#line 1636 "program_parse.y"
+#line 1647 "program_parse.y"
{
if (state->mode == ARB_vertex) {
(yyval.integer) = VERT_RESULT_COL0;
@@ -4115,7 +4138,7 @@ yyreduce:
case 236:
/* Line 1455 of yacc.c */
-#line 1645 "program_parse.y"
+#line 1656 "program_parse.y"
{
if (state->mode == ARB_vertex) {
(yyval.integer) = VERT_RESULT_BFC0;
@@ -4129,7 +4152,7 @@ yyreduce:
case 237:
/* Line 1455 of yacc.c */
-#line 1656 "program_parse.y"
+#line 1667 "program_parse.y"
{
(yyval.integer) = 0;
;}
@@ -4138,7 +4161,7 @@ yyreduce:
case 238:
/* Line 1455 of yacc.c */
-#line 1660 "program_parse.y"
+#line 1671 "program_parse.y"
{
if (state->mode == ARB_vertex) {
(yyval.integer) = 0;
@@ -4152,7 +4175,7 @@ yyreduce:
case 239:
/* Line 1455 of yacc.c */
-#line 1669 "program_parse.y"
+#line 1680 "program_parse.y"
{
if (state->mode == ARB_vertex) {
(yyval.integer) = 1;
@@ -4166,91 +4189,91 @@ yyreduce:
case 240:
/* Line 1455 of yacc.c */
-#line 1679 "program_parse.y"
+#line 1690 "program_parse.y"
{ (yyval.integer) = 0; ;}
break;
case 241:
/* Line 1455 of yacc.c */
-#line 1680 "program_parse.y"
+#line 1691 "program_parse.y"
{ (yyval.integer) = 0; ;}
break;
case 242:
/* Line 1455 of yacc.c */
-#line 1681 "program_parse.y"
+#line 1692 "program_parse.y"
{ (yyval.integer) = 1; ;}
break;
case 243:
/* Line 1455 of yacc.c */
-#line 1684 "program_parse.y"
+#line 1695 "program_parse.y"
{ (yyval.integer) = 0; ;}
break;
case 244:
/* Line 1455 of yacc.c */
-#line 1685 "program_parse.y"
+#line 1696 "program_parse.y"
{ (yyval.integer) = 0; ;}
break;
case 245:
/* Line 1455 of yacc.c */
-#line 1686 "program_parse.y"
+#line 1697 "program_parse.y"
{ (yyval.integer) = 1; ;}
break;
case 246:
/* Line 1455 of yacc.c */
-#line 1689 "program_parse.y"
+#line 1700 "program_parse.y"
{ (yyval.integer) = 0; ;}
break;
case 247:
/* Line 1455 of yacc.c */
-#line 1690 "program_parse.y"
+#line 1701 "program_parse.y"
{ (yyval.integer) = (yyvsp[(2) - (3)].integer); ;}
break;
case 248:
/* Line 1455 of yacc.c */
-#line 1693 "program_parse.y"
+#line 1704 "program_parse.y"
{ (yyval.integer) = 0; ;}
break;
case 249:
/* Line 1455 of yacc.c */
-#line 1694 "program_parse.y"
+#line 1705 "program_parse.y"
{ (yyval.integer) = (yyvsp[(2) - (3)].integer); ;}
break;
case 250:
/* Line 1455 of yacc.c */
-#line 1697 "program_parse.y"
+#line 1708 "program_parse.y"
{ (yyval.integer) = 0; ;}
break;
case 251:
/* Line 1455 of yacc.c */
-#line 1698 "program_parse.y"
+#line 1709 "program_parse.y"
{ (yyval.integer) = (yyvsp[(2) - (3)].integer); ;}
break;
case 252:
/* Line 1455 of yacc.c */
-#line 1702 "program_parse.y"
+#line 1713 "program_parse.y"
{
if ((yyvsp[(1) - (1)].integer) >= state->MaxTextureCoordUnits) {
yyerror(& (yylsp[(1) - (1)]), state, "invalid texture coordinate unit selector");
@@ -4264,7 +4287,7 @@ yyreduce:
case 253:
/* Line 1455 of yacc.c */
-#line 1713 "program_parse.y"
+#line 1724 "program_parse.y"
{
if ((yyvsp[(1) - (1)].integer) >= state->MaxTextureImageUnits) {
yyerror(& (yylsp[(1) - (1)]), state, "invalid texture image unit selector");
@@ -4278,7 +4301,7 @@ yyreduce:
case 254:
/* Line 1455 of yacc.c */
-#line 1724 "program_parse.y"
+#line 1735 "program_parse.y"
{
if ((yyvsp[(1) - (1)].integer) >= state->MaxTextureUnits) {
yyerror(& (yylsp[(1) - (1)]), state, "invalid texture unit selector");
@@ -4292,7 +4315,7 @@ yyreduce:
case 255:
/* Line 1455 of yacc.c */
-#line 1735 "program_parse.y"
+#line 1746 "program_parse.y"
{
struct asm_symbol *exist = (struct asm_symbol *)
_mesa_symbol_table_find_symbol(state->st, 0, (yyvsp[(2) - (4)].string));
@@ -4316,7 +4339,7 @@ yyreduce:
/* Line 1455 of yacc.c */
-#line 4320 "program_parse.tab.c"
+#line 4343 "program_parse.tab.c"
default: break;
}
YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -4535,7 +4558,7 @@ yyreturn:
/* Line 1675 of yacc.c */
-#line 1755 "program_parse.y"
+#line 1766 "program_parse.y"
struct asm_instruction *
diff --git a/src/mesa/shader/program_parse.y b/src/mesa/shader/program_parse.y
index a0bec96924a..95d6c0ea313 100644
--- a/src/mesa/shader/program_parse.y
+++ b/src/mesa/shader/program_parse.y
@@ -302,7 +302,15 @@ statement: instruction ';'
;
instruction: ALU_instruction
+ {
+ $$ = $1;
+ state->prog->NumAluInstructions++;
+ }
| TexInstruction
+ {
+ $$ = $1;
+ state->prog->NumTexInstructions++;
+ }
;
ALU_instruction: ARL_instruction
@@ -368,6 +376,8 @@ SAMPLE_instruction: SAMPLE_OP maskedDstReg ',' swizzleSrcReg ',' texImageUnit ',
$$->Base.SaturateMode = $1.SaturateMode;
$$->Base.TexSrcUnit = $6;
$$->Base.TexSrcTarget = $8;
+
+ state->prog->TexturesUsed[$6] |= (1U << $8);
}
}
;
@@ -375,6 +385,7 @@ SAMPLE_instruction: SAMPLE_OP maskedDstReg ',' swizzleSrcReg ',' texImageUnit ',
KIL_instruction: KIL swizzleSrcReg
{
$$ = asm_instruction_ctor(OPCODE_KIL, NULL, & $2, NULL, NULL);
+ state->fragment.UsesKill = 1;
}
;