From 2f1bc1da864f8d169427b911bf60e1023321e420 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Alejandro=20Pi=C3=B1eiro?= Date: Fri, 23 Oct 2015 15:32:30 +0200 Subject: [PATCH] i965/vec4: check opcode on vec4_instruction::reads_flag(channel) Commit f17b78 added an alternative reads_flag(channel) that returned if the instruction was reading a specific channel flag. By mistake it only took into account the predicate, but when the opcode is VS_OPCODE_UNPACK_FLAGS_SIMD4X2 there isn't any predicate, but the flag are used. That mistake caused some regressions on old hw. More information on this bug: https://bugs.freedesktop.org/show_bug.cgi?id=92621 Reviewed-by: Kenneth Graunke --- src/mesa/drivers/dri/i965/brw_ir_vec4.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/mesa/drivers/dri/i965/brw_ir_vec4.h b/src/mesa/drivers/dri/i965/brw_ir_vec4.h index 74e9733bd44..cc4104c8eb3 100644 --- a/src/mesa/drivers/dri/i965/brw_ir_vec4.h +++ b/src/mesa/drivers/dri/i965/brw_ir_vec4.h @@ -188,8 +188,8 @@ public: bool reads_flag(unsigned c) { - if (!reads_flag()) - return false; + if (opcode == VS_OPCODE_UNPACK_FLAGS_SIMD4X2) + return true; switch (predicate) { case BRW_PREDICATE_NONE: -- 2.30.2