diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2010-06-07 18:04:51 +0100 |
---|---|---|
committer | Owain G. Ainsworth <oga@openbsd.org> | 2010-06-07 21:14:25 +0100 |
commit | fcdd53c6c130bf29cfd92309672c1fed3ec048f6 (patch) | |
tree | 3f36a05621ef7e6dd3e58edb01d6a15a8c803dae | |
parent | 8e57056513f147d22d3f99b84284f38f2b1dec32 (diff) |
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@chris-wilson.co.uk>
Reported-and-tested-by: Arkadiusz MiĆkiewicz <arekm@maven.pl>
(cherry picked from commit e6acbc763229fd5b5b2cc1d65136404d02ac4655)
Signed-off-by: Owain G. Ainsworth <oga@openbsd.org>
-rw-r--r-- | src/i830_driver.c | 12 | ||||
-rw-r--r-- | uxa/uxa.c | 11 | ||||
-rw-r--r-- | uxa/uxa.h | 1 |
3 files changed, 15 insertions, 9 deletions
diff --git a/src/i830_driver.c b/src/i830_driver.c index e5d6e69f..40ca89f6 100644 --- a/src/i830_driver.c +++ b/src/i830_driver.c @@ -2682,11 +2682,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"); @@ -2701,6 +2696,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 (!I830CursorInit(screen)) xf86DrvMsg(scrn->scrnIndex, X_ERROR, @@ -2779,7 +2779,7 @@ I830ScreenInit(int scrnIndex, ScreenPtr screen, int argc, char **argv) intel->closing = FALSE; intel->suspended = FALSE; - return TRUE; + return uxa_resources_init(screen); } static void i830AdjustFrame(int scrnIndex, int x, int y, int flags) @@ -552,9 +552,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); @@ -575,6 +572,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. * @@ -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); |