[arch-commits] Commit in xorg-server/repos (6 files)

Jan de Groot jgc at archlinux.org
Sun Jan 31 11:42:15 UTC 2010


    Date: Sunday, January 31, 2010 @ 06:42:14
  Author: jgc
Revision: 66501

Merged revisions 66500 via svnmerge from 
svn+ssh://gerolde.archlinux.org/srv/svn-packages/xorg-server/trunk

........
  r66500 | jgc | 2010-01-31 12:41:57 +0100 (Sun, 31 Jan 2010) | 2 lines
  
  upgpkg: xorg-server 1.7.4.901-1
      Remove outdated patches, add git fixes from the nomination branch. Update to 1.7.4.901
........

Added:
  xorg-server/repos/extra-i686/git-fixes.patch
    (from rev 66500, xorg-server/trunk/git-fixes.patch)
Modified:
  xorg-server/repos/extra-i686/	(properties)
  xorg-server/repos/extra-i686/PKGBUILD
Deleted:
  xorg-server/repos/extra-i686/revert-bug25136.patch
  xorg-server/repos/extra-i686/xserver-1.7.1-nvidia-performance.patch
  xorg-server/repos/extra-i686/xserver-1.7.1-window-pictures.patch

----------------------------------------+
 PKGBUILD                               |   18 -
 git-fixes.patch                        |  206 +++++++++++++++++++
 revert-bug25136.patch                  |  331 -------------------------------
 xserver-1.7.1-nvidia-performance.patch |   58 -----
 xserver-1.7.1-window-pictures.patch    |   58 -----
 5 files changed, 216 insertions(+), 455 deletions(-)


Property changes on: xorg-server/repos/extra-i686
___________________________________________________________________
Modified: svnmerge-integrated
   - /xorg-server/trunk:1-61817
   + /xorg-server/trunk:1-66500

Modified: extra-i686/PKGBUILD
===================================================================
--- extra-i686/PKGBUILD	2010-01-31 11:41:57 UTC (rev 66500)
+++ extra-i686/PKGBUILD	2010-01-31 11:42:14 UTC (rev 66501)
@@ -2,13 +2,13 @@
 # Maintainer: Jan de Groot <jgc at archlinux.org>
 
 pkgname=xorg-server
-pkgver=1.7.3.902
+pkgver=1.7.4.901
 pkgrel=1
 pkgdesc="X.Org X servers"
 arch=('i686' 'x86_64')
 license=('custom')
 url="http://xorg.freedesktop.org"
-depends=('hal>=0.5.14' 'libgl' 'libxfont>=1.4.1' 'openssl>=0.9.8k' 'libpciaccess>=0.10.9' 'libxv>=1.0.5' 'pixman>=0.16.2' 'xcursor-themes>=1.0.2' 'xkeyboard-config>=1.6' 'xorg-server-utils' 'xorg-fonts-misc' 'xbitmaps' 'diffutils' 'xf86-input-evdev>=2.2.5' 'inputproto>=2.0-1')
+depends=('hal>=0.5.14' 'libgl' 'libxfont>=1.4.1' 'openssl>=0.9.8k' 'libpciaccess>=0.10.9' 'libxv>=1.0.5' 'pixman>=0.16.4' 'xcursor-themes>=1.0.2' 'xkeyboard-config>=1.8' 'xorg-server-utils' 'xorg-fonts-misc' 'xbitmaps' 'diffutils' 'xf86-input-evdev>=2.2.5' 'inputproto>=2.0')
 makedepends=('libx11>=1.3' 'mesa>=7.7' 'xf86driproto>=2.1.0' 'xtrans>=1.2.4' 'libxkbfile>=1.0.6' 'randrproto>=1.3.1' 'renderproto>=0.11' 'xcmiscproto>=1.2.0' 'bigreqsproto>=1.1.0' 'resourceproto>=1.1.0' 'videoproto>=2.3.0' 'compositeproto>=0.4.1' 'scrnsaverproto>=1.2.0' 'xf86dgaproto>=2.1' 'libgl>=7.7' 'glproto>=1.4.10' 'xorg-util-macros>=1.3.0' 'xineramaproto>=1.2')
 conflicts=('catalyst-utils<=9.2' 'xf86-input-calcomp' 'xf86-input-citron' 'xf86-input-digitaledge' 'xf86-input-dmc' 'xf86-input-dynapro' 'xf86-input-elo2300'
 	'xf86-input-jamstudio' 'xf86-input-magellan' 'xf86-input-magictouch' 'xf86-input-microtouch' 'xf86-input-palmax' 'xf86-input-spaceorb' 'xf86-input-summa' 'xf86-input-tek4957' 'xf86-input-ur98' 'xf86-video-vga' 'xf86-video-intel-legacy' 'nvidia-96xx-utils<96.43.14' 'nvidia-173xx-utils<173.14.21')
