From c601e730b298c5bdd34bc4335f203d46c5cdf9b3 Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Mon, 31 Aug 2020 07:09:30 -0400 Subject: [PATCH] mesa/st: Don't set alpha if ALPHA_TEST is lowered When PIPE_CAP_ALPHA_TEST is zero, the driver does not support alpha testing, so alpha shouldn't be set. In particular, alpha.enable should be zero, since logically alpha testing is not used in the ZSA CSO when it's lowered in the fragment shader key. Fixes failing asserts in kicad, rvgl, etc with Panfrost since 6afd4ad. (We could remove the assert in panfrost instead, but logically setting alpha.enabled on top of lowering the shader seems wrong?) As Erik pointed out, this should improve CSO cache behaviour. Signed-off-by: Alyssa Rosenzweig Reported-by: Icecream95 Tested-by: Urja Rannikko Tested-by: Robin Murphy Reviewed-by: Erik Faye-Lund Fixes: 6afd4addefa ("panfrost: Simplify depth/stencil/alpha") Part-of: --- src/mesa/state_tracker/st_atom_depth.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mesa/state_tracker/st_atom_depth.c b/src/mesa/state_tracker/st_atom_depth.c index 9e12361f881..c6995812e4e 100644 --- a/src/mesa/state_tracker/st_atom_depth.c +++ b/src/mesa/state_tracker/st_atom_depth.c @@ -149,7 +149,7 @@ st_update_depth_stencil_alpha(struct st_context *st) } } - if (ctx->Color.AlphaEnabled && + if (ctx->Color.AlphaEnabled && !st->lower_alpha_test && !(ctx->DrawBuffer->_IntegerBuffers & 0x1)) { dsa->alpha.enabled = 1; dsa->alpha.func = st_compare_func_to_pipe(ctx->Color.AlphaFunc); -- 2.30.2