From 008ad39b72eb86dc2f89789427be269c148feaf4 Mon Sep 17 00:00:00 2001 From: Chris Wilson Date: Tue, 27 Mar 2012 10:41:37 +0100 Subject: [PATCH] sna/gen6: Reduce opaque solid OVER to SRC for render composite Signed-off-by: Chris Wilson --- src/sna/gen6_render.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/sna/gen6_render.c b/src/sna/gen6_render.c index 6f1b55a6..3be9195b 100644 --- a/src/sna/gen6_render.c +++ b/src/sna/gen6_render.c @@ -2033,6 +2033,7 @@ gen6_composite_solid_init(struct sna *sna, channel->repeat = RepeatNormal; channel->is_affine = TRUE; channel->is_solid = TRUE; + channel->is_opaque = (color >> 24) == 0xff; channel->transform = NULL; channel->width = 1; channel->height = 1; @@ -2251,7 +2252,7 @@ gen6_composite_picture(struct sna *sna, x, y, w, h, dst_x, dst_y); } -static void gen6_composite_channel_convert(struct sna_composite_channel *channel) +inline static void gen6_composite_channel_convert(struct sna_composite_channel *channel) { channel->repeat = gen6_repeat(channel->repeat); channel->filter = gen6_filter(channel->filter); @@ -2735,6 +2736,8 @@ gen6_render_composite(struct sna *sna, DBG(("%s: choosing gen6_emit_composite_primitive_solid\n", __FUNCTION__)); tmp->prim_emit = gen6_emit_composite_primitive_solid; + if (tmp->src.is_opaque && op == PictOpOver) + tmp->op = PictOpSrc; } else if (tmp->src.transform == NULL) { DBG(("%s: choosing gen6_emit_composite_primitive_identity_source\n", __FUNCTION__));