From: Eric Anholt Date: Tue, 7 Sep 2010 19:53:19 +0000 (-0700) Subject: i965: Store the byte address in the VS constant buffer as an integer. X-Git-Tag: android-x86-2.2~1417 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=24c12e6c7f8aa8c2f4c163d23d740b070bfabfc3;p=android-x86%2Fexternal-mesa.git 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. --- diff --git a/src/mesa/drivers/dri/i965/brw_vs_emit.c b/src/mesa/drivers/dri/i965/brw_vs_emit.c index 49ef9742a25..ad0d00b87c4 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);