@@ -20,8 +20,16 @@
         xorg-redhat-die-ugly-pattern-die-die-die.patch
         xserver-1.7.1-libcrypto.patch
         xserver-1.7.1-gamma-kdm-fix.patch
+        git-fixes.patch
         xvfb-run
         xvfb-run.1)
+md5sums=('e1656bd2fd362299dc7bae489525a9da'
+         '1a336eb22e27cbf443ec5a2ecddfa93c'
+         '957d429cad03ac87281b7e40d963497c'
+         '8eae23916552e609c36ecae1827c2e9d'
+         'fb936bccf2d385da4946c4137eca5d2f'
+         '52fd3effd80d7bc6c1660d4ecf23d31c'
+         '376c70308715cd2643f7bff936d9934b')
 
 build() {
   cd "${srcdir}/${pkgname}-${pkgver}"
@@ -84,9 +92,3 @@
   install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
   install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/" || return 1
 }
-md5sums=('5806bd9d1ed734a60db2e32473a720b4'
-         '1a336eb22e27cbf443ec5a2ecddfa93c'
-         '957d429cad03ac87281b7e40d963497c'
-         '8eae23916552e609c36ecae1827c2e9d'
-         '52fd3effd80d7bc6c1660d4ecf23d31c'
-         '376c70308715cd2643f7bff936d9934b')

