diff options
| -rw-r--r-- | src/mesa/shader/program_parse.tab.c | 477 | ||||
| -rw-r--r-- | src/mesa/shader/program_parse.y | 11 | 
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 0ea0e24106..452782e832 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 a0bec96924..95d6c0ea31 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;  	}  	;  | 
