xf86-video-intel: src/i830_driver.c uxa/uxa.c uxa/uxa.h

Chris Wilson ickle at kemper.freedesktop.org
Mon Jun 7 10:23:38 PDT 2010


 src/i830_driver.c |   12 ++++++------
 uxa/uxa.c         |   11 ++++++++---
 uxa/uxa.h         |    1 +
 3 files changed, 15 insertions(+), 9 deletions(-)

New commits:
commit e6acbc763229fd5b5b2cc1d65136404d02ac4655
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Mon Jun 7 18:04:51 2010 +0100

    uxa: Setup acceleration functions prior to the damage layer
    
    We need to install the acceleration functions so that they are wrapped
    by the Damage layer. This fixes the corruption under a compositing WM
    introduced in commit 8700673157fdd3a87ad5150f2f30823261fec519.
    
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
    Reported-and-tested-by: Arkadiusz Miśkiewicz <arekm at maven.pl>

diff --git a/src/i830_driver.c b/src/i830_driver.c
index 39585d3..a82ad0b 100644
--- a/src/i830_driver.c
+++ b/src/i830_driver.c
@@ -1221,11 +1221,6 @@ I830ScreenInit(int scrnIndex, ScreenPtr screen, int argc, char **argv)
 
 	xf86SetBlackWhitePixels(screen);
 
-	miInitializeBackingStore(screen);
-	xf86SetBackingStore(screen);
-	xf86SetSilkenMouse(screen);
-	miDCInitialize(screen, xf86GetPointerScreenFuncs());
-
 	if (!I830AccelInit(screen)) {
 		xf86DrvMsg(scrn->scrnIndex, X_ERROR,
 			   "Hardware acceleration initialization failed\n");
@@ -1240,6 +1235,11 @@ I830ScreenInit(int scrnIndex, ScreenPtr screen, int argc, char **argv)
 	} else
 		intel->batch_flush_notify = i830_batch_flush_notify;
 
+	miInitializeBackingStore(screen);
+	xf86SetBackingStore(screen);
+	xf86SetSilkenMouse(screen);
+	miDCInitialize(screen, xf86GetPointerScreenFuncs());
+
 	xf86DrvMsg(scrn->scrnIndex, X_INFO, "Initializing HW Cursor\n");
 	if (!xf86_cursors_init(screen, I810_CURSOR_X, I810_CURSOR_Y,
 			       (HARDWARE_CURSOR_TRUECOLOR_AT_8BPP |
@@ -1325,7 +1325,7 @@ I830ScreenInit(int scrnIndex, ScreenPtr screen, int argc, char **argv)
 
 	intel->suspended = FALSE;
 
-	return TRUE;
+	return uxa_resources_init(screen);
 }
 
 static void i830AdjustFrame(int scrnIndex, int x, int y, int flags)
diff --git a/uxa/uxa.c b/uxa/uxa.c
index cef480f..8689933 100644
--- a/uxa/uxa.c
+++ b/uxa/uxa.c
@@ -561,9 +561,6 @@ Bool uxa_driver_init(ScreenPtr screen, uxa_driver_t * uxa_driver)
 	ShmRegisterFuncs(screen, &uxa_shm_funcs);
 #endif
 
-	if (!uxa_glyphs_init(screen))
-		return FALSE;
-
 	LogMessage(X_INFO,
 		   "UXA(%d): Driver registered support for the following"
 		   " operations:\n", screen->myNum);
@@ -584,6 +581,14 @@ Bool uxa_driver_init(ScreenPtr screen, uxa_driver_t * uxa_driver)
 	return TRUE;
 }
 
+Bool uxa_resources_init(ScreenPtr screen)
+{
+	if (!uxa_glyphs_init(screen))
+		return FALSE;
+
+	return TRUE;
+}
+
 /**
  * uxa_driver_fini tears down UXA on a given screen.
  *
diff --git a/uxa/uxa.h b/uxa/uxa.h
index cb08665..e001c53 100644
--- a/uxa/uxa.h
+++ b/uxa/uxa.h
@@ -558,6 +558,7 @@ typedef struct _UxaDriver {
 uxa_driver_t *uxa_driver_alloc(void);
 
 Bool uxa_driver_init(ScreenPtr screen, uxa_driver_t * uxa_driver);
+Bool uxa_resources_init(ScreenPtr screen);
 
 void uxa_driver_fini(ScreenPtr pScreen);
 


More information about the xorg-commit mailing list