summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--etnaviv/etnaviv_render.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/etnaviv/etnaviv_render.c b/etnaviv/etnaviv_render.c
index 2093129..f91438a 100644
--- a/etnaviv/etnaviv_render.c
+++ b/etnaviv/etnaviv_render.c
@@ -560,11 +560,13 @@ static int etnaviv_accel_composite_srconly(PicturePtr pSrc, PicturePtr pDst,
return FALSE;
/*
- * Apply the same work-around for a non-alpha source as for
- * a non-alpha destination.
+ * Apply the same work-around for a non-alpha source as for a
+ * non-alpha destination. The test order is important here as
+ * we must always have an alpha format, otherwise the selected
+ * alpha mode (by etnaviv_accel_reduce_mask()) will be ignored.
*/
- if (etnaviv_blend_src_alpha_normal(final_blend) &&
- etnaviv_workaround_nonalpha(vSrc)) {
+ if (etnaviv_workaround_nonalpha(vSrc) &&
+ etnaviv_blend_src_alpha_normal(final_blend)) {
final_blend->alpha_mode |= VIVS_DE_ALPHA_MODES_GLOBAL_SRC_ALPHA_MODE_GLOBAL;
final_blend->src_alpha = 255;
}