summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/sna/sna_glyphs.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/sna/sna_glyphs.c b/src/sna/sna_glyphs.c
index 71625b8b..95cc8c06 100644
--- a/src/sna/sna_glyphs.c
+++ b/src/sna/sna_glyphs.c
@@ -1233,11 +1233,16 @@ sna_glyphs(CARD8 op,
goto fallback;
}
+ _mask = mask;
/* XXX discard the mask for non-overlapping glyphs? */
- if (!mask ||
+ /* XXX more shader breakage?: CA to dst is fubar on ilk */
+ if (sna->kgem.gen == 50 && !_mask)
+ _mask = list[0].format;
+
+ if (!_mask ||
(((nlist == 1 && list->len == 1) || op == PictOpAdd) &&
- dst->format == (mask->depth << 24 | mask->format))) {
+ dst->format == (_mask->depth << 24 | _mask->format))) {
if (glyphs_to_dst(sna, op,
src, dst,
src_x, src_y,
@@ -1245,7 +1250,6 @@ sna_glyphs(CARD8 op,
return;
}
- _mask = mask;
if (!_mask)
_mask = glyphs_format(nlist, list, glyphs);
if (_mask) {