Mesa (master): i965: Store the byte address in the VS constant buffer as an integer.

Eric Anholt anholt at kemper.freedesktop.org
Tue Sep 7 20:00:38 UTC 2010


Module: Mesa
Branch: master
Commit: 24c12e6c7f8aa8c2f4c163d23d740b070bfabfc3
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=24c12e6c7f8aa8c2f4c163d23d740b070bfabfc3

Author: Eric Anholt <eric at anholt.net>
Date:   Tue Sep  7 12:53:19 2010 -0700

i965: Store the byte address in the VS constant buffer as an integer.

We carefully multiplied our two ints (since we want to be precise
after all) then stored them in a float, which is not specced to really
work, in addition to wasting precision.  Fixes
vp-arl-constant-array-huge-* things since the assertions were added.

---

 src/mesa/drivers/dri/i965/brw_vs_emit.c |    2 +-
 1 files changed, 1 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 49ef974..ad0d00b 100644
--- a/src/mesa/drivers/dri/i965/brw_vs_emit.c
+++ b/src/mesa/drivers/dri/i965/brw_vs_emit.c
@@ -954,7 +954,7 @@ get_reladdr_constant(struct brw_vs_compile *c,
    struct brw_compile *p = &c->func;
    struct brw_reg const_reg = c->current_const[argIndex].reg;
    struct brw_reg addrReg = c->regs[PROGRAM_ADDRESS][0];
-   struct brw_reg byte_addr_reg = get_tmp(c);
+   struct brw_reg byte_addr_reg = retype(get_tmp(c), BRW_REGISTER_TYPE_D);
 
    assert(argIndex < 3);
 




More information about the mesa-commit mailing list