Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikk...@gmail.com> --- src/mesa/drivers/dri/i965/brw_fs_visitor.cpp | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-)
diff --git a/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp index d2dc5fa..22ca528 100644 --- a/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp +++ b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp @@ -293,10 +293,6 @@ fs_visitor::try_emit_saturate(ir_expression *ir) bool fs_visitor::try_emit_mad(ir_expression *ir) { - /* 3-src instructions were introduced in gen6. */ - if (brw->gen < 6) - return false; - /* MAD can only handle floating-point data. */ if (ir->type != glsl_type::float_type) return false; @@ -327,7 +323,16 @@ fs_visitor::try_emit_mad(ir_expression *ir) fs_reg src2 = this->result; this->result = fs_reg(this, ir->type); - emit(BRW_OPCODE_MAD, this->result, src0, src1, src2); + + /* 3-src instructions were introduced in gen6. */ + if (brw->gen < 6) { + fs_reg temp = fs_reg(this, glsl_type::float_type); + + emit(MUL(temp, src1, src2)); + emit(ADD(this->result, src0, temp)); + } else { + emit(BRW_OPCODE_MAD, this->result, src0, src1, src2); + } return true; } -- 1.8.1.2 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev