From 09676b5817339cb7653fb23c9c5341b7f95392bb Mon Sep 17 00:00:00 2001 From: Danylo Piliaiev Date: Wed, 17 Aug 2022 11:06:55 +0300 Subject: [PATCH] freedreno: Disable LRZ write when alpha-to-coverage is enabled Alpha-to-coverage acts like discard and happens after FS ends, so like with discard LRZ write should be disabled. With discard we don't know at the moment of binning whether fragment would be not discarded, so we cannot write its depth to LRZ. Cc: mesa-stable Signed-off-by: Danylo Piliaiev Part-of: --- src/gallium/drivers/freedreno/a6xx/fd6_emit.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/gallium/drivers/freedreno/a6xx/fd6_emit.c b/src/gallium/drivers/freedreno/a6xx/fd6_emit.c index faf0a12..373a4e7 100644 --- a/src/gallium/drivers/freedreno/a6xx/fd6_emit.c +++ b/src/gallium/drivers/freedreno/a6xx/fd6_emit.c @@ -646,7 +646,8 @@ compute_lrz_state(struct fd6_emit *emit, bool binning_pass) assert_dt lrz = zsa->lrz; /* normalize lrz state: */ - if (blend->reads_dest || fs->writes_pos || fs->no_earlyz || fs->has_kill) { + if (blend->reads_dest || fs->writes_pos || fs->no_earlyz || fs->has_kill || + blend->base.alpha_to_coverage) { lrz.write = false; if (binning_pass) lrz.enable = false; -- 2.7.4