[Mesa-dev] [PATCH 05/11] i965/eu: Port Broadwell CMP destination type hack to brw_eu_emit.c.
Kenneth Graunke
kenneth at whitecape.org
Sat Aug 9 14:28:45 PDT 2014
See gen8_generator::CMP().
Signed-off-by: Kenneth Graunke <kenneth at 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
More information about the mesa-dev
mailing list