Copied: xorg-server/repos/extra-i686/git-fixes.patch (from rev 66500, xorg-server/trunk/git-fixes.patch)
===================================================================
--- extra-i686/git-fixes.patch	                        (rev 0)
+++ extra-i686/git-fixes.patch	2010-01-31 11:42:14 UTC (rev 66501)
@@ -0,0 +1,206 @@
+From a191318f8dde2a4ff47c051244e8c88e8f92883a Mon Sep 17 00:00:00 2001
+From: Christian Zander <chzander at nvidia.com>
+Date: Mon, 11 Jan 2010 20:29:07 +0000
+Subject: x86emu: Respect the LEA 67h address size prefix.
+
+Signed-off-by: Christian Zander <chzander at nvidia.com>
+Signed-off-by: Aaron Plattner <aplattner at nvidia.com>
+Tested-by: Tiago Vignatti <tiago.vignatti at nokia.com>
+Signed-off-by: Keith Packard <keithp at keithp.com>
+(cherry picked from commit f57bc0ede8e018c7e264b917927c42a018cd1d5a)
+---
+diff --git a/hw/xfree86/x86emu/ops.c b/hw/xfree86/x86emu/ops.c
+index 37ae2c9..21a0347 100644
+--- a/hw/xfree86/x86emu/ops.c
++++ b/hw/xfree86/x86emu/ops.c
+@@ -6567,42 +6567,62 @@ Handles opcode 0x8d
+ static void x86emuOp_lea_word_R_M(u8 X86EMU_UNUSED(op1))
+ {
+     int mod, rl, rh;
+-    u16 *srcreg;
+     uint destoffset;
+ 
+-/*
+- * TODO: Need to handle address size prefix!
+- *
+- * lea  eax,[eax+ebx*2] ??
+- */
+-    
+     START_OF_INSTR();
+     DECODE_PRINTF("LEA\t");
+     FETCH_DECODE_MODRM(mod, rh, rl);
+     switch (mod) {
+     case 0:
+-        srcreg = DECODE_RM_WORD_REGISTER(rh);
+-        DECODE_PRINTF(",");
+-        destoffset = decode_rm00_address(rl);
+-        DECODE_PRINTF("\n");
+-        TRACE_AND_STEP();
+-        *srcreg = (u16)destoffset;
++        if (M.x86.mode & SYSMODE_PREFIX_ADDR) {
++            u32 *srcreg = DECODE_RM_LONG_REGISTER(rh);
++            DECODE_PRINTF(",");
++            destoffset = decode_rm00_address(rl);
++            DECODE_PRINTF("\n");
++            TRACE_AND_STEP();
++            *srcreg = (u32)destoffset;
++        } else {
++            u16 *srcreg = DECODE_RM_WORD_REGISTER(rh);
++            DECODE_PRINTF(",");
++            destoffset = decode_rm00_address(rl);
++            DECODE_PRINTF("\n");
++            TRACE_AND_STEP();
++            *srcreg = (u16)destoffset;
++        }
+         break;
+     case 1:
+-        srcreg = DECODE_RM_WORD_REGISTER(rh);
+-        DECODE_PRINTF(",");
+-        destoffset = decode_rm01_address(rl);
+-        DECODE_PRINTF("\n");
+-        TRACE_AND_STEP();
+-        *srcreg = (u16)destoffset;
++        if (M.x86.mode & SYSMODE_PREFIX_ADDR) {
++            u32 *srcreg = DECODE_RM_LONG_REGISTER(rh);
++            DECODE_PRINTF(",");
++            destoffset = decode_rm01_address(rl);
++            DECODE_PRINTF("\n");
++            TRACE_AND_STEP();
++            *srcreg = (u32)destoffset;
++        } else {
++            u16 *srcreg = DECODE_RM_WORD_REGISTER(rh);
++            DECODE_PRINTF(",");
++            destoffset = decode_rm01_address(rl);
++            DECODE_PRINTF("\n");
++            TRACE_AND_STEP();
++            *srcreg = (u16)destoffset;
++        }
+         break;
+     case 2:
+-        srcreg = DECODE_RM_WORD_REGISTER(rh);
+-        DECODE_PRINTF(",");
+-        destoffset = decode_rm10_address(rl);
+-        DECODE_PRINTF("\n");
+-        TRACE_AND_STEP();
+-        *srcreg = (u16)destoffset;
++        if (M.x86.mode & SYSMODE_PREFIX_ADDR) {
++            u32 *srcreg = DECODE_RM_LONG_REGISTER(rh);
++            DECODE_PRINTF(",");
++            destoffset = decode_rm10_address(rl);
++            DECODE_PRINTF("\n");
++            TRACE_AND_STEP();
++            *srcreg = (u32)destoffset;
++        } else {
++            u16 *srcreg = DECODE_RM_WORD_REGISTER(rh);
++            DECODE_PRINTF(",");
++            destoffset = decode_rm10_address(rl);
++            DECODE_PRINTF("\n");
++            TRACE_AND_STEP();
++            *srcreg = (u16)destoffset;
++        }
+         break;
+     case 3:                     /* register to register */
+         /* undefined.  Do nothing. */
+--
+cgit v0.8.3-6-g21f6
+From 66b6e2fd49fdc650703e56aa176a902e4921251c Mon Sep 17 00:00:00 2001
+From: Pierre-Loup A. Griffais <pgriffais at nvidia.com>
+Date: Wed, 27 Jan 2010 22:03:03 +0000
+Subject: Fix source pictures getting random transforms after 2d6a8f668342a5190cdf43b5.
+
+*xoff and *yoff were uninitialized for source-only pictures.x
+
+Signed-off-by: Pierre-Loup A. Griffais <pgriffais at nvidia.com>
+Reviewed-by: Aaron Plattner <aplattner at nvidia.com>
+Signed-off-by: Keith Packard <keithp at keithp.com>
+(cherry picked from commit a6bd5d2e482a5aa84acb3d4932e2a166d8670ef1)
+---
+diff --git a/fb/fbpict.c b/fb/fbpict.c
+index f9f4343..c046bae 100644
+--- a/fb/fbpict.c
++++ b/fb/fbpict.c
+@@ -453,6 +453,7 @@ image_from_pict_18 (PicturePtr pict, Bool has_clip, int *xoff, int *yoff)
+ 	    else if (sp->type == SourcePictTypeConical)
+ 		image = create_conical_gradient_image (gradient);
+ 	}
++	*xoff = *yoff = 0;
+     }
+     
+     if (image)
+--
+cgit v0.8.3-6-g21f6
+From 734a6b9c2150ce38cf120e179cdac9d3c625434e Mon Sep 17 00:00:00 2001
+From: Alan Coopersmith <alan.coopersmith at sun.com>
+Date: Wed, 27 Jan 2010 06:25:04 +0000
+Subject: Avoid segfaults in XF86VidMode GammaRamp functions if randr_crtc is NULL
+
+Fixes crash when xscreensaver tries to use GammaRamp calls to fade out
+http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6915712
+
+Signed-off-by: Alan Coopersmith <alan.coopersmith at sun.com>
+Reviewed-by: Keith Packard <keithp at keithp.com>
+Signed-off-by: Keith Packard <keithp at keithp.com>
+---
+diff --git a/hw/xfree86/common/xf86cmap.c b/hw/xfree86/common/xf86cmap.c
+index 08f557c..edd5ae9 100644
+--- a/hw/xfree86/common/xf86cmap.c
++++ b/hw/xfree86/common/xf86cmap.c
+@@ -1004,12 +1004,14 @@ xf86ChangeGammaRamp(
+ 	xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(pScrn);
+ 	RRCrtcPtr crtc = config->output[config->compat_output]->crtc->randr_crtc;
+ 
+-	if (crtc->gammaSize != size)
+-	    return BadValue;
++	if (crtc) {
++	    if (crtc->gammaSize != size)
++		return BadValue;
+ 
+-	RRCrtcGammaSet(crtc, red, green, blue);
++	    RRCrtcGammaSet(crtc, red, green, blue);
+ 
+-	return Success;
++	    return Success;
++	}
+     }
+ 
+     if(CMapScreenKey == NULL)
+@@ -1077,7 +1079,8 @@ xf86GetGammaRampSize(ScreenPtr pScreen)
+ 	xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(pScrn);
+ 	RRCrtcPtr crtc = config->output[config->compat_output]->crtc->randr_crtc;
+ 
+-	return crtc->gammaSize;
++	if (crtc)
++	    return crtc->gammaSize;
+     }
+ 
+     if(CMapScreenKey == NULL) return 0;
+@@ -1106,17 +1109,19 @@ xf86GetGammaRamp(
+ 	xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(pScrn);
+ 	RRCrtcPtr crtc = config->output[config->compat_output]->crtc->randr_crtc;
+ 
+-	if (crtc->gammaSize < size)
+-	    return BadValue;
++	if (crtc) {
++	    if (crtc->gammaSize < size)
++		return BadValue;
+ 
+-	if (!RRCrtcGammaGet(crtc))
+-	    return BadImplementation;
++	    if (!RRCrtcGammaGet(crtc))
++		return BadImplementation;
+ 
+-	memcpy(red, crtc->gammaRed, size * sizeof(*red));
+-	memcpy(green, crtc->gammaGreen, size * sizeof(*green));
+-	memcpy(blue, crtc->gammaBlue, size * sizeof(*blue));
++	    memcpy(red, crtc->gammaRed, size * sizeof(*red));
++	    memcpy(green, crtc->gammaGreen, size * sizeof(*green));
++	    memcpy(blue, crtc->gammaBlue, size * sizeof(*blue));
+ 
+-	return Success;
++	    return Success;
++	}
+     }
+ 
+     if(CMapScreenKey == NULL) 
+--
+cgit v0.8.3-6-g21f6

