xf86-video-intel: 2 commits - src/sna/sna_glyphs.c

Chris Wilson ickle at kemper.freedesktop.org
Fri Aug 1 04:03:42 PDT 2014


 src/sna/sna_glyphs.c |   26 ++++++++++----------------
 1 file changed, 10 insertions(+), 16 deletions(-)

New commits:
commit a1a0b9c2e49d03e373695df8828c8d4c6312e5ac
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Fri Aug 1 12:02:58 2014 +0100

    sna/glyphs: Eliminate an extra conditional from glyphs-to-dst
    
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/src/sna/sna_glyphs.c b/src/sna/sna_glyphs.c
index 5d3bec2..94d702a 100644
--- a/src/sna/sna_glyphs.c
+++ b/src/sna/sna_glyphs.c
@@ -615,7 +615,7 @@ glyphs_to_dst(struct sna *sna,
 	src_x -= list->xOff + x;
 	src_y -= list->yOff + y;
 
-	glyph_atlas = NULL;
+	glyph_atlas = NO_ATLAS;
 	while (nlist--) {
 		int n = list->len;
 		x += list->xOff;
@@ -626,22 +626,18 @@ glyphs_to_dst(struct sna *sna,
 			int i;
 
 			p = sna_glyph(glyph);
-			if (unlikely(p->atlas == NULL)) {
+			if (unlikely(p->atlas != glyph_atlas)) {
 				if (unlikely(!glyph_valid(glyph)))
 					goto next_glyph;
 
-				if (glyph_atlas) {
+				if (glyph_atlas != NO_ATLAS) {
 					tmp.done(sna, &tmp);
-					glyph_atlas = NULL;
+					glyph_atlas = NO_ATLAS;
 				}
 
-				if (!glyph_cache(screen, &sna->render, glyph))
+				if (p->atlas == NULL &&
+				    !glyph_cache(screen, &sna->render, glyph))
 					goto next_glyph;
-			}
-
-			if (p->atlas != glyph_atlas) {
-				if (glyph_atlas)
-					tmp.done(sna, &tmp);
 
 				if (!sna->render.composite(sna,
 							   op, src, p->atlas, dst,
@@ -748,8 +744,6 @@ glyphs0_to_dst(struct sna *sna,
 	struct sna_composite_op tmp;
 	ScreenPtr screen = dst->pDrawable->pScreen;
 	PicturePtr glyph_atlas = NO_ATLAS;
-	const BoxRec *rects;
-	int nrect;
 	int x, y;
 
 	if (NO_GLYPHS_TO_DST)
@@ -767,8 +761,8 @@ glyphs0_to_dst(struct sna *sna,
 	src_y -= list->yOff + y;
 
 	if (clipped_glyphs(dst, nlist, list, glyphs)) {
-		rects = region_rects(dst->pCompositeClip);
-		nrect = region_num_rects(dst->pCompositeClip);
+		const BoxRec *rects = region_rects(dst->pCompositeClip);
+		int nrect = region_num_rects(dst->pCompositeClip);
 		if (nrect == 0)
 			return true;
 
commit fc2de62496061b9d0bace02729765344bd939122
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Fri Aug 1 12:00:05 2014 +0100

    sna/glyphs: Fallback to masked glyphs if rendering to a too wide dst
    
    Fixes regression from
    
    commit 79399ff9264ff23da0ab95131a67d2ac85651b3d
    Author: Chris Wilson <chris at chris-wilson.co.uk>
    Date:   Mon Mar 24 10:46:57 2014 +0000
    
        sna: Eliminate a few conditionals in glyph fast path
    
    for large pixmaps (such as extended desktops on gen2/gen3).
    
    Bugzilla: https://bugs.archlinux.org/task/40949
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/src/sna/sna_glyphs.c b/src/sna/sna_glyphs.c
index 0bb72d8..5d3bec2 100644
--- a/src/sna/sna_glyphs.c
+++ b/src/sna/sna_glyphs.c
@@ -800,7 +800,7 @@ glyphs0_to_dst(struct sna *sna,
 								   0, 0, 0, 0, 0, 0,
 								   0, 0,
 								   COMPOSITE_PARTIAL, &tmp))
-						goto next_glyph_N;
+						return false;
 
 					glyph_atlas = p->atlas;
 				}
@@ -892,7 +892,7 @@ next_glyph_N:
 							   0, 0, 0, 0, 0, 0,
 							   0, 0,
 							   COMPOSITE_PARTIAL, &tmp))
-					goto next_glyph_0;
+					return false;
 
 				glyph_atlas = p->atlas;
 			}


More information about the xorg-commit mailing list