diff options
author | Eric Anholt <eric@anholt.net> | 2010-01-09 02:03:13 -0800 |
---|---|---|
committer | Eric Anholt <eric@anholt.net> | 2010-02-06 17:08:53 +0100 |
commit | 8ce99c85e7cf2a3c3e8aec2df090abee7ee270ca (patch) | |
tree | 09f1f38a1fde7e6aec5cf9e90adc72c0ade84f81 | |
parent | a2c402ba53305190858aee6d03345b5e2084f904 (diff) |
i965: Fix loads of non-relative-addr constants after a reladdr load.
Fixes piglit vp-arl-constant-array-huge-overwritten.
(cherry picked from commit d5b964234c37673ec6b444d0a8fa3b823f03fd05)
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_vs_emit.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_vs_emit.c b/src/mesa/drivers/dri/i965/brw_vs_emit.c index 27aac8b54a..e6ff9f17c8 100644 --- a/src/mesa/drivers/dri/i965/brw_vs_emit.c +++ b/src/mesa/drivers/dri/i965/brw_vs_emit.c @@ -770,7 +770,13 @@ get_constant(struct brw_vs_compile *c, if (c->current_const[argIndex].index != src->Index || relAddr) { struct brw_reg addrReg = c->regs[PROGRAM_ADDRESS][0]; - c->current_const[argIndex].index = src->Index; + /* If using a non-relative-addressed constant, then keep track of it for + * later use without reloading. + */ + if (relAddr) + c->current_const[argIndex].index = -1; + else + c->current_const[argIndex].index = src->Index; #if 0 printf(" fetch const[%d] for arg %d into reg %d\n", |