i965/blorp: Fix the register types on blorp's push constants.

The UD values were getting set up as floats.  This happened to work out
because they were used as the second argument where the first was a dword,
and gen6+ doesn't do source conversions.  But it did trigger fulsim
warnings, and it meant if you used the push constant as the first operand
you would have been disappointed.

Reviewed-by: Paul Berry <stereotype441@gmail.com>
This commit is contained in:
Eric Anholt 2013-08-29 15:08:41 -07:00
parent 8da15d7544
commit 58bab95c95

View file

@ -899,22 +899,22 @@ void
brw_blorp_blit_program::alloc_push_const_regs(int base_reg)
{
#define CONST_LOC(name) offsetof(brw_blorp_wm_push_constants, name)
#define ALLOC_REG(name) \
this->name = \
brw_vec1_reg(BRW_GENERAL_REGISTER_FILE, \
base_reg + CONST_LOC(name) / 32, \
(CONST_LOC(name) % 32) / 4)
#define ALLOC_REG(name, type) \
this->name = \
retype(brw_vec1_reg(BRW_GENERAL_REGISTER_FILE, \
base_reg + CONST_LOC(name) / 32, \
(CONST_LOC(name) % 32) / 4), type)
ALLOC_REG(dst_x0);
ALLOC_REG(dst_x1);
ALLOC_REG(dst_y0);
ALLOC_REG(dst_y1);
ALLOC_REG(rect_grid_x1);
ALLOC_REG(rect_grid_y1);
ALLOC_REG(x_transform.multiplier);
ALLOC_REG(x_transform.offset);
ALLOC_REG(y_transform.multiplier);
ALLOC_REG(y_transform.offset);
ALLOC_REG(dst_x0, BRW_REGISTER_TYPE_UD);
ALLOC_REG(dst_x1, BRW_REGISTER_TYPE_UD);
ALLOC_REG(dst_y0, BRW_REGISTER_TYPE_UD);
ALLOC_REG(dst_y1, BRW_REGISTER_TYPE_UD);
ALLOC_REG(rect_grid_x1, BRW_REGISTER_TYPE_F);
ALLOC_REG(rect_grid_y1, BRW_REGISTER_TYPE_F);
ALLOC_REG(x_transform.multiplier, BRW_REGISTER_TYPE_F);
ALLOC_REG(x_transform.offset, BRW_REGISTER_TYPE_F);
ALLOC_REG(y_transform.multiplier, BRW_REGISTER_TYPE_F);
ALLOC_REG(y_transform.offset, BRW_REGISTER_TYPE_F);
#undef CONST_LOC
#undef ALLOC_REG
}