projects
/
mesa.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
81b998c
)
gallivm: Fix mask calculation for emit_kill_if.
author
Si Chen
<sichen@vmware.com>
Thu, 14 Nov 2013 17:17:13 +0000
(09:17 -0800)
committer
José Fonseca
<jfonseca@vmware.com>
Tue, 19 Nov 2013 19:16:18 +0000
(19:16 +0000)
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>
src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c
patch
|
blob
|
history
diff --git
a/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c
b/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c
index 3e0fd1cf9914d7a94884335471033b4405639671..37f7a569702084acb837874bbaec92222d7547fe 100644
(file)
--- a/
src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c
+++ b/
src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c
@@
-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);
}