Mesa (asm-shader-rework-1): ARB prog parser: Set correct register file for OUTPUT variables

Ian Romanick idr at kemper.freedesktop.org
Wed Jul 29 16:49:05 UTC 2009


Module: Mesa
Branch: asm-shader-rework-1
Commit: 86b33b5649710f351d241ce6890200ac1f38f724
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=86b33b5649710f351d241ce6890200ac1f38f724

Author: Ian Romanick <ian.d.romanick at intel.com>
Date:   Tue Jul 28 21:56:42 2009 -0700

ARB prog parser: Set correct register file for OUTPUT variables

---

 src/mesa/shader/program_parse.tab.c |  401 ++++++++++++++++++-----------------
 src/mesa/shader/program_parse.y     |   11 +-
 2 files changed, 213 insertions(+), 199 deletions(-)

diff --git a/src/mesa/shader/program_parse.tab.c b/src/mesa/shader/program_parse.tab.c
index 4a05d10..83c7419 100644
--- a/src/mesa/shader/program_parse.tab.c
+++ b/src/mesa/shader/program_parse.tab.c
@@ -760,28 +760,28 @@ static const yytype_uint16 yyrline[] =
      338,   341,   342,   345,   351,   358,   365,   373,   380,   388,
      433,   440,   446,   447,   448,   449,   450,   451,   452,   453,
      454,   455,   456,   457,   460,   472,   485,   498,   520,   529,
-     538,   545,   554,   582,   624,   635,   656,   666,   672,   696,
-     713,   713,   715,   722,   734,   735,   736,   739,   751,   763,
-     781,   792,   804,   806,   807,   808,   809,   812,   812,   812,
-     812,   813,   816,   817,   818,   819,   820,   821,   824,   842,
-     846,   852,   856,   860,   864,   873,   882,   886,   891,   897,
-     908,   908,   909,   911,   915,   919,   923,   929,   929,   931,
-     947,   970,   973,   984,   990,   996,   997,  1004,  1010,  1016,
-    1024,  1030,  1036,  1044,  1050,  1056,  1064,  1065,  1068,  1069,
-    1070,  1071,  1072,  1073,  1074,  1075,  1076,  1077,  1080,  1089,
-    1093,  1097,  1103,  1112,  1116,  1120,  1129,  1133,  1139,  1145,
-    1152,  1157,  1165,  1175,  1177,  1185,  1191,  1195,  1199,  1205,
-    1216,  1225,  1229,  1234,  1238,  1242,  1246,  1252,  1259,  1263,
-    1269,  1277,  1288,  1295,  1299,  1305,  1315,  1326,  1330,  1348,
-    1357,  1360,  1366,  1370,  1374,  1380,  1391,  1396,  1401,  1406,
-    1411,  1416,  1424,  1427,  1432,  1445,  1453,  1466,  1466,  1468,
-    1468,  1470,  1480,  1485,  1492,  1502,  1511,  1516,  1523,  1533,
-    1543,  1555,  1555,  1556,  1556,  1558,  1565,  1570,  1577,  1585,
-    1593,  1602,  1613,  1617,  1623,  1624,  1625,  1628,  1628,  1631,
-    1631,  1634,  1640,  1648,  1661,  1670,  1679,  1683,  1692,  1701,
-    1712,  1719,  1724,  1733,  1745,  1748,  1757,  1768,  1769,  1770,
-    1773,  1774,  1775,  1778,  1779,  1782,  1783,  1786,  1787,  1790,
-    1801,  1812,  1823
+     538,   545,   554,   582,   624,   635,   656,   666,   672,   703,
+     720,   720,   722,   729,   741,   742,   743,   746,   758,   770,
+     788,   799,   811,   813,   814,   815,   816,   819,   819,   819,
+     819,   820,   823,   824,   825,   826,   827,   828,   831,   849,
+     853,   859,   863,   867,   871,   880,   889,   893,   898,   904,
+     915,   915,   916,   918,   922,   926,   930,   936,   936,   938,
+     954,   977,   980,   991,   997,  1003,  1004,  1011,  1017,  1023,
+    1031,  1037,  1043,  1051,  1057,  1063,  1071,  1072,  1075,  1076,
+    1077,  1078,  1079,  1080,  1081,  1082,  1083,  1084,  1087,  1096,
+    1100,  1104,  1110,  1119,  1123,  1127,  1136,  1140,  1146,  1152,
+    1159,  1164,  1172,  1182,  1184,  1192,  1198,  1202,  1206,  1212,
+    1223,  1232,  1236,  1241,  1245,  1249,  1253,  1259,  1266,  1270,
+    1276,  1284,  1295,  1302,  1306,  1312,  1322,  1333,  1337,  1355,
+    1364,  1367,  1373,  1377,  1381,  1387,  1398,  1403,  1408,  1413,
+    1418,  1423,  1431,  1434,  1439,  1452,  1460,  1473,  1473,  1475,
+    1475,  1477,  1487,  1492,  1499,  1509,  1518,  1523,  1530,  1540,
+    1550,  1562,  1562,  1563,  1563,  1565,  1572,  1577,  1584,  1592,
+    1600,  1609,  1620,  1624,  1630,  1631,  1632,  1635,  1635,  1638,
+    1638,  1641,  1647,  1655,  1668,  1677,  1686,  1690,  1699,  1708,
+    1719,  1726,  1731,  1740,  1752,  1755,  1764,  1775,  1776,  1777,
+    1780,  1781,  1782,  1785,  1786,  1789,  1790,  1793,  1794,  1797,
+    1808,  1819,  1830
 };
 #endif
 
@@ -2638,12 +2638,19 @@ yyreduce:
 	   }
 
 	   init_dst_reg(& (yyval.dst_reg));
-	   if (s->type == at_temp) {
+	   switch (s->type) {
+	   case at_temp:
 	      (yyval.dst_reg).File = PROGRAM_TEMPORARY;
 	      (yyval.dst_reg).Index = s->temp_binding;
-	   } else {
+	      break;
+	   case at_output:
+	      (yyval.dst_reg).File = PROGRAM_OUTPUT;
+	      (yyval.dst_reg).Index = s->output_binding;
+	      break;
+	   default:
 	      (yyval.dst_reg).File = s->param_binding_type;
 	      (yyval.dst_reg).Index = s->param_binding_begin;
+	      break;
 	   }
 	;}
     break;
@@ -2651,7 +2658,7 @@ yyreduce:
   case 59:
 
 /* Line 1455 of yacc.c  */
