From d5b964234c37673ec6b444d0a8fa3b823f03fd05 Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Sat, 9 Jan 2010 02:03:13 -0800 Subject: [PATCH] i965: Fix loads of non-relative-addr constants after a reladdr load. Fixes piglit vp-arl-constant-array-huge-overwritten. --- src/mesa/drivers/dri/i965/brw_vs_emit.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/mesa/drivers/dri/i965/brw_vs_emit.c b/src/mesa/drivers/dri/i965/brw_vs_emit.c index 1b84dd505f6..59334c9ebbe 100644 --- a/src/mesa/drivers/dri/i965/brw_vs_emit.c +++ b/src/mesa/drivers/dri/i965/brw_vs_emit.c @@ -771,7 +771,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", -- 2.30.2