aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric Anholt <[email protected]>2017-12-28 16:01:09 -0800
committerEric Anholt <[email protected]>2018-01-03 14:31:36 -0800
commite60e3a56a2edfdf773a388d4dfc0791137f039f1 (patch)
tree9a2661611b695c78d8a93fcbf7aa4f2b42e4619c
parent7836c85919a289e806c4dbd3e7d080914049b130 (diff)
broadcom/vc5: Fix discard_if during control flow.
I want to do the SETMSF.IFA to discard only if execute == 0 and cond, so our dest of the PUSHZ needs to be nonzero if execute or !cond are nonzero. Fixes dEQP-GLES3.functional.shaders.discard.dynamic_loop_dynamic.
-rw-r--r--src/broadcom/compiler/nir_to_vir.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/broadcom/compiler/nir_to_vir.c b/src/broadcom/compiler/nir_to_vir.c
index f998f716590..208ee1b86a8 100644
--- a/src/broadcom/compiler/nir_to_vir.c
+++ b/src/broadcom/compiler/nir_to_vir.c
@@ -1753,7 +1753,7 @@ ntq_emit_intrinsic(struct v3d_compile *c, nir_intrinsic_instr *instr)
* the condition so that we can use zero as "executing
* and discarding."
*/
- vir_PF(c, vir_AND(c, c->execute, vir_NOT(c, cond)),
+ vir_PF(c, vir_OR(c, c->execute, vir_NOT(c, cond)),
V3D_QPU_PF_PUSHZ);
vir_set_cond(vir_SETMSF_dest(c, vir_reg(QFILE_NULL, 0),
vir_uniform_ui(c, 0)),