diff options
Diffstat (limited to 'src/sna/gen7_render.c')
-rw-r--r-- | src/sna/gen7_render.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/sna/gen7_render.c b/src/sna/gen7_render.c index 6c1fe267..c7ce70c0 100644 --- a/src/sna/gen7_render.c +++ b/src/sna/gen7_render.c @@ -2036,6 +2036,18 @@ gen7_composite_picture(struct sna *sna, y += dy; channel->transform = NULL; channel->filter = PictFilterNearest; + + if (channel->repeat || + (x >= 0 && + y >= 0 && + x + w < pixmap->drawable.width && + y + h < pixmap->drawable.height)) { + struct sna_pixmap *priv = sna_pixmap(pixmap); + if (priv->clear) { + DBG(("%s: converting large pixmap source into solid [%08x]\n", __FUNCTION__, priv->clear_color)); + return gen4_channel_init_solid(sna, channel, priv->clear_color); + } + } } else channel->transform = picture->transform; |