summaryrefslogtreecommitdiff
path: root/src/mesa/drivers/dri/i965/brw_vs_emit.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mesa/drivers/dri/i965/brw_vs_emit.c')
-rw-r--r--src/mesa/drivers/dri/i965/brw_vs_emit.c8
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 1b84dd505f..59334c9ebb 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",