etnaviv: fix alpha blend with dither on older GPUs

While setting up DITHER_MODE allows alpha blending to work properly
together with dithering on new GPUs (those with PE_DITHER_FIX), older
cores still change the render target. As dithering is optional and
implementation defined we can simply disable it on the affected GPUs,
when alpha blending is enabled to work around this bug.

Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
Reviewed-by: Christian Gmeiner <christian.gmeiner@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13396>
This commit is contained in:
Lucas Stach 2021-10-06 16:26:57 +02:00 committed by Marge Bot
parent d199d65c3a
commit fc17f79f2c
1 changed files with 3 additions and 1 deletions

View File

@ -108,7 +108,9 @@ etna_blend_state_create(struct pipe_context *pctx,
* dither pattern,
* for now, set the same values as the blob.
*/
if (so->dither) {
if (so->dither &&
(!alpha_enable ||
VIV_FEATURE(ctx->screen, chipMinorFeatures3, PE_DITHER_FIX))) {
co->PE_DITHER[0] = 0x6e4ca280;
co->PE_DITHER[1] = 0x5d7f91b3;
} else {