On Tuesday, July 26, 2016 10:14:12 AM PDT Nicolai Hähnle wrote: > From: Nicolai Hähnle <nicolai.haeh...@amd.com> > > The order of optimizations can lead to the conditional discard optimization > being applied twice to the same discard statement. In this case, we must > ensure that both conditions are applied. > > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=96762 > Cc: mesa-sta...@lists.freedesktop.org > --- > src/compiler/glsl/opt_conditional_discard.cpp | 9 ++++++++- > 1 file changed, 8 insertions(+), 1 deletion(-) > > diff --git a/src/compiler/glsl/opt_conditional_discard.cpp > b/src/compiler/glsl/opt_conditional_discard.cpp > index 1ca8803..a27bead 100644 > --- a/src/compiler/glsl/opt_conditional_discard.cpp > +++ b/src/compiler/glsl/opt_conditional_discard.cpp > @@ -72,7 +72,14 @@ opt_conditional_discard_visitor::visit_leave(ir_if *ir) > > /* Move the condition and replace the ir_if with the ir_discard. */ > ir_discard *discard = (ir_discard *) ir->then_instructions.head; > - discard->condition = ir->condition; > + if (!discard->condition) > + discard->condition = ir->condition; > + else { > + void *ctx = ralloc_parent(ir); > + discard->condition = new(ctx) ir_expression(ir_binop_logic_and, > + ir->condition, > + discard->condition); > + } > ir->replace_with(discard); > > progress = true; >
Whoops, thanks for fixing this! Reviewed-by: Kenneth Graunke <kenn...@whitecape.org>
signature.asc
Description: This is a digitally signed message part.
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev