diff options
Diffstat (limited to 'src/videocore.c')
-rw-r--r-- | src/videocore.c | 35 |
1 files changed, 32 insertions, 3 deletions
diff --git a/src/videocore.c b/src/videocore.c index 22a86df..f0dac8d 100644 --- a/src/videocore.c +++ b/src/videocore.c @@ -1,6 +1,7 @@ -/* +/* vim: set noet sw=8 sts=8 ts=8 cino=:0,t0,(0 : * Authors: Alan Hourihane, <alanh@fairlite.demon.co.uk> - * Michel Dänzer, <michel@tungstengraphics.com> + * Michel Dänzer, <michel@tungstengraphics.com> + * Will Thompson <will.thompson@collabora.co.uk> */ #ifdef HAVE_CONFIG_H @@ -38,6 +39,7 @@ #endif #include "videocore.h" +#include "videocore-exa.h" #include "videocore-debug.h" Bool videoCoreDebug = 0; @@ -174,6 +176,9 @@ struct _VideoCoreRec { EntityInfoPtr pEnt; OptionInfoPtr Options; + + /* EXA stuff */ + VideoCoreExaPtr vcExa; }; static Bool @@ -195,6 +200,12 @@ FBDevFreeRec(ScrnInfoPtr pScrn) pScrn->driverPrivate = NULL; } +VideoCoreExaPtr +VideoCoreGetExa(VideoCorePtr vc) +{ + return vc->vcExa; +} + /* -------------------------------------------------------------------- */ static const OptionInfoRec * @@ -529,7 +540,8 @@ FBDevPreInit(ScrnInfoPtr pScrn, int flags) "unrecognised fbdev hardware type (%d)\n", type); return FALSE; } - if (xf86LoadSubModule(pScrn, "fb") == NULL) { + if (xf86LoadSubModule(pScrn, "fb") == NULL || + xf86LoadSubModule(pScrn, "exa") == NULL) { FBDevFreeRec(pScrn); return FALSE; } @@ -538,6 +550,15 @@ FBDevPreInit(ScrnInfoPtr pScrn, int flags) return TRUE; } +static void +VideoCoreAccelInit(ScreenPtr pScreen) +{ + ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + VideoCorePtr fPtr = VIDEOCOREPTR(pScrn); + + fPtr->vcExa = VideoCoreExaInit(pScreen); +} + static Bool FBDevScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) { @@ -692,6 +713,9 @@ FBDevScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) "Render extension initialisation failed\n"); xf86SetBlackWhitePixels(pScreen); + + VideoCoreAccelInit(pScreen); + miInitializeBackingStore(pScreen); xf86SetBackingStore(pScreen); @@ -770,6 +794,11 @@ FBDevCloseScreen(int scrnIndex, ScreenPtr pScreen) fbdevHWUnmapVidmem(pScrn); pScrn->vtSema = FALSE; + if (fPtr->vcExa) { + /* FIXME: VideoCoreExaCloseScreen() ? */ + fPtr->vcExa = NULL; + } + pScreen->CreateScreenResources = fPtr->CreateScreenResources; pScreen->CloseScreen = fPtr->CloseScreen; return (*pScreen->CloseScreen)(scrnIndex, pScreen); |