summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2012-01-14 10:17:27 +0000
committerChris Wilson <chris@chris-wilson.co.uk>2012-01-14 18:13:47 +0000
commitf3e0ba4f65db2b85f89aa3868d153434bc41c811 (patch)
treed0989875af85d1f4698eecfe8bee8ff55d7cedf4
parentfb92818ba4dc81ce62d58a87b5af6cb1e3a96708 (diff)
sna/gen5: Disable render glyphs_to_dst
Processing more than a single rectangle using the CA path on ILK is extremely hit-or-miss, often resulting in the absence of the second primitive (ie. the glyphs are cleared but not added.) This is reminiscent of the complete breakage of the BRW shaders, none of which can handle more than a single rectangle. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
-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) {