diff options
-rw-r--r-- | src/sna/gen2_render.c | 15 | ||||
-rw-r--r-- | src/sna/gen3_render.c | 16 | ||||
-rw-r--r-- | src/sna/gen4_render.c | 9 | ||||
-rw-r--r-- | src/sna/gen5_render.c | 17 |
4 files changed, 33 insertions, 24 deletions
diff --git a/src/sna/gen2_render.c b/src/sna/gen2_render.c index b65454d8..431b972f 100644 --- a/src/sna/gen2_render.c +++ b/src/sna/gen2_render.c @@ -1755,14 +1755,6 @@ gen2_render_composite(struct sna *sna, return false; } - if (mask == NULL && sna->kgem.mode == KGEM_BLT && - sna_blt_composite(sna, op, - src, dst, - src_x, src_y, - dst_x, dst_y, - width, height, tmp)) - return true; - sna_render_reduce_damage(tmp, dst_x, dst_y, width, height); tmp->op = op; @@ -1783,6 +1775,13 @@ gen2_render_composite(struct sna *sna, case 0: gen2_composite_solid_init(sna, &tmp->src, 0); case 1: + if (mask == NULL && + sna_blt_composite__convert(sna, + src_x, src_y, + width, height, + dst_x, dst_y, + tmp)) + return true; break; } diff --git a/src/sna/gen3_render.c b/src/sna/gen3_render.c index 18c5d852..ce71d82f 100644 --- a/src/sna/gen3_render.c +++ b/src/sna/gen3_render.c @@ -2832,14 +2832,6 @@ gen3_render_composite(struct sna *sna, return false; } - if (mask == NULL && sna->kgem.mode != KGEM_RENDER && - sna_blt_composite(sna, op, - src, dst, - src_x, src_y, - dst_x, dst_y, - width, height, tmp)) - return true; - sna_render_reduce_damage(tmp, dst_x, dst_y, width, height); tmp->op = op; @@ -2866,6 +2858,14 @@ gen3_render_composite(struct sna *sna, tmp->src.u.gen3.type = SHADER_ZERO; break; case 1: + if (mask == NULL && + sna_blt_composite__convert(sna, + src_x, src_y, + width, height, + dst_x, dst_y, + tmp)) + return true; + gen3_composite_channel_convert(&tmp->src); break; } diff --git a/src/sna/gen4_render.c b/src/sna/gen4_render.c index 7dab92b7..ab06295a 100644 --- a/src/sna/gen4_render.c +++ b/src/sna/gen4_render.c @@ -1913,6 +1913,7 @@ gen4_composite_picture(struct sna *sna, } else channel->transform = picture->transform; + channel->pict_format = picture->format; channel->card_format = gen4_get_card_format(picture->format); if (channel->card_format == -1) return sna_render_picture_convert(sna, picture, channel, pixmap, @@ -2305,6 +2306,14 @@ gen4_render_composite(struct sna *sna, gen4_composite_solid_init(sna, &tmp->src, 0); /* fall through to fixup */ case 1: + if (mask == NULL && + sna_blt_composite__convert(sna, + src_x, src_y, + width, height, + dst_x, dst_y, + tmp)) + return true; + gen4_composite_channel_convert(&tmp->src); break; } diff --git a/src/sna/gen5_render.c b/src/sna/gen5_render.c index f50e785b..488ac342 100644 --- a/src/sna/gen5_render.c +++ b/src/sna/gen5_render.c @@ -1923,6 +1923,7 @@ gen5_composite_picture(struct sna *sna, } else channel->transform = picture->transform; + channel->pict_format = picture->format; channel->card_format = gen5_get_card_format(picture->format); if (channel->card_format == -1) return sna_render_picture_convert(sna, picture, channel, pixmap, @@ -2302,14 +2303,6 @@ gen5_render_composite(struct sna *sna, return false; } - if (mask == NULL && sna->kgem.mode == KGEM_BLT && - sna_blt_composite(sna, op, - src, dst, - src_x, src_y, - dst_x, dst_y, - width, height, tmp)) - return true; - sna_render_reduce_damage(tmp, dst_x, dst_y, width, height); if (too_large(tmp->dst.width, tmp->dst.height) && @@ -2330,6 +2323,14 @@ gen5_render_composite(struct sna *sna, gen5_composite_solid_init(sna, &tmp->src, 0); /* fall through to fixup */ case 1: + if (mask == NULL && + sna_blt_composite__convert(sna, + src_x, src_y, + width, height, + dst_x, dst_y, + tmp)) + return true; + gen5_composite_channel_convert(&tmp->src); break; } |