gallivm: Fix mask calculation for emit_kill_if.

The exec_mask must be taken in consideration, just like emit_kill above.

The tgsi_exec module has the same bug and should be fixed in a future
change.

Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Reviewed-by: José Fonseca <jfonseca@vmware.com>
This commit is contained in:
Si Chen 2013-11-14 09:17:13 -08:00 committed by José Fonseca
parent 81b998ca48
commit e7a5905d8a

View file

@ -2295,12 +2295,15 @@ emit_kill_if(
}
}
if(mask) {
lp_build_mask_update(bld->mask, mask);
if (!near_end_of_shader(bld, pc))
lp_build_mask_check(bld->mask);
if (bld->exec_mask.has_mask) {
LLVMValueRef invmask;
invmask = LLVMBuildNot(builder, bld->exec_mask.exec_mask, "kilp");
mask = LLVMBuildOr(builder, mask, invmask, "");
}
lp_build_mask_update(bld->mask, mask);
if (!near_end_of_shader(bld, pc))
lp_build_mask_check(bld->mask);
}