On Tuesday, March 17, 2015 07:17:19 PM Jason Ekstrand wrote: > --- > src/mesa/drivers/dri/i965/brw_fs_nir.cpp | 8 +++++++- > 1 file changed, 7 insertions(+), 1 deletion(-) > > diff --git a/src/mesa/drivers/dri/i965/brw_fs_nir.cpp > b/src/mesa/drivers/dri/i965/brw_fs_nir.cpp > index 5da8423..41f9ae2 100644 > --- a/src/mesa/drivers/dri/i965/brw_fs_nir.cpp > +++ b/src/mesa/drivers/dri/i965/brw_fs_nir.cpp > @@ -1234,7 +1234,13 @@ fs_visitor::nir_emit_alu(nir_alu_instr *instr) > break; > > case nir_op_ffma: > - inst = emit(MAD(result, op[2], op[1], op[0])); > + if (brw->gen >= 6) { > + inst = emit(MAD(result, op[2], op[1], op[0])); > + } else { > + fs_reg temp = vgrf(glsl_type::float_type); > + emit(MUL(temp, op[0], op[1])); > + inst = emit(ADD(result, temp, op[2])); > + } > inst->saturate = instr->dest.saturate; > break; > >
I think this is a reasonable plan for now - it's simple and works. Connor is probably right that we can do better with nir_opt_algebraic, but I think doing that as a follow-on patch justified by statistics would be wise. Patches 3-6 are: Reviewed-by: Kenneth Graunke <kenn...@whitecape.org>
signature.asc
Description: This is a digitally signed message part.
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev