We have to use W/UW type for src1 of the multiply in the MUL/MACH macro, but in order to read the low 16-bits of each 32-bit integer, we need to set the appropriate stride. --- src/mesa/drivers/dri/i965/brw_fs_visitor.cpp | 2 ++ 1 file changed, 2 insertions(+)
diff --git a/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp index cf59570..f37fdea 100644 --- a/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp +++ b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp @@ -916,8 +916,10 @@ fs_visitor::visit(ir_expression *ir) mul->src[1].type == BRW_REGISTER_TYPE_UD); if (mul->src[1].type == BRW_REGISTER_TYPE_D) { mul->src[1].type = BRW_REGISTER_TYPE_W; + mul->src[1].stride = 2; } else { mul->src[1].type = BRW_REGISTER_TYPE_UW; + mul->src[1].stride = 2; } } -- 2.0.5 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev