summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMarek Olšák <maraeo@gmail.com>2010-07-31 20:12:21 +0200
committerMarek Olšák <maraeo@gmail.com>2010-08-04 00:07:28 +0200
commit0614006d090902324149387ec150231b647928fd (patch)
tree6a571742001a51dbaefba8f7061bd8412943073d /src
parentdd863bf5e7c6680075cf7c355a026b1da69ee9e3 (diff)
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.
Diffstat (limited to 'src')
-rw-r--r--src/mesa/program/program_parse.tab.c4
-rw-r--r--src/mesa/program/program_parse.y4
2 files changed, 4 insertions, 4 deletions
diff --git a/src/mesa/program/program_parse.tab.c b/src/mesa/program/program_parse.tab.c
index 34e1fdcf0e..31a609600b 100644
--- a/src/mesa/program/program_parse.tab.c
+++ b/src/mesa/program/program_parse.tab.c
@@ -2983,7 +2983,7 @@ yyreduce:
/* Line 1455 of yacc.c */
#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];
_mesa_snprintf(s, sizeof(s),
"relative address offset too large (%d)", (yyvsp[(1) - (1)].integer));
@@ -3000,7 +3000,7 @@ yyreduce:
/* Line 1455 of yacc.c */
#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];
_mesa_snprintf(s, sizeof(s),
"relative address offset too large (%d)", (yyvsp[(1) - (1)].integer));
diff --git a/src/mesa/program/program_parse.y b/src/mesa/program/program_parse.y
index 7753dd7cfe..fb6ef85a9f 100644
--- a/src/mesa/program/program_parse.y
+++ b/src/mesa/program/program_parse.y
@@ -935,7 +935,7 @@ addrRegRelOffset: { $$ = 0; }
addrRegPosOffset: INTEGER
{
- if (($1 < 0) || ($1 > 63)) {
+ if (($1 < 0) || ($1 > 4095)) {
char s[100];
_mesa_snprintf(s, sizeof(s),
"relative address offset too large (%d)", $1);
@@ -949,7 +949,7 @@ addrRegPosOffset: INTEGER
addrRegNegOffset: INTEGER
{
- if (($1 < 0) || ($1 > 64)) {
+ if (($1 < 0) || ($1 > 4096)) {
char s[100];
_mesa_snprintf(s, sizeof(s),
"relative address offset too large (%d)", $1);