mesa: increase the relative address offset limit to 4096 in ARB_vp/fp

Even though the spec says that the limits should be -64/+63, proprietary
drivers support much larger relative offsets and some applications do
depend on this non-standard behavior.

Also program_parse.tab.c has been regenerated.

This fixes the parser error:

  ARB_vp: error: relative address offset too large

See also: https://bugs.freedesktop.org/show_bug.cgi?id=28628

4096 * sizeof(vec4) is the maximum size of the constant buffer on NV50.
It is not supposed to be a definite hardware limit, it is for the parser
not to get in the way and let the underlying driver decide whether it can
run the shader or not.
This commit is contained in:
Marek Olšák
2010-07-31 20:12:21 +02:00
parent dd863bf5e7
commit 0614006d09
2 changed files with 4 additions and 4 deletions

View File

@@ -2983,7 +2983,7 @@ yyreduce:
/* Line 1455 of yacc.c */ /* Line 1455 of yacc.c */
#line 937 "program_parse.y" #line 937 "program_parse.y"
{ {
if (((yyvsp[(1) - (1)].integer) < 0) || ((yyvsp[(1) - (1)].integer) > 63)) { if (((yyvsp[(1) - (1)].integer) < 0) || ((yyvsp[(1) - (1)].integer) > 4095)) {
char s[100]; char s[100];
_mesa_snprintf(s, sizeof(s), _mesa_snprintf(s, sizeof(s),
"relative address offset too large (%d)", (yyvsp[(1) - (1)].integer)); "relative address offset too large (%d)", (yyvsp[(1) - (1)].integer));
@@ -3000,7 +3000,7 @@ yyreduce:
/* Line 1455 of yacc.c */ /* Line 1455 of yacc.c */
#line 951 "program_parse.y" #line 951 "program_parse.y"
{ {
if (((yyvsp[(1) - (1)].integer) < 0) || ((yyvsp[(1) - (1)].integer) > 64)) { if (((yyvsp[(1) - (1)].integer) < 0) || ((yyvsp[(1) - (1)].integer) > 4096)) {
char s[100]; char s[100];
_mesa_snprintf(s, sizeof(s), _mesa_snprintf(s, sizeof(s),
"relative address offset too large (%d)", (yyvsp[(1) - (1)].integer)); "relative address offset too large (%d)", (yyvsp[(1) - (1)].integer));

View File

@@ -935,7 +935,7 @@ addrRegRelOffset: { $$ = 0; }
addrRegPosOffset: INTEGER addrRegPosOffset: INTEGER
{ {
if (($1 < 0) || ($1 > 63)) { if (($1 < 0) || ($1 > 4095)) {
char s[100]; char s[100];
_mesa_snprintf(s, sizeof(s), _mesa_snprintf(s, sizeof(s),
"relative address offset too large (%d)", $1); "relative address offset too large (%d)", $1);
@@ -949,7 +949,7 @@ addrRegPosOffset: INTEGER
addrRegNegOffset: INTEGER addrRegNegOffset: INTEGER
{ {
if (($1 < 0) || ($1 > 64)) { if (($1 < 0) || ($1 > 4096)) {
char s[100]; char s[100];
_mesa_snprintf(s, sizeof(s), _mesa_snprintf(s, sizeof(s),
"relative address offset too large (%d)", $1); "relative address offset too large (%d)", $1);