diff options
Diffstat (limited to 'src/sna/gen6_render.c')
-rw-r--r-- | src/sna/gen6_render.c | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/src/sna/gen6_render.c b/src/sna/gen6_render.c index 2392c9ba..badade09 100644 --- a/src/sna/gen6_render.c +++ b/src/sna/gen6_render.c @@ -2592,18 +2592,15 @@ gen6_render_fill_boxes(struct sna *sna, dst->drawable.width > 8192 || dst->drawable.height > 8192 || !gen6_check_dst_format(format)) { - uint8_t alu = GXcopy; + uint8_t alu = -1; - if (op == PictOpClear) { + if (op == PictOpClear || (op == PictOpOutReverse && color->alpha >= 0xff00)) alu = GXclear; - pixel = 0; - op = PictOpSrc; - } - if (op == PictOpOver && color->alpha >= 0xff00) - op = PictOpSrc; + if (op == PictOpSrc || (op == PictOpOver && color->alpha >= 0xff00)) + alu = GXcopy; - if (op == PictOpSrc && + if (alu != -1 && sna_get_pixel_from_rgba(&pixel, color->red, color->green, |