From f01787fa9135f444622d681773195b35202024fc2bf185f8b151f5cb6437fc4a Mon Sep 17 00:00:00 2001 From: OBS User unknown Date: Sat, 8 Nov 2008 19:32:41 +0000 Subject: [PATCH] OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/xorg-x11-server?expand=0&rev=105 --- XAA_pixmap_sync.diff | 14 --------- commit-59f9fb4b8.diff | 70 +++++++++++++++++++++++++++++++++++++++++ xorg-x11-server.changes | 8 +++++ xorg-x11-server.spec | 9 ++++-- 4 files changed, 85 insertions(+), 16 deletions(-) delete mode 100644 XAA_pixmap_sync.diff create mode 100644 commit-59f9fb4b8.diff diff --git a/XAA_pixmap_sync.diff b/XAA_pixmap_sync.diff deleted file mode 100644 index 581d9db..0000000 --- a/XAA_pixmap_sync.diff +++ /dev/null @@ -1,14 +0,0 @@ -diff --git a/hw/xfree86/xaa/xaawrap.h b/hw/xfree86/xaa/xaawrap.h -index 38c97d7..1799d8e 100644 ---- a/hw/xfree86/xaa/xaawrap.h -+++ b/hw/xfree86/xaa/xaawrap.h -@@ -48,7 +48,8 @@ - XAAPixmapPtr pixPriv = XAA_GET_PIXMAP_PRIVATE((PixmapPtr)(pDraw));\ - GCFuncs *oldFuncs = pGC->funcs;\ - pGC->funcs = pGCPriv->wrapFuncs;\ -- pGC->ops = pGCPriv->wrapOps -+ pGC->ops = pGCPriv->wrapOps; \ -+ SYNC_CHECK(pGC) - - - #define XAA_PIXMAP_OP_EPILOGUE(pGC)\ diff --git a/commit-59f9fb4b8.diff b/commit-59f9fb4b8.diff new file mode 100644 index 0000000..5dfa35d --- /dev/null +++ b/commit-59f9fb4b8.diff @@ -0,0 +1,70 @@ +commit 59f9fb4b8c031df69b3592a26b77e744ff4a556e +Author: Luc Verhaegen +Date: Fri Nov 7 19:11:11 2008 +0100 + + XAA PixmapOps: Sync before accessing unwrapped callbacks. + + When using any XAAPixmapOps, we call into unknown but freshly + unwrapped callbacks (like fb ones). Unlike the XAA*Fallback calls, + we did so without syncing first, exposing us to all kinds of + synchronisation issues. + + I believe that the rendering errors appeared now because *PaintWindow + vanished (e4d11e58), and we just use miPaintWindow instead. This + takes a less direct route to the hw and ends up at + PolyFillRectPixmap, which very often left drawing artifacts. + + We now sync accordingly, and no longer get the rendering artifacts i + was methodically reproducing on radeonhd, radeon, unichrome... + + Also, in order to allow driver authors to remove extensive syncing + or flushing to hide this issue, create XAA_VERSION_ defines, put + them in xaa.h and bump the patchlevel. + + (novell bug #435791) + +diff --git a/hw/xfree86/xaa/xaa.h b/hw/xfree86/xaa/xaa.h +index 1dc7ed2..d6ccc31 100644 +--- a/hw/xfree86/xaa/xaa.h ++++ b/hw/xfree86/xaa/xaa.h +@@ -2,6 +2,10 @@ + #ifndef _XAA_H + #define _XAA_H + ++#define XAA_VERSION_MAJOR 1 ++#define XAA_VERSION_MINOR 2 ++#define XAA_VERSION_RELEASE 1 ++ + /* + + ******** OPERATION SPECIFIC FLAGS ********* +diff --git a/hw/xfree86/xaa/xaaInitAccel.c b/hw/xfree86/xaa/xaaInitAccel.c +index 53795f0..0672bcf 100644 +--- a/hw/xfree86/xaa/xaaInitAccel.c ++++ b/hw/xfree86/xaa/xaaInitAccel.c +@@ -100,7 +100,9 @@ static XF86ModuleVersionInfo xaaVersRec = + MODINFOSTRING1, + MODINFOSTRING2, + XORG_VERSION_CURRENT, +- 1, 2, 0, ++ XAA_VERSION_MAJOR, ++ XAA_VERSION_MINOR, ++ XAA_VERSION_RELEASE, + ABI_CLASS_VIDEODRV, /* requires the video driver ABI */ + ABI_VIDEODRV_VERSION, + MOD_CLASS_NONE, +diff --git a/hw/xfree86/xaa/xaawrap.h b/hw/xfree86/xaa/xaawrap.h +index 38c97d7..857dbc3 100644 +--- a/hw/xfree86/xaa/xaawrap.h ++++ b/hw/xfree86/xaa/xaawrap.h +@@ -48,8 +48,8 @@ + XAAPixmapPtr pixPriv = XAA_GET_PIXMAP_PRIVATE((PixmapPtr)(pDraw));\ + GCFuncs *oldFuncs = pGC->funcs;\ + pGC->funcs = pGCPriv->wrapFuncs;\ +- pGC->ops = pGCPriv->wrapOps +- ++ pGC->ops = pGCPriv->wrapOps; \ ++ SYNC_CHECK(pGC) + + #define XAA_PIXMAP_OP_EPILOGUE(pGC)\ + pGCPriv->wrapOps = pGC->ops;\ diff --git a/xorg-x11-server.changes b/xorg-x11-server.changes index c680f54..8835718 100644 --- a/xorg-x11-server.changes +++ b/xorg-x11-server.changes @@ -1,3 +1,11 @@ +------------------------------------------------------------------- +Sat Nov 8 05:22:55 CET 2008 - sndirsch@suse.de + +- commit-59f9fb4b8.diff + * XAA PixmapOps: Sync before accessing unwrapped callbacks. + (bnc #435791) +- obsoletes XAA_pixmap_sync.diff + ------------------------------------------------------------------- Fri Nov 7 15:04:01 CET 2008 - sndirsch@suse.de diff --git a/xorg-x11-server.spec b/xorg-x11-server.spec index e65a564..57c42fc 100644 --- a/xorg-x11-server.spec +++ b/xorg-x11-server.spec @@ -29,7 +29,7 @@ BuildRequires: libjpeg-devel Url: http://xorg.freedesktop.org/ %define EXPERIMENTAL 0 Version: 7.4 -Release: 13 +Release: 14 License: X11/MIT BuildRoot: %{_tmppath}/%{name}-%{version}-build Group: System/X11/Servers/XF86_4 @@ -101,7 +101,7 @@ Patch120: dga_cleanup.diff Patch121: miPointerUpdate-crashfix.diff Patch122: unplugged_monitor_crashfix.diff Patch123: vidmode-sig11.diff -Patch124: XAA_pixmap_sync.diff +Patch124: commit-59f9fb4b8.diff %description This package contains the X.Org Server. @@ -535,6 +535,11 @@ exit 0 %endif %changelog +* Sat Nov 08 2008 sndirsch@suse.de +- commit-59f9fb4b8.diff + * XAA PixmapOps: Sync before accessing unwrapped callbacks. + (bnc #435791) +- obsoletes XAA_pixmap_sync.diff * Fri Nov 07 2008 sndirsch@suse.de - XAA_pixmap_sync.diff * By adding a line with SYNC_CHECK to the XAA_PIXMAP_OP_PROLOGUE