-#line 697 "program_parse.y"
+#line 704 "program_parse.y"
     {
 	   struct asm_symbol *const s = (struct asm_symbol *)
 	      _mesa_symbol_table_find_symbol(state->st, 0, (yyvsp[(1) - (1)].string));
@@ -2671,7 +2678,7 @@ yyreduce:
   case 62:
 
 /* Line 1455 of yacc.c  */
-#line 716 "program_parse.y"
+#line 723 "program_parse.y"
     {
 	   init_src_reg(& (yyval.src_reg));
 	   (yyval.src_reg).Base.Index = (yyvsp[(1) - (1)].integer);
@@ -2681,7 +2688,7 @@ yyreduce:
   case 63:
 
 /* Line 1455 of yacc.c  */
-#line 723 "program_parse.y"
+#line 730 "program_parse.y"
     {
 	   /* FINISHME: Add support for multiple address registers.
 	    */
@@ -2696,28 +2703,28 @@ yyreduce:
   case 64:
 
 /* Line 1455 of yacc.c  */
-#line 734 "program_parse.y"
+#line 741 "program_parse.y"
     { (yyval.integer) = 0; ;}
     break;
 
   case 65:
 
 /* Line 1455 of yacc.c  */
-#line 735 "program_parse.y"
+#line 742 "program_parse.y"
     { (yyval.integer) = (yyvsp[(2) - (2)].integer); ;}
     break;
 
   case 66:
 
 /* Line 1455 of yacc.c  */
-#line 736 "program_parse.y"
+#line 743 "program_parse.y"
     { (yyval.integer) = -(yyvsp[(2) - (2)].integer); ;}
     break;
 
   case 67:
 
 /* Line 1455 of yacc.c  */
-#line 740 "program_parse.y"
+#line 747 "program_parse.y"
     {
 	   if (((yyvsp[(1) - (1)].integer) < 0) || ((yyvsp[(1) - (1)].integer) > 63)) {
 	      yyerror(& (yylsp[(1) - (1)]), state,
@@ -2732,7 +2739,7 @@ yyreduce:
   case 68:
 
 /* Line 1455 of yacc.c  */
-#line 752 "program_parse.y"
+#line 759 "program_parse.y"
     {
 	   if (((yyvsp[(1) - (1)].integer) < 0) || ((yyvsp[(1) - (1)].integer) > 64)) {
 	      yyerror(& (yylsp[(1) - (1)]), state,
@@ -2747,7 +2754,7 @@ yyreduce:
   case 69:
 
 /* Line 1455 of yacc.c  */
-#line 764 "program_parse.y"
+#line 771 "program_parse.y"
     {
 	   struct asm_symbol *const s = (struct asm_symbol *)
 	      _mesa_symbol_table_find_symbol(state->st, 0, (yyvsp[(1) - (1)].string));
@@ -2768,7 +2775,7 @@ yyreduce:
   case 70:
 
 /* Line 1455 of yacc.c  */
-#line 782 "program_parse.y"
+#line 789 "program_parse.y"
     {
 	   if ((yyvsp[(1) - (1)].swiz_mask).mask != WRITEMASK_X) {
 	      yyerror(& (yylsp[(1) - (1)]), state, "invalid address component selector");
@@ -2782,7 +2789,7 @@ yyreduce:
   case 71:
 
 /* Line 1455 of yacc.c  */
-#line 793 "program_parse.y"
+#line 800 "program_parse.y"
     {
 	   if ((yyvsp[(1) - (1)].swiz_mask).mask != WRITEMASK_X) {
 	      yyerror(& (yylsp[(1) - (1)]), state,
@@ -2797,21 +2804,21 @@ yyreduce:
   case 76:
 
 /* Line 1455 of yacc.c  */
-#line 809 "program_parse.y"
+#line 816 "program_parse.y"
     { (yyval.swiz_mask).swizzle = SWIZZLE_NOOP; (yyval.swiz_mask).mask = WRITEMASK_XYZW; ;}
     break;
 
   case 81:
 
 /* Line 1455 of yacc.c  */
-#line 813 "program_parse.y"
+#line 820 "program_parse.y"
     { (yyval.swiz_mask).swizzle = SWIZZLE_NOOP; (yyval.swiz_mask).mask = WRITEMASK_XYZW; ;}
     break;
 
   case 88:
 
 /* Line 1455 of yacc.c  */
-#line 825 "program_parse.y"
+#line 832 "program_parse.y"
     {
 	   struct asm_symbol *const s =
 	      declare_variable(state, (yyvsp[(2) - (4)].string), at_attrib, & (yylsp[(2) - (4)]));
@@ -2832,7 +2839,7 @@ yyreduce:
   case 89:
 
 /* Line 1455 of yacc.c  */
-#line 843 "program_parse.y"
+#line 850 "program_parse.y"
     {
 	   (yyval.attrib) = (yyvsp[(2) - (2)].attrib);
 	;}
@@ -2841,7 +2848,7 @@ yyreduce:
   case 90:
 
 /* Line 1455 of yacc.c  */
-#line 847 "program_parse.y"
+#line 854 "program_parse.y"
     {
 	   (yyval.attrib) = (yyvsp[(2) - (2)].attrib);
 	;}
@@ -2850,7 +2857,7 @@ yyreduce:
   case 91:
 
 /* Line 1455 of yacc.c  */
-#line 853 "program_parse.y"
+#line 860 "program_parse.y"
     {
 	   (yyval.attrib) = VERT_ATTRIB_POS;
 	;}
@@ -2859,7 +2866,7 @@ yyreduce:
   case 92:
 
 /* Line 1455 of yacc.c  */
-#line 857 "program_parse.y"
+#line 864 "program_parse.y"
     {
 	   (yyval.attrib) = VERT_ATTRIB_WEIGHT;
 	;}
@@ -2868,7 +2875,7 @@ yyreduce:
   case 93:
 
 /* Line 1455 of yacc.c  */
-#line 861 "program_parse.y"
+#line 868 "program_parse.y"
     {
 	   (yyval.attrib) = VERT_ATTRIB_NORMAL;
 	;}
@@ -2877,7 +2884,7 @@ yyreduce:
   case 94:
 
 /* Line 1455 of yacc.c  */
-#line 865 "program_parse.y"
+#line 872 "program_parse.y"
     {
 	   if (!state->ctx->Extensions.EXT_secondary_color) {
 	      yyerror(& (yylsp[(2) - (2)]), state, "GL_EXT_secondary_color not supported");
@@ -2891,7 +2898,7 @@ yyreduce:
   case 95:
 
 /* Line 1455 of yacc.c  */
-#line 874 "program_parse.y"
+#line 881 "program_parse.y"
     {
 	   if (!state->ctx->Extensions.EXT_fog_coord) {
 	      yyerror(& (yylsp[(1) - (1)]), state, "GL_EXT_fog_coord not supported");
@@ -2905,7 +2912,7 @@ yyreduce:
   case 96:
 
 /* Line 1455 of yacc.c  */
-#line 883 "program_parse.y"
+#line 890 "program_parse.y"
     {
 	   (yyval.attrib) = VERT_ATTRIB_TEX0 + (yyvsp[(2) - (2)].integer);
 	;}
@@ -2914,7 +2921,7 @@ yyreduce:
   case 97:
 
 /* Line 1455 of yacc.c  */
-#line 887 "program_parse.y"
+#line 894 "program_parse.y"
     {
 	   yyerror(& (yylsp[(1) - (4)]), state, "GL_ARB_matrix_palette not supported");
 	   YYERROR;
@@ -2924,7 +2931,7 @@ yyreduce:
   case 98:
 
 /* Line 1455 of yacc.c  */
-#line 892 "program_parse.y"
+#line 899 "program_parse.y"
     {
 	   (yyval.attrib) = VERT_ATTRIB_GENERIC0 + (yyvsp[(3) - (4)].integer);
 	;}
@@ -2933,7 +2940,7 @@ yyreduce:
   case 99:
 
 /* Line 1455 of yacc.c  */
-#line 898 "program_parse.y"
+#line 905 "program_parse.y"
     {
 	   if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->limits->MaxAttribs) {
 	      yyerror(& (yylsp[(1) - (1)]), state, "invalid vertex attribute reference");
@@ -2947,7 +2954,7 @@ yyreduce:
   case 103:
 
 /* Line 1455 of yacc.c  */
-#line 912 "program_parse.y"
+#line 919 "program_parse.y"
     {
 	   (yyval.attrib) = FRAG_ATTRIB_WPOS;
 	;}
@@ -2956,7 +2963,7 @@ yyreduce:
   case 104:
 
 /* Line 1455 of yacc.c  */
-#line 916 "program_parse.y"
+#line 923 "program_parse.y"
     {
 	   (yyval.attrib) = FRAG_ATTRIB_COL0 + (yyvsp[(2) - (2)].integer);
 	;}
@@ -2965,7 +2972,7 @@ yyreduce:
   case 105:
 
 /* Line 1455 of yacc.c  */
-#line 920 "program_parse.y"
+#line 927 "program_parse.y"
     {
 	   (yyval.attrib) = FRAG_ATTRIB_FOGC;
 	;}
@@ -2974,7 +2981,7 @@ yyreduce:
   case 106:
 
 /* Line 1455 of yacc.c  */
-#line 924 "program_parse.y"
+#line 931 "program_parse.y"
     {
 	   (yyval.attrib) = FRAG_ATTRIB_TEX0 + (yyvsp[(2) - (2)].integer);
 	;}
@@ -2983,7 +2990,7 @@ yyreduce:
   case 109:
 
 /* Line 1455 of yacc.c  */
-#line 932 "program_parse.y"
+#line 939 "program_parse.y"
     {
 	   struct asm_symbol *const s =
 	      declare_variable(state, (yyvsp[(2) - (3)].string), at_param, & (yylsp[(2) - (3)]));
@@ -3002,7 +3009,7 @@ yyreduce:
   case 110:
 
 /* Line 1455 of yacc.c  */
-#line 948 "program_parse.y"
+#line 955 "program_parse.y"
     {
 	   if (((yyvsp[(4) - (6)].integer) != 0) && ((unsigned) (yyvsp[(4) - (6)].integer) != (yyvsp[(6) - (6)].temp_sym).param_binding_length)) {
 	      yyerror(& (yylsp[(4) - (6)]), state, 
@@ -3027,7 +3034,7 @@ yyreduce:
   case 111:
 
 /* Line 1455 of yacc.c  */
-#line 970 "program_parse.y"
+#line 977 "program_parse.y"
     {
 	   (yyval.integer) = 0;
 	;}
@@ -3036,7 +3043,7 @@ yyreduce:
   case 112:
 
 /* Line 1455 of yacc.c  */
-#line 974 "program_parse.y"
+#line 981 "program_parse.y"
     {
 	   if (((yyvsp[(1) - (1)].integer) < 1) || ((unsigned) (yyvsp[(1) - (1)].integer) >= state->limits->MaxParameters)) {
 	      yyerror(& (yylsp[(1) - (1)]), state, "invalid parameter array size");
@@ -3050,7 +3057,7 @@ yyreduce:
   case 113:
 
 /* Line 1455 of yacc.c  */
-#line 985 "program_parse.y"
+#line 992 "program_parse.y"
     {
 	   (yyval.temp_sym) = (yyvsp[(2) - (2)].temp_sym);
 	;}
@@ -3059,7 +3066,7 @@ yyreduce:
   case 114:
 
 /* Line 1455 of yacc.c  */
-#line 991 "program_parse.y"
+#line 998 "program_parse.y"
     {
 	   (yyval.temp_sym) = (yyvsp[(3) - (4)].temp_sym);
 	;}
@@ -3068,7 +3075,7 @@ yyreduce:
   case 116:
 
 /* Line 1455 of yacc.c  */
-#line 998 "program_parse.y"
+#line 1005 "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);
@@ -3078,7 +3085,7 @@ yyreduce:
   case 117:
 
 /* Line 1455 of yacc.c  */
-#line 1005 "program_parse.y"
+#line 1012 "program_parse.y"
     {
 	   memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym)));
 	   (yyval.temp_sym).param_binding_begin = ~0;
@@ -3089,7 +3096,7 @@ yyreduce:
   case 118:
 
 /* Line 1455 of yacc.c  */
-#line 1011 "program_parse.y"
+#line 1018 "program_parse.y"
     {
 	   memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym)));
 	   (yyval.temp_sym).param_binding_begin = ~0;
@@ -3100,7 +3107,7 @@ yyreduce:
   case 119:
 
 /* Line 1455 of yacc.c  */
-#line 1017 "program_parse.y"
+#line 1024 "program_parse.y"
     {
 	   memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym)));
 	   (yyval.temp_sym).param_binding_begin = ~0;
@@ -3111,7 +3118,7 @@ yyreduce:
   case 120:
 
 /* Line 1455 of yacc.c  */
-#line 1025 "program_parse.y"
+#line 1032 "program_parse.y"
     {
 	   memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym)));
 	   (yyval.temp_sym).param_binding_begin = ~0;
@@ -3122,7 +3129,7 @@ yyreduce:
   case 121:
 
 /* Line 1455 of yacc.c  */
-#line 1031 "program_parse.y"
+#line 1038 "program_parse.y"
     {
 	   memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym)));
 	   (yyval.temp_sym).param_binding_begin = ~0;
@@ -3133,7 +3140,7 @@ yyreduce:
   case 122:
 
 /* Line 1455 of yacc.c  */
-#line 1037 "program_parse.y"
+#line 1044 "program_parse.y"
     {
 	   memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym)));
 	   (yyval.temp_sym).param_binding_begin = ~0;
@@ -3144,7 +3151,7 @@ yyreduce:
   case 123:
 
 /* Line 1455 of yacc.c  */
-#line 1045 "program_parse.y"
+#line 1052 "program_parse.y"
     {
 	   memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym)));
 	   (yyval.temp_sym).param_binding_begin = ~0;
@@ -3155,7 +3162,7 @@ yyreduce:
   case 124:
 
 /* Line 1455 of yacc.c  */
-#line 1051 "program_parse.y"
+#line 1058 "program_parse.y"
     {
 	   memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym)));
 	   (yyval.temp_sym).param_binding_begin = ~0;
@@ -3166,7 +3173,7 @@ yyreduce:
   case 125:
 
 /* Line 1455 of yacc.c  */
-#line 1057 "program_parse.y"
+#line 1064 "program_parse.y"
     {
 	   memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym)));
 	   (yyval.temp_sym).param_binding_begin = ~0;
@@ -3177,91 +3184,91 @@ yyreduce:
   case 126:
 
 /* Line 1455 of yacc.c  */
-#line 1064 "program_parse.y"
+#line 1071 "program_parse.y"
     { memcpy((yyval.state), (yyvsp[(1) - (1)].state), sizeof((yyval.state))); ;}
     break;
 
   case 127:
 
 /* Line 1455 of yacc.c  */
-#line 1065 "program_parse.y"
+#line 1072 "program_parse.y"
     { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;}
     break;
 
   case 128:
 
 /* Line 1455 of yacc.c  */
-#line 1068 "program_parse.y"
+#line 1075 "program_parse.y"
     { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;}
     break;
 
   case 129:
 
 /* Line 1455 of yacc.c  */
-#line 1069 "program_parse.y"
+#line 1076 "program_parse.y"
     { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;}
     break;
 
   case 130:
 
 /* Line 1455 of yacc.c  */
-#line 1070 "program_parse.y"
+#line 1077 "program_parse.y"
     { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;}
     break;
 
   case 131:
 
 /* Line 1455 of yacc.c  */
-#line 1071 "program_parse.y"
+#line 1078 "program_parse.y"
     { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;}
     break;
 
   case 132:
 
 /* Line 1455 of yacc.c  */
-#line 1072 "program_parse.y"
+#line 1079 "program_parse.y"
     { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;}
     break;
 
   case 133:
 
 /* Line 1455 of yacc.c  */
-#line 1073 "program_parse.y"
+#line 1080 "program_parse.y"
     { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;}
     break;
 
   case 134:
 
 /* Line 1455 of yacc.c  */
-#line 1074 "program_parse.y"
+#line 1081 "program_parse.y"
     { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;}
     break;
 
   case 135:
 
 /* Line 1455 of yacc.c  */
-#line 1075 "program_parse.y"
+#line 1082 "program_parse.y"
     { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;}
     break;
 
   case 136:
 
 /* Line 1455 of yacc.c  */
-#line 1076 "program_parse.y"
+#line 1083 "program_parse.y"
     { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;}
     break;
 
   case 137:
 
 /* Line 1455 of yacc.c  */
-#line 1077 "program_parse.y"
+#line 1084 "program_parse.y"
     { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;}
     break;
 
   case 138:
 
 /* Line 1455 of yacc.c  */
-#line 1081 "program_parse.y"
+#line 1088 "program_parse.y"
     {
 	   memset((yyval.state), 0, sizeof((yyval.state)));
 	   (yyval.state)[0] = STATE_MATERIAL;
@@ -3273,7 +3280,7 @@ yyreduce:
   case 139:
 
 /* Line 1455 of yacc.c  */
-#line 1090 "program_parse.y"
+#line 1097 "program_parse.y"
     {
 	   (yyval.integer) = (yyvsp[(1) - (1)].integer);
 	;}
@@ -3282,7 +3289,7 @@ yyreduce:
   case 140:
 
 /* Line 1455 of yacc.c  */
-#line 1094 "program_parse.y"
+#line 1101 "program_parse.y"
     {
 	   (yyval.integer) = STATE_EMISSION;
 	;}
@@ -3291,7 +3298,7 @@ yyreduce:
   case 141:
 
 /* Line 1455 of yacc.c  */
-#line 1098 "program_parse.y"
+#line 1105 "program_parse.y"
     {
 	   (yyval.integer) = STATE_SHININESS;
 	;}
@@ -3300,7 +3307,7 @@ yyreduce:
   case 142:
 
 /* Line 1455 of yacc.c  */
-#line 1104 "program_parse.y"
+#line 1111 "program_parse.y"
     {
 	   memset((yyval.state), 0, sizeof((yyval.state)));
 	   (yyval.state)[0] = STATE_LIGHT;
@@ -3312,7 +3319,7 @@ yyreduce:
   case 143:
 
 /* Line 1455 of yacc.c  */
-#line 1113 "program_parse.y"
+#line 1120 "program_parse.y"
     {
 	   (yyval.integer) = (yyvsp[(1) - (1)].integer);
 	;}
@@ -3321,7 +3328,7 @@ yyreduce:
   case 144:
 
 /* Line 1455 of yacc.c  */
-#line 1117 "program_parse.y"
+#line 1124 "program_parse.y"
     {
 	   (yyval.integer) = STATE_POSITION;
 	;}
@@ -3330,7 +3337,7 @@ yyreduce:
   case 145:
 
 /* Line 1455 of yacc.c  */
-#line 1121 "program_parse.y"
+#line 1128 "program_parse.y"
     {
 	   if (!state->ctx->Extensions.EXT_point_parameters) {
 	      yyerror(& (yylsp[(1) - (1)]), state, "GL_ARB_point_parameters not supported");
@@ -3344,7 +3351,7 @@ yyreduce:
   case 146:
 
 /* Line 1455 of yacc.c  */
-#line 1130 "program_parse.y"
+#line 1137 "program_parse.y"
     {
 	   (yyval.integer) = (yyvsp[(2) - (2)].integer);
 	;}
@@ -3353,7 +3360,7 @@ yyreduce:
   case 147:
 
 /* Line 1455 of yacc.c  */
-#line 1134 "program_parse.y"
+#line 1141 "program_parse.y"
     {
 	   (yyval.integer) = STATE_HALF_VECTOR;
 	;}
@@ -3362,7 +3369,7 @@ yyreduce:
   case 148:
 
 /* Line 1455 of yacc.c  */
-#line 1140 "program_parse.y"
+#line 1147 "program_parse.y"
     {
 	   (yyval.integer) = STATE_SPOT_DIRECTION;
 	;}
@@ -3371,7 +3378,7 @@ yyreduce:
   case 149:
 
 /* Line 1455 of yacc.c  */
-#line 1146 "program_parse.y"
+#line 1153 "program_parse.y"
     {
 	   (yyval.state)[0] = (yyvsp[(2) - (2)].state)[0];
 	   (yyval.state)[1] = (yyvsp[(2) - (2)].state)[1];
@@ -3381,7 +3388,7 @@ yyreduce:
   case 150:
 
 /* Line 1455 of yacc.c  */
-#line 1153 "program_parse.y"
+#line 1160 "program_parse.y"
     {
 	   memset((yyval.state), 0, sizeof((yyval.state)));
 	   (yyval.state)[0] = STATE_LIGHTMODEL_AMBIENT;
@@ -3391,7 +3398,7 @@ yyreduce:
   case 151:
 
 /* Line 1455 of yacc.c  */
-#line 1158 "program_parse.y"
+#line 1165 "program_parse.y"
     {
 	   memset((yyval.state), 0, sizeof((yyval.state)));
 	   (yyval.state)[0] = STATE_LIGHTMODEL_SCENECOLOR;
@@ -3402,7 +3409,7 @@ yyreduce:
   case 152:
 
 /* Line 1455 of yacc.c  */
-#line 1166 "program_parse.y"
+#line 1173 "program_parse.y"
     {
 	   memset((yyval.state), 0, sizeof((yyval.state)));
 	   (yyval.state)[0] = STATE_LIGHTPROD;
@@ -3415,7 +3422,7 @@ yyreduce:
   case 154:
 
 /* Line 1455 of yacc.c  */
-#line 1178 "program_parse.y"
+#line 1185 "program_parse.y"
     {
 	   memset((yyval.state), 0, sizeof((yyval.state)));
 	   (yyval.state)[0] = (yyvsp[(3) - (3)].integer);
@@ -3426,7 +3433,7 @@ yyreduce:
   case 155:
 
 /* Line 1455 of yacc.c  */
-#line 1186 "program_parse.y"
+#line 1193 "program_parse.y"
     {
 	   (yyval.integer) = STATE_TEXENV_COLOR;
 	;}
@@ -3435,7 +3442,7 @@ yyreduce:
   case 156:
 
 /* Line 1455 of yacc.c  */
-#line 1192 "program_parse.y"
+#line 1199 "program_parse.y"
     {
 	   (yyval.integer) = STATE_AMBIENT;
 	;}
@@ -3444,7 +3451,7 @@ yyreduce:
   case 157:
 
 /* Line 1455 of yacc.c  */
-#line 1196 "program_parse.y"
+#line 1203 "program_parse.y"
     {
 	   (yyval.integer) = STATE_DIFFUSE;
 	;}
@@ -3453,7 +3460,7 @@ yyreduce:
   case 158:
 
 /* Line 1455 of yacc.c  */
-#line 1200 "program_parse.y"
+#line 1207 "program_parse.y"
     {
 	   (yyval.integer) = STATE_SPECULAR;
 	;}
@@ -3462,7 +3469,7 @@ yyreduce:
   case 159:
 
 /* Line 1455 of yacc.c  */
-#line 1206 "program_parse.y"
+#line 1213 "program_parse.y"
     {
 	   if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->MaxLights) {
 	      yyerror(& (yylsp[(1) - (1)]), state, "invalid light selector");
@@ -3476,7 +3483,7 @@ yyreduce:
   case 160:
 
 /* Line 1455 of yacc.c  */
-#line 1217 "program_parse.y"
+#line 1224 "program_parse.y"
     {
 	   memset((yyval.state), 0, sizeof((yyval.state)));
 	   (yyval.state)[0] = STATE_TEXGEN;
@@ -3488,7 +3495,7 @@ yyreduce:
   case 161:
 
 /* Line 1455 of yacc.c  */
-#line 1226 "program_parse.y"
+#line 1233 "program_parse.y"
     {
 	   (yyval.integer) = STATE_TEXGEN_EYE_S;
 	;}
@@ -3497,7 +3504,7 @@ yyreduce:
   case 162:
 
 /* Line 1455 of yacc.c  */
-#line 1230 "program_parse.y"
+#line 1237 "program_parse.y"
     {
 	   (yyval.integer) = STATE_TEXGEN_OBJECT_S;
 	;}
@@ -3506,7 +3513,7 @@ yyreduce:
   case 163:
 
 /* Line 1455 of yacc.c  */
-#line 1235 "program_parse.y"
+#line 1242 "program_parse.y"
     {
 	   (yyval.integer) = STATE_TEXGEN_EYE_S - STATE_TEXGEN_EYE_S;
 	;}
@@ -3515,7 +3522,7 @@ yyreduce:
   case 164:
 
 /* Line 1455 of yacc.c  */
-#line 1239 "program_parse.y"
+#line 1246 "program_parse.y"
     {
 	   (yyval.integer) = STATE_TEXGEN_EYE_T - STATE_TEXGEN_EYE_S;
 	;}
@@ -3524,7 +3531,7 @@ yyreduce:
   case 165:
 
 /* Line 1455 of yacc.c  */
-#line 1243 "program_parse.y"
+#line 1250 "program_parse.y"
     {
 	   (yyval.integer) = STATE_TEXGEN_EYE_R - STATE_TEXGEN_EYE_S;
 	;}
@@ -3533,7 +3540,7 @@ yyreduce:
   case 166:
 
 /* Line 1455 of yacc.c  */
-#line 1247 "program_parse.y"
+#line 1254 "program_parse.y"
     {
 	   (yyval.integer) = STATE_TEXGEN_EYE_Q - STATE_TEXGEN_EYE_S;
 	;}
@@ -3542,7 +3549,7 @@ yyreduce:
   case 167:
 
 /* Line 1455 of yacc.c  */
-#line 1253 "program_parse.y"
+#line 1260 "program_parse.y"
     {
 	   memset((yyval.state), 0, sizeof((yyval.state)));
 	   (yyval.state)[0] = (yyvsp[(2) - (2)].integer);
@@ -3552,7 +3559,7 @@ yyreduce:
   case 168:
 
 /* Line 1455 of yacc.c  */
-#line 1260 "program_parse.y"
+#line 1267 "program_parse.y"
     {
 	   (yyval.integer) = STATE_FOG_COLOR;
 	;}
@@ -3561,7 +3568,7 @@ yyreduce:
   case 169:
 
 /* Line 1455 of yacc.c  */
-#line 1264 "program_parse.y"
+#line 1271 "program_parse.y"
     {
 	   (yyval.integer) = STATE_FOG_PARAMS;
 	;}
@@ -3570,7 +3577,7 @@ yyreduce:
   case 170:
 
 /* Line 1455 of yacc.c  */
-#line 1270 "program_parse.y"
+#line 1277 "program_parse.y"
     {
 	   memset((yyval.state), 0, sizeof((yyval.state)));
 	   (yyval.state)[0] = STATE_CLIPPLANE;
@@ -3581,7 +3588,7 @@ yyreduce:
   case 171:
 
 /* Line 1455 of yacc.c  */
-#line 1278 "program_parse.y"
+#line 1285 "program_parse.y"
     {
 	   if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->MaxClipPlanes) {
 	      yyerror(& (yylsp[(1) - (1)]), state, "invalid clip plane selector");
@@ -3595,7 +3602,7 @@ yyreduce:
   case 172:
 
 /* Line 1455 of yacc.c  */
-#line 1289 "program_parse.y"
+#line 1296 "program_parse.y"
     {
 	   memset((yyval.state), 0, sizeof((yyval.state)));
 	   (yyval.state)[0] = (yyvsp[(2) - (2)].integer);
@@ -3605,7 +3612,7 @@ yyreduce:
   case 173:
 
 /* Line 1455 of yacc.c  */
-#line 1296 "program_parse.y"
+#line 1303 "program_parse.y"
     {
 	   (yyval.integer) = STATE_POINT_SIZE;
 	;}
@@ -3614,7 +3621,7 @@ yyreduce:
   case 174:
 
 /* Line 1455 of yacc.c  */
-#line 1300 "program_parse.y"
+#line 1307 "program_parse.y"
     {
 	   (yyval.integer) = STATE_POINT_ATTENUATION;
 	;}
@@ -3623,7 +3630,7 @@ yyreduce:
   case 175:
 
 /* Line 1455 of yacc.c  */
-#line 1306 "program_parse.y"
+#line 1313 "program_parse.y"
     {
 	   (yyval.state)[0] = (yyvsp[(1) - (5)].state)[0];
 	   (yyval.state)[1] = (yyvsp[(1) - (5)].state)[1];
@@ -3636,7 +3643,7 @@ yyreduce:
   case 176:
 
 /* Line 1455 of yacc.c  */
-#line 1316 "program_parse.y"
+#line 1323 "program_parse.y"
     {
 	   (yyval.state)[0] = (yyvsp[(1) - (2)].state)[0];
 	   (yyval.state)[1] = (yyvsp[(1) - (2)].state)[1];
@@ -3649,7 +3656,7 @@ yyreduce:
   case 177:
 
 /* Line 1455 of yacc.c  */
-#line 1326 "program_parse.y"
+#line 1333 "program_parse.y"
     {
 	   (yyval.state)[2] = 0;
 	   (yyval.state)[3] = 3;
@@ -3659,7 +3666,7 @@ yyreduce:
   case 178:
 
 /* Line 1455 of yacc.c  */
-#line 1331 "program_parse.y"
+#line 1338 "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).
@@ -3680,7 +3687,7 @@ yyreduce:
   case 179:
 
 /* Line 1455 of yacc.c  */
-#line 1349 "program_parse.y"
+#line 1356 "program_parse.y"
     {
 	   (yyval.state)[0] = (yyvsp[(2) - (3)].state)[0];
 	   (yyval.state)[1] = (yyvsp[(2) - (3)].state)[1];
@@ -3691,7 +3698,7 @@ yyreduce:
   case 180:
 
 /* Line 1455 of yacc.c  */
-#line 1357 "program_parse.y"
+#line 1364 "program_parse.y"
     {
 	   (yyval.integer) = 0;
 	;}
@@ -3700,7 +3707,7 @@ yyreduce:
   case 181:
 
 /* Line 1455 of yacc.c  */
-#line 1361 "program_parse.y"
+#line 1368 "program_parse.y"
     {
 	   (yyval.integer) = (yyvsp[(1) - (1)].integer);
 	;}
@@ -3709,7 +3716,7 @@ yyreduce:
   case 182:
 
 /* Line 1455 of yacc.c  */
-#line 1367 "program_parse.y"
+#line 1374 "program_parse.y"
     {
 	   (yyval.integer) = STATE_MATRIX_INVERSE;
 	;}
@@ -3718,7 +3725,7 @@ yyreduce:
   case 183:
 
 /* Line 1455 of yacc.c  */
-#line 1371 "program_parse.y"
+#line 1378 "program_parse.y"
     {
 	   (yyval.integer) = STATE_MATRIX_TRANSPOSE;
 	;}
@@ -3727,7 +3734,7 @@ yyreduce:
   case 184:
 
 /* Line 1455 of yacc.c  */
-#line 1375 "program_parse.y"
+#line 1382 "program_parse.y"
     {
 	   (yyval.integer) = STATE_MATRIX_INVTRANS;
 	;}
@@ -3736,7 +3743,7 @@ yyreduce:
   case 185:
 
 /* Line 1455 of yacc.c  */
-#line 1381 "program_parse.y"
+#line 1388 "program_parse.y"
     {
 	   if ((yyvsp[(1) - (1)].integer) > 3) {
 	      yyerror(& (yylsp[(1) - (1)]), state, "invalid matrix row reference");
@@ -3750,7 +3757,7 @@ yyreduce:
   case 186:
 
 /* Line 1455 of yacc.c  */
-#line 1392 "program_parse.y"
+#line 1399 "program_parse.y"
     {
 	   (yyval.state)[0] = STATE_MODELVIEW_MATRIX;
 	   (yyval.state)[1] = (yyvsp[(2) - (2)].integer);
@@ -3760,7 +3767,7 @@ yyreduce:
   case 187:
 
 /* Line 1455 of yacc.c  */
-#line 1397 "program_parse.y"
+#line 1404 "program_parse.y"
     {
 	   (yyval.state)[0] = STATE_PROJECTION_MATRIX;
 	   (yyval.state)[1] = 0;
@@ -3770,7 +3777,7 @@ yyreduce:
   case 188:
 
 /* Line 1455 of yacc.c  */
-#line 1402 "program_parse.y"
+#line 1409 "program_parse.y"
     {
 	   (yyval.state)[0] = STATE_MVP_MATRIX;
 	   (yyval.state)[1] = 0;
@@ -3780,7 +3787,7 @@ yyreduce:
   case 189:
 
 /* Line 1455 of yacc.c  */
-#line 1407 "program_parse.y"
+#line 1414 "program_parse.y"
     {
 	   (yyval.state)[0] = STATE_TEXTURE_MATRIX;
 	   (yyval.state)[1] = (yyvsp[(2) - (2)].integer);
@@ -3790,7 +3797,7 @@ yyreduce:
   case 190:
 
 /* Line 1455 of yacc.c  */
-#line 1412 "program_parse.y"
+#line 1419 "program_parse.y"
     {
 	   yyerror(& (yylsp[(1) - (4)]), state, "GL_ARB_matrix_palette not supported");
 	   YYERROR;
@@ -3800,7 +3807,7 @@ yyreduce:
   case 191:
 
 /* Line 1455 of yacc.c  */
-#line 1417 "program_parse.y"
+#line 1424 "program_parse.y"
     {
 	   (yyval.state)[0] = STATE_PROGRAM_MATRIX;
 	   (yyval.state)[1] = (yyvsp[(3) - (4)].integer);
@@ -3810,7 +3817,7 @@ yyreduce:
   case 192:
 
 /* Line 1455 of yacc.c  */
-#line 1424 "program_parse.y"
+#line 1431 "program_parse.y"
     {
 	   (yyval.integer) = 0;
 	;}
@@ -3819,7 +3826,7 @@ yyreduce:
   case 193:
 
 /* Line 1455 of yacc.c  */
-#line 1428 "program_parse.y"
+#line 1435 "program_parse.y"
     {
 	   (yyval.integer) = (yyvsp[(1) - (1)].integer);
 	;}
@@ -3828,7 +3835,7 @@ yyreduce:
   case 194:
 
 /* Line 1455 of yacc.c  */
-#line 1433 "program_parse.y"
+#line 1440 "program_parse.y"
     {
 	   /* Since GL_ARB_vertex_blend isn't supported, only modelview matrix
 	    * zero is valid.
@@ -3845,7 +3852,7 @@ yyreduce:
   case 195:
 
 /* Line 1455 of yacc.c  */
-#line 1446 "program_parse.y"
+#line 1453 "program_parse.y"
     {
 	   /* Since GL_ARB_matrix_palette isn't supported, just let any value
 	    * through here.  The error will be generated later.
@@ -3857,7 +3864,7 @@ yyreduce:
   case 196:
 
 /* Line 1455 of yacc.c  */
-#line 1454 "program_parse.y"
+#line 1461 "program_parse.y"
     {
 	   if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->MaxProgramMatrices) {
 	      yyerror(& (yylsp[(1) - (1)]), state, "invalid program matrix selector");
@@ -3871,7 +3878,7 @@ yyreduce:
   case 201:
 
 /* Line 1455 of yacc.c  */
-#line 1471 "program_parse.y"
+#line 1478 "program_parse.y"
     {
 	   memset((yyval.state), 0, sizeof((yyval.state)));
 	   (yyval.state)[0] = state->state_param_enum;
@@ -3884,7 +3891,7 @@ yyreduce:
   case 202:
 
 /* Line 1455 of yacc.c  */
-#line 1481 "program_parse.y"
+#line 1488 "program_parse.y"
     {
 	   (yyval.state)[0] = (yyvsp[(1) - (1)].integer);
 	   (yyval.state)[1] = (yyvsp[(1) - (1)].integer);
@@ -3894,7 +3901,7 @@ yyreduce:
   case 203:
 
 /* Line 1455 of yacc.c  */
-#line 1486 "program_parse.y"
+#line 1493 "program_parse.y"
     {
 	   (yyval.state)[0] = (yyvsp[(1) - (3)].integer);
 	   (yyval.state)[1] = (yyvsp[(3) - (3)].integer);
@@ -3904,7 +3911,7 @@ yyreduce:
   case 204:
 
 /* Line 1455 of yacc.c  */
-#line 1493 "program_parse.y"
+#line 1500 "program_parse.y"
     {
 	   memset((yyval.state), 0, sizeof((yyval.state)));
 	   (yyval.state)[0] = state->state_param_enum;
@@ -3917,7 +3924,7 @@ yyreduce:
   case 205:
 
 /* Line 1455 of yacc.c  */
-#line 1503 "program_parse.y"
+#line 1510 "program_parse.y"
     {
 	   memset((yyval.state), 0, sizeof((yyval.state)));
 	   (yyval.state)[0] = state->state_param_enum;
@@ -3930,7 +3937,7 @@ yyreduce:
   case 206:
 
 /* Line 1455 of yacc.c  */
-#line 1512 "program_parse.y"
+#line 1519 "program_parse.y"
     {
 	   (yyval.state)[0] = (yyvsp[(1) - (1)].integer);
 	   (yyval.state)[1] = (yyvsp[(1) - (1)].integer);
@@ -3940,7 +3947,7 @@ yyreduce:
   case 207:
 
 /* Line 1455 of yacc.c  */
-#line 1517 "program_parse.y"
+#line 1524 "program_parse.y"
     {
 	   (yyval.state)[0] = (yyvsp[(1) - (3)].integer);
 	   (yyval.state)[1] = (yyvsp[(3) - (3)].integer);
@@ -3950,7 +3957,7 @@ yyreduce:
   case 208:
 
 /* Line 1455 of yacc.c  */
-#line 1524 "program_parse.y"
+#line 1531 "program_parse.y"
     {
 	   memset((yyval.state), 0, sizeof((yyval.state)));
 	   (yyval.state)[0] = state->state_param_enum;
@@ -3963,7 +3970,7 @@ yyreduce:
   case 209:
 
 /* Line 1455 of yacc.c  */
-#line 1534 "program_parse.y"
+#line 1541 "program_parse.y"
     {
 	   if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->limits->MaxEnvParams) {
 	      yyerror(& (yylsp[(1) - (1)]), state, "invalid environment parameter reference");
@@ -3976,7 +3983,7 @@ yyreduce:
   case 210:
 
 /* Line 1455 of yacc.c  */
-#line 1544 "program_parse.y"
+#line 1551 "program_parse.y"
     {
 	   if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->limits->MaxLocalParams) {
 	      yyerror(& (yylsp[(1) - (1)]), state, "invalid local parameter reference");
@@ -3989,7 +3996,7 @@ yyreduce:
   case 215:
 
 /* Line 1455 of yacc.c  */
-#line 1559 "program_parse.y"
+#line 1566 "program_parse.y"
     {
 	   (yyval.vector).count = 1;
 	   (yyval.vector).data[0] = (yyvsp[(1) - (1)].real);
@@ -3999,7 +4006,7 @@ yyreduce:
   case 216:
 
 /* Line 1455 of yacc.c  */
-#line 1566 "program_parse.y"
+#line 1573 "program_parse.y"
     {
 	   (yyval.vector).count = 1;
 	   (yyval.vector).data[0] = (yyvsp[(1) - (1)].real);
@@ -4009,7 +4016,7 @@ yyreduce:
   case 217:
 
 /* Line 1455 of yacc.c  */
-#line 1571 "program_parse.y"
+#line 1578 "program_parse.y"
     {
 	   (yyval.vector).count = 1;
 	   (yyval.vector).data[0] = (float) (yyvsp[(1) - (1)].integer);
@@ -4019,7 +4026,7 @@ yyreduce:
   case 218:
 
 /* Line 1455 of yacc.c  */
-#line 1578 "program_parse.y"
+#line 1585 "program_parse.y"
     {
 	   (yyval.vector).count = 1;
 	   (yyval.vector).data[0] = (yyvsp[(2) - (3)].real);
@@ -4032,7 +4039,7 @@ yyreduce:
   case 219:
 
 /* Line 1455 of yacc.c  */
-#line 1586 "program_parse.y"
+#line 1593 "program_parse.y"
     {
 	   (yyval.vector).count = 2;
 	   (yyval.vector).data[0] = (yyvsp[(2) - (5)].real);
@@ -4045,7 +4052,7 @@ yyreduce:
   case 220:
 
 /* Line 1455 of yacc.c  */
-#line 1595 "program_parse.y"
+#line 1602 "program_parse.y"
     {
 	   (yyval.vector).count = 3;
 	   (yyval.vector).data[0] = (yyvsp[(2) - (7)].real);
@@ -4058,7 +4065,7 @@ yyreduce:
   case 221:
 
 /* Line 1455 of yacc.c  */
-#line 1604 "program_parse.y"
+#line 1611 "program_parse.y"
     {
 	   (yyval.vector).count = 4;
 	   (yyval.vector).data[0] = (yyvsp[(2) - (9)].real);
@@ -4071,7 +4078,7 @@ yyreduce:
   case 222:
 
 /* Line 1455 of yacc.c  */
-#line 1614 "program_parse.y"
+#line 1621 "program_parse.y"
     {
 	   (yyval.real) = ((yyvsp[(1) - (2)].negate)) ? -(yyvsp[(2) - (2)].real) : (yyvsp[(2) - (2)].real);
 	;}
@@ -4080,7 +4087,7 @@ yyreduce:
   case 223:
 
 /* Line 1455 of yacc.c  */
-#line 1618 "program_parse.y"
+#line 1625 "program_parse.y"
     {
 	   (yyval.real) = (float)(((yyvsp[(1) - (2)].negate)) ? -(yyvsp[(2) - (2)].integer) : (yyvsp[(2) - (2)].integer));
 	;}
@@ -4089,42 +4096,42 @@ yyreduce:
   case 224:
 
 /* Line 1455 of yacc.c  */
-#line 1623 "program_parse.y"
+#line 1630 "program_parse.y"
     { (yyval.negate) = FALSE; ;}
     break;
 
   case 225:
 
 /* Line 1455 of yacc.c  */
-#line 1624 "program_parse.y"
+#line 1631 "program_parse.y"
     { (yyval.negate) = TRUE;  ;}
     break;
 
   case 226:
 
 /* Line 1455 of yacc.c  */
-#line 1625 "program_parse.y"
+#line 1632 "program_parse.y"
     { (yyval.negate) = FALSE; ;}
     break;
 
   case 227:
 
 /* Line 1455 of yacc.c  */
-#line 1628 "program_parse.y"
+#line 1635 "program_parse.y"
     { (yyval.integer) = (yyvsp[(1) - (1)].integer); ;}
     break;
 
   case 229:
 
 /* Line 1455 of yacc.c  */
-#line 1631 "program_parse.y"
+#line 1638 "program_parse.y"
     { (yyval.integer) = (yyvsp[(1) - (1)].integer); ;}
     break;
 
   case 231:
 
 /* Line 1455 of yacc.c  */
-#line 1635 "program_parse.y"
+#line 1642 "program_parse.y"
     {
 	   if (!declare_variable(state, (yyvsp[(3) - (3)].string), (yyvsp[(0) - (3)].integer), & (yylsp[(3) - (3)]))) {
 	      YYERROR;
@@ -4135,7 +4142,7 @@ yyreduce:
   case 232:
 
 /* Line 1455 of yacc.c  */
-#line 1641 "program_parse.y"
+#line 1648 "program_parse.y"
     {
 	   if (!declare_variable(state, (yyvsp[(1) - (1)].string), (yyvsp[(0) - (1)].integer), & (yylsp[(1) - (1)]))) {
 	      YYERROR;
@@ -4146,7 +4153,7 @@ yyreduce:
   case 233:
 
 /* Line 1455 of yacc.c  */
-#line 1649 "program_parse.y"
+#line 1656 "program_parse.y"
     {
 	   struct asm_symbol *const s =
 	      declare_variable(state, (yyvsp[(2) - (4)].string), at_output, & (yylsp[(2) - (4)]));
@@ -4162,7 +4169,7 @@ yyreduce:
   case 234:
 
 /* Line 1455 of yacc.c  */
-#line 1662 "program_parse.y"
+#line 1669 "program_parse.y"
     {
 	   if (state->mode == ARB_vertex) {
 	      (yyval.result) = VERT_RESULT_HPOS;
@@ -4176,7 +4183,7 @@ yyreduce:
   case 235:
 
 /* Line 1455 of yacc.c  */
-#line 1671 "program_parse.y"
+#line 1678 "program_parse.y"
     {
 	   if (state->mode == ARB_vertex) {
 	      (yyval.result) = VERT_RESULT_FOGC;
@@ -4190,7 +4197,7 @@ yyreduce:
   case 236:
 
 /* Line 1455 of yacc.c  */
-#line 1680 "program_parse.y"
+#line 1687 "program_parse.y"
     {
 	   (yyval.result) = (yyvsp[(2) - (2)].result);
 	;}
@@ -4199,7 +4206,7 @@ yyreduce:
   case 237:
 
 /* Line 1455 of yacc.c  */
-#line 1684 "program_parse.y"
+#line 1691 "program_parse.y"
     {
 	   if (state->mode == ARB_vertex) {
 	      (yyval.result) = VERT_RESULT_PSIZ;
@@ -4213,7 +4220,7 @@ yyreduce:
   case 238:
 
 /* Line 1455 of yacc.c  */
-#line 1693 "program_parse.y"
+#line 1700 "program_parse.y"
     {
 	   if (state->mode == ARB_vertex) {
 	      (yyval.result) = VERT_RESULT_TEX0 + (yyvsp[(3) - (3)].integer);
@@ -4227,7 +4234,7 @@ yyreduce:
   case 239:
 
 /* Line 1455 of yacc.c  */
-#line 1702 "program_parse.y"
+#line 1709 "program_parse.y"
     {
 	   if (state->mode == ARB_fragment) {
 	      (yyval.result) = FRAG_RESULT_DEPTH;
@@ -4241,7 +4248,7 @@ yyreduce:
   case 240:
 
 /* Line 1455 of yacc.c  */
-#line 1713 "program_parse.y"
+#line 1720 "program_parse.y"
     {
 	   (yyval.result) = (yyvsp[(2) - (3)].integer) + (yyvsp[(3) - (3)].integer);
 	;}
@@ -4250,7 +4257,7 @@ yyreduce:
   case 241:
 
 /* Line 1455 of yacc.c  */
-#line 1719 "program_parse.y"
+#line 1726 "program_parse.y"
     {
 	   (yyval.integer) = (state->mode == ARB_vertex)
 	      ? VERT_RESULT_COL0
@@ -4261,7 +4268,7 @@ yyreduce:
   case 242:
 
 /* Line 1455 of yacc.c  */
-#line 1725 "program_parse.y"
+#line 1732 "program_parse.y"
     {
 	   if (state->mode == ARB_vertex) {
 	      (yyval.integer) = VERT_RESULT_COL0;
@@ -4275,7 +4282,7 @@ yyreduce:
   case 243:
 
 /* Line 1455 of yacc.c  */
-#line 1734 "program_parse.y"
+#line 1741 "program_parse.y"
     {
 	   if (state->mode == ARB_vertex) {
 	      (yyval.integer) = VERT_RESULT_BFC0;
@@ -4289,7 +4296,7 @@ yyreduce:
   case 244:
 
 /* Line 1455 of yacc.c  */
-#line 1745 "program_parse.y"
+#line 1752 "program_parse.y"
     {
 	   (yyval.integer) = 0; 
 	;}
@@ -4298,7 +4305,7 @@ yyreduce:
   case 245:
 
 /* Line 1455 of yacc.c  */
-#line 1749 "program_parse.y"
+#line 1756 "program_parse.y"
     {
 	   if (state->mode == ARB_vertex) {
 	      (yyval.integer) = 0;
@@ -4312,7 +4319,7 @@ yyreduce:
   case 246:
 
 /* Line 1455 of yacc.c  */
-#line 1758 "program_parse.y"
+#line 1765 "program_parse.y"
     {
 	   if (state->mode == ARB_vertex) {
 	      (yyval.integer) = 1;
@@ -4326,91 +4333,91 @@ yyreduce:
   case 247:
 
 /* Line 1455 of yacc.c  */
-#line 1768 "program_parse.y"
+#line 1775 "program_parse.y"
     { (yyval.integer) = 0; ;}
     break;
 
   case 248:
 
 /* Line 1455 of yacc.c  */
-#line 1769 "program_parse.y"
+#line 1776 "program_parse.y"
     { (yyval.integer) = 0; ;}
     break;
 
   case 249:
 
 /* Line 1455 of yacc.c  */
-#line 1770 "program_parse.y"
+#line 1777 "program_parse.y"
     { (yyval.integer) = 1; ;}
     break;
 
   case 250:
 
 /* Line 1455 of yacc.c  */
-#line 1773 "program_parse.y"
+#line 1780 "program_parse.y"
     { (yyval.integer) = 0; ;}
     break;
 
   case 251:
 
 /* Line 1455 of yacc.c  */
-#line 1774 "program_parse.y"
+#line 1781 "program_parse.y"
     { (yyval.integer) = 0; ;}
     break;
 
   case 252:
 
 /* Line 1455 of yacc.c  */
-#line 1775 "program_parse.y"
+#line 1782 "program_parse.y"
     { (yyval.integer) = 1; ;}
     break;
 
   case 253:
 
 /* Line 1455 of yacc.c  */
-#line 1778 "program_parse.y"
+#line 1785 "program_parse.y"
     { (yyval.integer) = 0; ;}
     break;
 
   case 254:
 
 /* Line 1455 of yacc.c  */
-#line 1779 "program_parse.y"
+#line 1786 "program_parse.y"
     { (yyval.integer) = (yyvsp[(2) - (3)].integer); ;}
     break;
 
   case 255:
 
 /* Line 1455 of yacc.c  */
-#line 1782 "program_parse.y"
+#line 1789 "program_parse.y"
     { (yyval.integer) = 0; ;}
     break;
 
   case 256:
 
 /* Line 1455 of yacc.c  */
-#line 1783 "program_parse.y"
+#line 1790 "program_parse.y"
     { (yyval.integer) = (yyvsp[(2) - (3)].integer); ;}
     break;
 
   case 257:
 
 /* Line 1455 of yacc.c  */
-#line 1786 "program_parse.y"
+#line 1793 "program_parse.y"
     { (yyval.integer) = 0; ;}
     break;
 
   case 258:
 
 /* Line 1455 of yacc.c  */
-#line 1787 "program_parse.y"
+#line 1794 "program_parse.y"
     { (yyval.integer) = (yyvsp[(2) - (3)].integer); ;}
     break;
 
   case 259:
 
 /* Line 1455 of yacc.c  */
-#line 1791 "program_parse.y"
+#line 1798 "program_parse.y"
     {
 	   if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->MaxTextureCoordUnits) {
 	      yyerror(& (yylsp[(1) - (1)]), state, "invalid texture coordinate unit selector");
@@ -4424,7 +4431,7 @@ yyreduce:
   case 260:
 
 /* Line 1455 of yacc.c  */
-#line 1802 "program_parse.y"
+#line 1809 "program_parse.y"
     {
 	   if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->MaxTextureImageUnits) {
 	      yyerror(& (yylsp[(1) - (1)]), state, "invalid texture image unit selector");
@@ -4438,7 +4445,7 @@ yyreduce:
   case 261:
 
 /* Line 1455 of yacc.c  */
-#line 1813 "program_parse.y"
+#line 1820 "program_parse.y"
     {
 	   if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->MaxTextureUnits) {
 	      yyerror(& (yylsp[(1) - (1)]), state, "invalid texture unit selector");
@@ -4452,7 +4459,7 @@ yyreduce:
   case 262:
 
 /* Line 1455 of yacc.c  */
-#line 1824 "program_parse.y"
+#line 1831 "program_parse.y"
     {
 	   struct asm_symbol *exist = (struct asm_symbol *)
 	      _mesa_symbol_table_find_symbol(state->st, 0, (yyvsp[(2) - (4)].string));
@@ -4476,7 +4483,7 @@ yyreduce:
 
 
 /* Line 1455 of yacc.c  */
-#line 4480 "program_parse.tab.c"
+#line 4487 "program_parse.tab.c"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -4695,7 +4702,7 @@ yyreturn:
 
 
 /* Line 1675 of yacc.c  */
-#line 1844 "program_parse.y"
+#line 1851 "program_parse.y"
 
 
 struct asm_instruction *
diff --git a/src/mesa/shader/program_parse.y b/src/mesa/shader/program_parse.y
index 9e7c9e4..225dc0d 100644
--- a/src/mesa/shader/program_parse.y
+++ b/src/mesa/shader/program_parse.y
@@ -683,12 +683,19 @@ dstReg: resultBinding
 	   }
 
 	   init_dst_reg(& $$);
-	   if (s->type == at_temp) {
+	   switch (s->type) {
+	   case at_temp:
 	      $$.File = PROGRAM_TEMPORARY;
 	      $$.Index = s->temp_binding;
-	   } else {
+	      break;
+	   case at_output:
+	      $$.File = PROGRAM_OUTPUT;
+	      $$.Index = s->output_binding;
+	      break;
+	   default:
 	      $$.File = s->param_binding_type;
 	      $$.Index = s->param_binding_begin;
+	      break;
 	   }
 	}
 	;




More information about the mesa-commit mailing list