summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorIago Toral Quiroga <[email protected]>2016-09-15 11:30:32 +0200
committerSamuel Iglesias Gonsálvez <[email protected]>2017-01-03 11:26:51 +0100
commit5356d52f31b8285c97f2c920e28cf4eb2a8caa58 (patch)
tree2258118857e0d53560fc77d2a059d4d5da785191 /src
parent8f39b3668afbd9569e34a089866d364a78f4db2c (diff)
i965/vec4: teach cmod propagation about different execution sizes
We can't propagate the conditional modifier from one instruction to another of a different execution size / group, since that would change the channels affected by the conditional. Reviewed-by: Matt Turner <[email protected]>
Diffstat (limited to 'src')
-rw-r--r--src/mesa/drivers/dri/i965/brw_vec4_cmod_propagation.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_vec4_cmod_propagation.cpp b/src/mesa/drivers/dri/i965/brw_vec4_cmod_propagation.cpp
index c531fba0312..4454cdbfc94 100644
--- a/src/mesa/drivers/dri/i965/brw_vec4_cmod_propagation.cpp
+++ b/src/mesa/drivers/dri/i965/brw_vec4_cmod_propagation.cpp
@@ -76,7 +76,9 @@ opt_cmod_propagation_local(bblock_t *block)
scan_inst->dst.writemask != WRITEMASK_XYZW) ||
(scan_inst->dst.writemask == WRITEMASK_XYZW &&
inst->src[0].swizzle != BRW_SWIZZLE_XYZW) ||
- (inst->dst.writemask & ~scan_inst->dst.writemask) != 0) {
+ (inst->dst.writemask & ~scan_inst->dst.writemask) != 0 ||
+ scan_inst->exec_size != inst->exec_size ||
+ scan_inst->group != inst->group) {
break;
}