From: Alyssa Rosenzweig Date: Mon, 31 Aug 2020 11:09:30 +0000 (-0400) Subject: mesa/st: Don't set alpha if ALPHA_TEST is lowered X-Git-Url: https://git.libre-soc.org/?p=mesa.git;a=commitdiff_plain;h=c601e730b298c5bdd34bc4335f203d46c5cdf9b3 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: --- 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);