rpms/xorg-x11-server/F-12 xserver-1.7.0-exa-fix-mixed.patch, NONE, 1.1 xorg-x11-server.spec, 1.495, 1.496

Ben Skeggs bskeggs at fedoraproject.org
Sat Oct 24 00:58:34 UTC 2009


Author: bskeggs

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

Modified Files:
	xorg-x11-server.spec 
Added Files:
	xserver-1.7.0-exa-fix-mixed.patch 
Log Message:
* Sat Oct 24 2009 Ben Skeggs <bskegg at redhat.com> 1.7.0-5
- Fix unbalancing of Prepare/FinishAccess in EXA mixed pixmaps (rh#528005)



xserver-1.7.0-exa-fix-mixed.patch:
 exa_migration_mixed.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

--- NEW FILE xserver-1.7.0-exa-fix-mixed.patch ---
>From 7efbe71629d31d79ab95cc1dae93f0fa742e9533 Mon Sep 17 00:00:00 2001
From: Ben Skeggs <bskeggs at redhat.com>
Date: Thu, 22 Oct 2009 11:31:22 +1000
Subject: [PATCH] EXA: fix mixed-pixmaps issue where we could do accel with pixmap mapped
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

The problem occurs in the following situation:

1. Create Pixmap
2. Software fallback on pixmap: pExaPixmap->pDamage created
3. Accel to pixmap: driver pixmap created, exaPixmapIsOffscreen() now true
4. Software fallback on pixmap
4.1: PrepareAccess() from driver succeeds, so no DFS to system memory copy
4.2: Software rendering...
4.3: (pExaPixmap->pDamage && exaPixmapIsOffscreen()) is true, so we try
     to (incorrectly) UTS the data back to the driver pixmap, when we
     should just call the driver's FinishAccess() hook.
4.4: fail

The patch adds an additional check on pExaPixmap->offscreen, which should
(for the cases exaPixmapIsOffscreen() will return true) only be FALSE
when we haven't used PrepareAccess() on the pixmap.

Signed-off-by: Ben Skeggs <bskeggs at redhat.com>
Acked-By: Michel Dänzer <michel at daenzer.net>
---
 exa/exa_migration_mixed.c |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/exa/exa_migration_mixed.c b/exa/exa_migration_mixed.c
index f42c9c2..52b18b4 100644
--- a/exa/exa_migration_mixed.c
+++ b/exa/exa_migration_mixed.c
@@ -202,7 +202,8 @@ void exaFinishAccess_mixed(PixmapPtr pPixmap, int index)
 {
     ExaPixmapPriv(pPixmap);
 
-    if (pExaPixmap->pDamage && exaPixmapIsOffscreen(pPixmap)) {
+    if (pExaPixmap->pDamage && exaPixmapIsOffscreen(pPixmap) &&
+	!pExaPixmap->offscreen) {
 	DamageRegionProcessPending(&pPixmap->drawable);
 	exaMoveInPixmap_mixed(pPixmap);
     }
-- 
1.6.5.rc2



Index: xorg-x11-server.spec
===================================================================
RCS file: /cvs/pkgs/rpms/xorg-x11-server/F-12/xorg-x11-server.spec,v
retrieving revision 1.495
retrieving revision 1.496
diff -u -p -r1.495 -r1.496
--- xorg-x11-server.spec	16 Oct 2009 00:45:49 -0000	1.495
+++ xorg-x11-server.spec	24 Oct 2009 00:58:32 -0000	1.496
@@ -19,7 +19,7 @@
 Summary:   X.Org X11 X server
 Name:      xorg-x11-server
 Version:   1.7.0
-Release:   4%{dist}
+Release:   5%{dist}
 URL:       http://www.x.org
 License:   MIT
 Group:     User Interface/X
@@ -76,6 +76,7 @@ Patch6045: xserver-1.7.0-randr-gamma-res
 
 Patch6046: xserver-1.7.0-exa-looping-forever-is-evil.patch
 Patch6047: xserver-1.7.0-glx-versioning.patch
+Patch6048: xserver-1.7.0-exa-fix-mixed.patch
 
 %define moduledir	%{_libdir}/xorg/modules
 %define drimoduledir	%{_libdir}/dri
@@ -504,6 +505,9 @@ rm -rf $RPM_BUILD_ROOT
 %{xserver_source_dir}
 
 %changelog
+* Sat Oct 24 2009 Ben Skeggs <bskegg at redhat.com> 1.7.0-5
+- Fix unbalancing of Prepare/FinishAccess in EXA mixed pixmaps (rh#528005)
+
 * Fri Oct 16 2009 Dave Airlie <airlied at redhat.com> 1.7.0-4
 - update GLX for 1.4 version reporting
 




More information about the scm-commits mailing list