Deleted: extra-i686/revert-bug25136.patch
===================================================================
--- extra-i686/revert-bug25136.patch	2010-01-31 11:41:57 UTC (rev 66500)
+++ extra-i686/revert-bug25136.patch	2010-01-31 11:42:14 UTC (rev 66501)
@@ -1,331 +0,0 @@
-From c0de621b42bd69e883e15082c7fd35709d545d55 Mon Sep 17 00:00:00 2001
-From: Aaron Plattner <aplattner at nvidia.com>
-Date: Sun, 29 Nov 2009 20:06:26 +0000
-Subject: Restore ABI by reintroducing the "is_src" paramter to image_from_pict.
-
-Restores old ABI after 196aff9b18381d700fb28027186cce6e68ad587c.
-
-Signed-off-by: Aaron Plattner <aplattner at nvidia.com>
-Tested-by: Julien Cristau <jcristau at debian.org>
-Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
-(cherry picked from commit 155e61a9f0429bf28ce493c0fe7a2d076cb7e137)
----
-diff --git a/fb/fb.h b/fb/fb.h
-index 6c9f8a1..37de71e 100644
---- a/fb/fb.h
-+++ b/fb/fb.h
-@@ -2080,7 +2080,8 @@ fbFillRegionSolid (DrawablePtr	pDrawable,
- 
- extern _X_EXPORT pixman_image_t *
- image_from_pict (PicturePtr pict,
--		 Bool       has_clip);
-+		 Bool       has_clip,
-+		 Bool       is_src);
- extern _X_EXPORT void free_pixman_pict (PicturePtr, pixman_image_t *);
- 
- #endif /* _FB_H_ */
-diff --git a/fb/fbpict.c b/fb/fbpict.c
-index 8057e90..8fdaa58 100644
---- a/fb/fbpict.c
-+++ b/fb/fbpict.c
-@@ -163,9 +163,9 @@ fbComposite (CARD8      op,
-     if (pMask)
- 	miCompositeSourceValidate (pMask, xMask, yMask, width, height);
-     
--    src = image_from_pict (pSrc, TRUE);
--    mask = image_from_pict (pMask, TRUE);
--    dest = image_from_pict (pDst, TRUE);
-+    src = image_from_pict (pSrc, TRUE, TRUE);
-+    mask = image_from_pict (pMask, TRUE, TRUE);
-+    dest = image_from_pict (pDst, TRUE, FALSE);
- 
-     if (src && dest && !(pMask && !mask))
-     {
-@@ -361,7 +361,7 @@ set_image_properties (pixman_image_t *image, PicturePtr pict)
-     
-     if (pict->alphaMap)
-     {
--	pixman_image_t *alpha_map = image_from_pict (pict->alphaMap, TRUE);
-+	pixman_image_t *alpha_map = image_from_pict (pict->alphaMap, TRUE, TRUE);
- 	
- 	pixman_image_set_alpha_map (
- 	    image, alpha_map, pict->alphaOrigin.x, pict->alphaOrigin.y);
-@@ -395,7 +395,8 @@ set_image_properties (pixman_image_t *image, PicturePtr pict)
- 
- pixman_image_t *
- image_from_pict (PicturePtr pict,
--		 Bool has_clip)
-+		 Bool has_clip,
-+		 Bool is_src)
- {
-     pixman_image_t *image = NULL;
- 
-diff --git a/fb/fbtrap.c b/fb/fbtrap.c
-index 830603a..b1e1eff 100644
---- a/fb/fbtrap.c
-+++ b/fb/fbtrap.c
-@@ -40,7 +40,7 @@ fbAddTraps (PicturePtr	pPicture,
- 	    int		ntrap,
- 	    xTrap	*traps)
- {
--    pixman_image_t *image = image_from_pict (pPicture, FALSE);
-+    pixman_image_t *image = image_from_pict (pPicture, FALSE, FALSE);
- 
-     if (!image)
- 	return;
-@@ -56,7 +56,7 @@ fbRasterizeTrapezoid (PicturePtr    pPicture,
- 		      int	    x_off,
- 		      int	    y_off)
- {
--    pixman_image_t *image = image_from_pict (pPicture, FALSE);
-+    pixman_image_t *image = image_from_pict (pPicture, FALSE, FALSE);
- 
-     if (!image)
- 	return;
---
-cgit v0.8.3-6-g21f6
-From 196aff9b18381d700fb28027186cce6e68ad587c Mon Sep 17 00:00:00 2001
-From: Aaron Plattner <aplattner at nvidia.com>
-Date: Tue, 24 Nov 2009 18:21:28 +0000
-Subject: Bug #25136: Revert "Fix clipping when windows are used as sources"
-
-That change causes lib(w)fb to make accelerated driver calls after the driver
-has entered a software fallback.  Most drivers don't expect this, which leads to
-corruption or crashes.  A change to make this code do the copy in software is
-unacceptably slow.
-
-This reverts commit e9aa61e9f0d663d5b34a397b943b4d1df44e873d.
-
-Conflicts:
-
-	configure.ac
-	fb/fbpict.c
-
-Signed-off-by: Aaron Plattner <aplattner at nvidia.com>
-Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
----
-diff --git a/fb/fb.h b/fb/fb.h
-index c35e765..6c9f8a1 100644
---- a/fb/fb.h
-+++ b/fb/fb.h
-@@ -2080,8 +2080,7 @@ fbFillRegionSolid (DrawablePtr	pDrawable,
- 
- extern _X_EXPORT pixman_image_t *
- image_from_pict (PicturePtr pict,
--		 Bool       has_clip,
--		 Bool	    is_src);
-+		 Bool       has_clip);
- extern _X_EXPORT void free_pixman_pict (PicturePtr, pixman_image_t *);
- 
- #endif /* _FB_H_ */
-diff --git a/fb/fbpict.c b/fb/fbpict.c
-index 2fbef15..8057e90 100644
---- a/fb/fbpict.c
-+++ b/fb/fbpict.c
-@@ -163,9 +163,9 @@ fbComposite (CARD8      op,
-     if (pMask)
- 	miCompositeSourceValidate (pMask, xMask, yMask, width, height);
-     
--    src = image_from_pict (pSrc, TRUE, TRUE);
--    mask = image_from_pict (pMask, TRUE, TRUE);
--    dest = image_from_pict (pDst, TRUE, FALSE);
-+    src = image_from_pict (pSrc, TRUE);
-+    mask = image_from_pict (pMask, TRUE);
-+    dest = image_from_pict (pDst, TRUE);
- 
-     if (src && dest && !(pMask && !mask))
-     {
-@@ -268,80 +268,24 @@ create_conical_gradient_image (PictGradient *gradient)
- 	gradient->nstops);
- }
- 
--static DrawablePtr 
--copy_drawable (DrawablePtr pDraw)
--{
--    ScreenPtr pScreen = pDraw->pScreen;
--    PixmapPtr pPixmap;
--    GCPtr pGC;
--    int width, height;
--    ChangeGCVal gcv[2];
--    
--    width = pDraw->width;
--    height = pDraw->height;
--    
--    pPixmap = (*pScreen->CreatePixmap) (pScreen, width, height, pDraw->depth, 0);
--    
--    if (!pPixmap)
--	return NULL;
--    
--    pGC = GetScratchGC (pDraw->depth, pScreen);
--    
--    if (!pGC)
--    {
--	(*pScreen->DestroyPixmap) (pPixmap);
--	return NULL;
--    }
--    
--    /* First fill the pixmap with zeros */
--    gcv[0].val = 0x00000000;
--    gcv[1].val = IncludeInferiors;
--    dixChangeGC (NullClient, pGC, GCBackground | GCSubwindowMode, NULL, gcv);
--    ValidateGC ((DrawablePtr)pPixmap, pGC);
--    miClearDrawable ((DrawablePtr)pPixmap, pGC);
--    
--    /* Then copy the window there */
--    ValidateGC(&pPixmap->drawable, pGC);
--    (* pGC->ops->CopyArea) (pDraw, &pPixmap->drawable, pGC, 0, 0, width, height, 0, 0);
--    
--    FreeScratchGC (pGC);
--    
--    return &pPixmap->drawable;
--}
--
--static void
--destroy_drawable (pixman_image_t *image, void *data)
--{
--    DrawablePtr pDrawable = data;
--    ScreenPtr pScreen = pDrawable->pScreen;
--
--    pScreen->DestroyPixmap ((PixmapPtr)pDrawable);
--}
--
- static pixman_image_t *
- create_bits_picture (PicturePtr pict,
--		     Bool	has_clip,
--		     Bool       is_src)
-+		     Bool       has_clip)
- {
-     FbBits *bits;
-     FbStride stride;
-     int bpp, xoff, yoff;
-     pixman_image_t *image;
--    DrawablePtr drawable;
--
--    if (is_src && pict->pDrawable->type == DRAWABLE_WINDOW)
--	drawable = copy_drawable (pict->pDrawable);
--    else
--	drawable = pict->pDrawable;
-     
--    fbGetDrawable (drawable, bits, stride, bpp, xoff, yoff);
-+    fbGetDrawable (pict->pDrawable, bits, stride, bpp, xoff, yoff);
- 
-     bits = (FbBits*)((CARD8*)bits +
--		     (drawable->y + yoff) * stride * sizeof(FbBits) +
--		     (drawable->x + xoff) * (bpp / 8));
-+		     (pict->pDrawable->y + yoff) * stride * sizeof(FbBits) +
-+		     (pict->pDrawable->x + xoff) * (bpp / 8));
- 
-     image = pixman_image_create_bits (
--	pict->format, drawable->width, drawable->height,
-+	pict->format,
-+	pict->pDrawable->width, pict->pDrawable->height,
- 	(uint32_t *)bits, stride * sizeof (FbStride));
-     
-     
-@@ -359,46 +303,25 @@ create_bits_picture (PicturePtr pict,
- #endif
- #endif
-     
-+    /* pCompositeClip is undefined for source pictures, so
-+     * only set the clip region for pictures with drawables
-+     */
-     if (has_clip)
-     {
--	if (is_src)
--	{
--	    if (pict->clientClipType != CT_NONE)
--	    {
--		pixman_image_set_has_client_clip (image, TRUE);
-+	if (pict->clientClipType != CT_NONE)
-+	    pixman_image_set_has_client_clip (image, TRUE);
- 
--		pixman_region_translate (pict->clientClip,
--					 pict->clipOrigin.x,
--					 pict->clipOrigin.y);
--		
--		pixman_image_set_clip_region (image, pict->clientClip);
-+	pixman_region_translate (pict->pCompositeClip, - pict->pDrawable->x, - pict->pDrawable->y);
- 
--		pixman_region_translate (pict->clientClip,
--					 - pict->clipOrigin.x,
--					 - pict->clipOrigin.y);
--	    }
--	}
--	else
--	{
--	    pixman_region_translate (pict->pCompositeClip,
--				     - pict->pDrawable->x,
--				     - pict->pDrawable->y);
-+	pixman_image_set_clip_region (image, pict->pCompositeClip);
- 
--	    pixman_image_set_clip_region (image, pict->pCompositeClip);
--	    
--	    pixman_region_translate (pict->pCompositeClip,
--				     pict->pDrawable->x,
--				     pict->pDrawable->y);
--	}
-+	pixman_region_translate (pict->pCompositeClip, pict->pDrawable->x, pict->pDrawable->y);
-     }
-     
-     /* Indexed table */
-     if (pict->pFormat->index.devPrivate)
- 	pixman_image_set_indexed (image, pict->pFormat->index.devPrivate);
- 
--    if (drawable != pict->pDrawable)
--	pixman_image_set_destroy_function (image, destroy_drawable, drawable);
--    
-     return image;
- }
- 
-@@ -438,7 +361,7 @@ set_image_properties (pixman_image_t *image, PicturePtr pict)
-     
-     if (pict->alphaMap)
-     {
--	pixman_image_t *alpha_map = image_from_pict (pict->alphaMap, TRUE, TRUE);
-+	pixman_image_t *alpha_map = image_from_pict (pict->alphaMap, TRUE);
- 	
- 	pixman_image_set_alpha_map (
- 	    image, alpha_map, pict->alphaOrigin.x, pict->alphaOrigin.y);
-@@ -472,8 +395,7 @@ set_image_properties (pixman_image_t *image, PicturePtr pict)
- 
- pixman_image_t *
- image_from_pict (PicturePtr pict,
--		 Bool has_clip,
--		 Bool is_src)
-+		 Bool has_clip)
- {
-     pixman_image_t *image = NULL;
- 
-@@ -482,7 +404,7 @@ image_from_pict (PicturePtr pict,
- 
-     if (pict->pDrawable)
-     {
--	image = create_bits_picture (pict, has_clip, is_src);
-+	image = create_bits_picture (pict, has_clip);
-     }
-     else if (pict->pSourcePict)
-     {
-diff --git a/fb/fbtrap.c b/fb/fbtrap.c
-index b1e1eff..830603a 100644
---- a/fb/fbtrap.c
-+++ b/fb/fbtrap.c
-@@ -40,7 +40,7 @@ fbAddTraps (PicturePtr	pPicture,
- 	    int		ntrap,
- 	    xTrap	*traps)
- {
--    pixman_image_t *image = image_from_pict (pPicture, FALSE, FALSE);
-+    pixman_image_t *image = image_from_pict (pPicture, FALSE);
- 
-     if (!image)
- 	return;
-@@ -56,7 +56,7 @@ fbRasterizeTrapezoid (PicturePtr    pPicture,
- 		      int	    x_off,
- 		      int	    y_off)
- {
--    pixman_image_t *image = image_from_pict (pPicture, FALSE, FALSE);
-+    pixman_image_t *image = image_from_pict (pPicture, FALSE);
- 
-     if (!image)
- 	return;
---
-cgit v0.8.3-6-g21f6

Deleted: extra-i686/xserver-1.7.1-nvidia-performance.patch
===================================================================
--- extra-i686/xserver-1.7.1-nvidia-performance.patch	2010-01-31 11:41:57 UTC (rev 66500)
+++ extra-i686/xserver-1.7.1-nvidia-performance.patch	2010-01-31 11:42:14 UTC (rev 66501)
@@ -1,58 +0,0 @@
-This patch speeds up a simple test app that maps a 1x1 ARGB window from 11
-seconds to 0.005 seconds.
-
-This patch needs to be applied after
-http://cvs.fedora.redhat.com/viewvc/rpms/xorg-x11-server/F-12/xserver-1.7.1-window-pictures.patch?revision=1.4&view=markup
-or the server will still be subject to the corruption and crash bugs that
-e9aa61e introduced.
-
- fb/fbpict.c |   27 ++++++++++++++++++++++++++-
- 1 files changed, 26 insertions(+), 1 deletions(-)
-
-diff --git a/fb/fbpict.c b/fb/fbpict.c
-index 5c96427..5799e37 100644
---- a/fb/fbpict.c
-+++ b/fb/fbpict.c
-@@ -317,6 +317,27 @@ destroy_drawable (pixman_image_t *image, void *data)
-     pScreen->DestroyPixmap ((PixmapPtr)pDrawable);
- }
- 
-+/*
-+ * Returns TRUE when the specified window is fully contained within its bounding
-+ * pixmap.
-+ */
-+static Bool
-+window_is_fully_contained(WindowPtr pWin)
-+{
-+    PixmapPtr pBoundingPix = (*pWin->drawable.pScreen->GetWindowPixmap)(pWin);
-+    int x = pWin->drawable.x, y = pWin->drawable.y;
-+
-+#ifdef COMPOSITE
-+    /* Translate from screen coordinates to pixmap coordinates */
-+    x -= pBoundingPix->screen_x;
-+    y -= pBoundingPix->screen_y;
-+#endif
-+
-+    return x >= 0 && y >= 0 &&
-+      x + pWin->drawable.width <= pBoundingPix->drawable.width &&
-+      y + pWin->drawable.height <= pBoundingPix->drawable.height;
-+}
-+
- static pixman_image_t *
- create_bits_picture (PicturePtr pict,
-             Bool   has_clip,
-@@ -328,7 +349,11 @@ create_bits_picture (PicturePtr pict,
-     pixman_image_t *image;
-     DrawablePtr drawable;
- 
--    if (is_src && pict->pDrawable->type == DRAWABLE_WINDOW)
-+    /* Copy the source window if part of it lies outside its bounding pixmap to
-+     * avoid reading outside that pixmap' bounds, since Pixman doesn't clip the
-+     * source image per pixel */
-+    if (is_src && pict->pDrawable->type == DRAWABLE_WINDOW &&
-+       !window_is_fully_contained((WindowPtr)pict->pDrawable))
-	drawable = copy_drawable (pict->pDrawable);
-    else
-	drawable = pict->pDrawable;
--- 
-1.6.3.3

Deleted: extra-i686/xserver-1.7.1-window-pictures.patch
===================================================================
--- extra-i686/xserver-1.7.1-window-pictures.patch	2010-01-31 11:41:57 UTC (rev 66500)
+++ extra-i686/xserver-1.7.1-window-pictures.patch	2010-01-31 11:42:14 UTC (rev 66501)
@@ -1,58 +0,0 @@
-From 9f493b930ef99253ba7e37dc280daff6738b6401 Mon Sep 17 00:00:00 2001
-From: Soren Sandmann Pedersen <sandmann at redhat.com>
-Date: Fri, 6 Nov 2009 10:29:49 +1000
-Subject: [PATCH] [PATCH] fb: Use fb functions to copy the window to a temporary pixmap.
-
-Previously, it would use the screen ops, but this meant that the new
-pixmap would be created by the DDX and then immediately accessed by
-software fallbacks without the DDX having a chance to map the drawable
-correctly.
-
-Instead, use fbCreatePixmap() and fbCopyArea() directly, without going
-through the DDX hooks.
-
-airlied: also remove the miClearDrawable call, since we are going
-to copy over the whole drawable, and this also reenters the wrap
-chain which confuses EXA.
----
- fb/fbpict.c |    7 +++----
- 1 files changed, 3 insertions(+), 4 deletions(-)
-
-diff --git a/fb/fbpict.c b/fb/fbpict.c
-index 2fbef15..5c96427 100644
---- a/fb/fbpict.c
-+++ b/fb/fbpict.c
-@@ -280,7 +280,7 @@ copy_drawable (DrawablePtr pDraw)
-     width = pDraw->width;
-     height = pDraw->height;
-     
--    pPixmap = (*pScreen->CreatePixmap) (pScreen, width, height, pDraw->depth, 0);
-+    pPixmap = fbCreatePixmap (pScreen, width, height, pDraw->depth, 0);
-     
-     if (!pPixmap)
- 	return NULL;
-@@ -289,7 +289,7 @@ copy_drawable (DrawablePtr pDraw)
-     
-     if (!pGC)
-     {
--	(*pScreen->DestroyPixmap) (pPixmap);
-+	fbDestroyPixmap (pPixmap);
- 	return NULL;
-     }
-     
-@@ -298,11 +298,10 @@ copy_drawable (DrawablePtr pDraw)
-     gcv[1].val = IncludeInferiors;
-     dixChangeGC (NullClient, pGC, GCBackground | GCSubwindowMode, NULL, gcv);
-     ValidateGC ((DrawablePtr)pPixmap, pGC);
--    miClearDrawable ((DrawablePtr)pPixmap, pGC);
-     
-     /* Then copy the window there */
-     ValidateGC(&pPixmap->drawable, pGC);
--    (* pGC->ops->CopyArea) (pDraw, &pPixmap->drawable, pGC, 0, 0, width, height, 0, 0);
-+    fbCopyArea (pDraw, &pPixmap->drawable, pGC, 0, 0, width, height, 0, 0);
-     
-     FreeScratchGC (pGC);
-     
--- 
-1.6.5.2
-




More information about the arch-commits mailing list