See gen8_generator::CMP(). Signed-off-by: Kenneth Graunke <kenn...@whitecape.org> --- src/mesa/drivers/dri/i965/brw_eu_emit.c | 8 ++++++++ 1 file changed, 8 insertions(+)
diff --git a/src/mesa/drivers/dri/i965/brw_eu_emit.c b/src/mesa/drivers/dri/i965/brw_eu_emit.c index 5e14ba5..33684d4 100644 --- a/src/mesa/drivers/dri/i965/brw_eu_emit.c +++ b/src/mesa/drivers/dri/i965/brw_eu_emit.c @@ -1785,6 +1785,14 @@ void brw_CMP(struct brw_compile *p, struct brw_context *brw = p->brw; brw_inst *insn = next_insn(p, BRW_OPCODE_CMP); + if (brw->gen >= 8) { + /* The CMP instruction appears to behave erratically for floating point + * sources unless the destination type is also float. Overriding it to + * match src0 makes it work in all cases. + */ + dest.type = src0.type; + } + brw_inst_set_cond_modifier(brw, insn, conditional); brw_set_dest(p, insn, dest); brw_set_src0(p, insn, src0); -- 2.0.0 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev