rpms/xorg-x11-server/F-10 xserver-1.5.3-exa-fix-unneeded-copies.patch, NONE, 1.1 xorg-x11-server.spec, 1.382, 1.383

Dave Airlie airlied at fedoraproject.org
Mon Nov 17 00:46:48 UTC 2008


Author: airlied

Update of /cvs/pkgs/rpms/xorg-x11-server/F-10
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv17190

Modified Files:
	xorg-x11-server.spec 
Added Files:
	xserver-1.5.3-exa-fix-unneeded-copies.patch 
Log Message:
* Mon Nov 17 2008 Dave Airlie <airlied at redhat.com> 1.5.3-4
- xserver-1.5.3-exa-fix-unneeded-copies.patch: fix some unneeded calls to drivers


xserver-1.5.3-exa-fix-unneeded-copies.patch:

--- NEW FILE xserver-1.5.3-exa-fix-unneeded-copies.patch ---
>From fb2d582e65b386e52bbba8c7f1c7777617db87f4 Mon Sep 17 00:00:00 2001
From: Dave Airlie <airlied at redhat.com>
Date: Wed, 15 Oct 2008 00:02:13 +0200
Subject: [PATCH] exa: fix unneeded calls to drivers

diff --git a/exa/exa_accel.c b/exa/exa_accel.c
index 522224b..6e754b2 100644
--- a/exa/exa_accel.c
+++ b/exa/exa_accel.c
@@ -401,6 +401,10 @@ exaCopyNtoN (DrawablePtr    pSrcDrawable,
     RegionPtr srcregion = NULL, dstregion = NULL;
     xRectangle *rects;
 
+    /* avoid doing copy operations if no boxes */
+    if (nbox == 0)
+	return;
+
     pSrcPixmap = exaGetDrawablePixmap (pSrcDrawable);
     pDstPixmap = exaGetDrawablePixmap (pDstDrawable);
 
@@ -1229,36 +1233,51 @@ exaFillRegionTiled (DrawablePtr	pDrawable,
 	 */
 	if (alu != GXcopy)
 	    ret = TRUE;
-	else if ((*pExaScr->info->PrepareCopy) (pPixmap, pPixmap, 1, 1, alu,
-						planemask)) {
-	    for (i = 0; i < nbox; i++)
-	    {
+	else {
+	    Bool more_copy = FALSE;
+
+	    for (i = 0; i < nbox; i++) {
 		int dstX = pBox[i].x1 + tileWidth;
 		int dstY = pBox[i].y1 + tileHeight;
-		int width = min(pBox[i].x2 - dstX, tileWidth);
-		int height = min(pBox[i].y2 - pBox[i].y1, tileHeight);
-
-		while (dstX < pBox[i].x2) {
-		    (*pExaScr->info->Copy) (pPixmap, pBox[i].x1, pBox[i].y1,
-					    dstX, pBox[i].y1, width, height);
-		    dstX += width;
-		    width = min(pBox[i].x2 - dstX, width * 2);
-		}
 
-		width = pBox[i].x2 - pBox[i].x1;
-		height = min(pBox[i].y2 - dstY, tileHeight);
+		if ((dstX < pBox[i].x2) && (dstY < pBox[i].y2))
+		    more_copy = TRUE;
+	    }
+
+	    if (more_copy == FALSE)
+		ret = TRUE;
 
-		while (dstY < pBox[i].y2) {
-		    (*pExaScr->info->Copy) (pPixmap, pBox[i].x1, pBox[i].y1,
-					    pBox[i].x1, dstY, width, height);
-		    dstY += height;
-		    height = min(pBox[i].y2 - dstY, height * 2);
+	    if (more_copy && (*pExaScr->info->PrepareCopy) (pPixmap, pPixmap,
+							    1, 1, alu, planemask)) {
+		for (i = 0; i < nbox; i++)
+		{
+		    int dstX = pBox[i].x1 + tileWidth;
+		    int dstY = pBox[i].y1 + tileHeight;
+		    int width = min(pBox[i].x2 - dstX, tileWidth);
+		    int height = min(pBox[i].y2 - pBox[i].y1, tileHeight);
+
+		    while (dstX < pBox[i].x2) {
+			(*pExaScr->info->Copy) (pPixmap, pBox[i].x1, pBox[i].y1,
+						dstX, pBox[i].y1, width, height);
+			dstX += width;
+			width = min(pBox[i].x2 - dstX, width * 2);
+		    }
+
+		    width = pBox[i].x2 - pBox[i].x1;
+		    height = min(pBox[i].y2 - dstY, tileHeight);
+
+		    while (dstY < pBox[i].y2) {
+			(*pExaScr->info->Copy) (pPixmap, pBox[i].x1, pBox[i].y1,
+						pBox[i].x1, dstY, width, height);
+			dstY += height;
+			height = min(pBox[i].y2 - dstY, height * 2);
+		    }
 		}
-	    }
 
-	    (*pExaScr->info->DoneCopy) (pPixmap);
+		(*pExaScr->info->DoneCopy) (pPixmap);
 
-	    ret = TRUE;
+		ret = TRUE;
+	    }
 	}
 
 	exaMarkSync(pDrawable->pScreen);


Index: xorg-x11-server.spec
===================================================================
RCS file: /cvs/pkgs/rpms/xorg-x11-server/F-10/xorg-x11-server.spec,v
retrieving revision 1.382
retrieving revision 1.383
diff -u -r1.382 -r1.383
--- xorg-x11-server.spec	13 Nov 2008 04:05:47 -0000	1.382
+++ xorg-x11-server.spec	17 Nov 2008 00:46:17 -0000	1.383
@@ -19,7 +19,7 @@
 Summary:   X.Org X11 X server
 Name:      xorg-x11-server
 Version:   1.5.3
-Release:   3%{?dist}
+Release:   4%{?dist}
 URL:       http://www.x.org
 License:   MIT
 Group:     User Interface/X
@@ -52,6 +52,7 @@
 Patch105:  xserver-1.5.1-exa-fix-glyph-segfault.patch
 Patch106:  xserver-1.5.3-exa-fix-x-y-src-dst.patch
 Patch107:  xserver-1.5.3-exa-fix-composite-rects.patch
+Patch108:  xserver-1.5.3-exa-fix-unneeded-copies.patch
 
 # Red Hat specific tweaking, not intended for upstream
 # XXX move these to the end of the list
@@ -518,6 +519,9 @@
 
 
 %changelog
+* Mon Nov 17 2008 Dave Airlie <airlied at redhat.com> 1.5.3-4
+- xserver-1.5.3-exa-fix-unneeded-copies.patch: fix some unneeded calls to drivers
+
 * Thu Nov 13 2008 Peter Hutterer <peter.hutterer at redhat.com> 1.5.3-3
 - xserver-1.5.3-AEI-on-by-default.patch: ensure AEI on if there is no
   xorg.conf. (#471221)




More information about the fedora-extras-commits mailing list