diff options
author | Kevin Brace <kevinbrace@gmx.com> | 2018-07-24 13:39:57 -0700 |
---|---|---|
committer | Kevin Brace <kevinbrace@gmx.com> | 2018-07-24 13:39:57 -0700 |
commit | 23012b520e16fe2687e50c635e6c0a1f9d740c4e (patch) | |
tree | 9cad47092d054c1ab39a4b817e827e51105dd238 | |
parent | fbbbcc0d33eb95869bcd0df26f3351f1531711db (diff) |
Separate EXA and XAA initialization
Starting the process of separating legacy XAA and newer EXA
initialization code.
Signed-off-by: Kevin Brace <kevinbrace@gmx.com>
-rw-r--r-- | src/r128.h | 3 | ||||
-rw-r--r-- | src/r128_accel.c | 44 | ||||
-rw-r--r-- | src/r128_driver.c | 51 | ||||
-rw-r--r-- | src/r128_exa.c | 31 |
4 files changed, 74 insertions, 55 deletions
@@ -514,7 +514,7 @@ extern void R128EngineFlush(ScrnInfoPtr pScrn); extern unsigned R128INPLL(ScrnInfoPtr pScrn, int addr); extern void R128WaitForVerticalSync(ScrnInfoPtr pScrn); -extern Bool R128AccelInit(ScreenPtr pScreen); +extern Bool R128XAAAccelInit(ScreenPtr pScreen); extern void R128EngineInit(ScrnInfoPtr pScrn); extern Bool R128CursorInit(ScreenPtr pScreen); @@ -601,6 +601,7 @@ extern int R128CCEStop(ScrnInfoPtr pScrn); extern void R128CopySwap(uint8_t *dst, uint8_t *src, unsigned int size, int swap); #ifdef USE_EXA +extern Bool R128EXAAccelInit(ScreenPtr pScreen); extern Bool R128EXAInit(ScreenPtr pScreen); extern Bool R128GetDatatypeBpp(int bpp, uint32_t *type); extern Bool R128GetPixmapOffsetPitch(PixmapPtr pPix, uint32_t *pitch_offset); diff --git a/src/r128_accel.c b/src/r128_accel.c index 72cc443..bfadaf6 100644 --- a/src/r128_accel.c +++ b/src/r128_accel.c @@ -1901,55 +1901,25 @@ void R128CopySwap(uint8_t *dst, uint8_t *src, unsigned int size, int swap) /* Initialize XAA for supported acceleration and also initialize the graphics hardware for acceleration. */ -Bool R128AccelInit(ScreenPtr pScreen) +#ifdef HAVE_XAA_H +Bool +R128XAAAccelInit(ScreenPtr pScreen) { ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); R128InfoPtr info = R128PTR(pScrn); - -#ifdef USE_EXA - if (info->useEXA) { - int errmaj = 0, errmin = 0; - - info->exaReq.majorversion = EXA_VERSION_MAJOR; - info->exaReq.minorversion = EXA_VERSION_MINOR; - - xf86DrvMsg(pScrn->scrnIndex,X_INFO,"Loading EXA module...\n"); - if (!LoadSubModule(pScrn->module, "exa", NULL, NULL, NULL, &info->exaReq, &errmaj, &errmin)) { - LoaderErrorMsg(NULL, "exa", errmaj, errmin); - return FALSE; - } - - /* Don't init EXA here because it'll be taken care of in mm init */ - xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Allocating EXA driver...\n"); - info->ExaDriver = exaDriverAlloc(); - if (!info->ExaDriver) { - xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Could not allocate EXA driver...\n"); - info->accelOn = FALSE; - } - - return TRUE; - } -#endif - -#ifndef HAVE_XAA_H - return FALSE; -#else XAAInfoRecPtr a; - if (!info->useEXA) { - if (!xf86LoadSubModule(pScrn, "xaa")) return FALSE; - } - + if (!xf86LoadSubModule(pScrn, "xaa")) return FALSE; if (!(a = info->accel = XAACreateInfoRec())) return FALSE; #ifdef R128DRI if (info->directRenderingEnabled) - R128CCEAccelInit(pScrn, a); + R128CCEAccelInit(pScrn, a); else #endif - R128MMIOAccelInit(pScrn, a); + R128MMIOAccelInit(pScrn, a); R128EngineInit(pScrn); return XAAInit(pScreen, a); -#endif } +#endif diff --git a/src/r128_driver.c b/src/r128_driver.c index 4cc95e6..9725ee2 100644 --- a/src/r128_driver.c +++ b/src/r128_driver.c @@ -1565,24 +1565,41 @@ Bool R128VerboseInitEXA(ScreenPtr pScreen) } #endif -void R128VerboseInitAccel(Bool noAccel, ScreenPtr pScreen) +void +R128AccelInit(Bool noAccel, ScreenPtr pScreen) { ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); R128InfoPtr info = R128PTR(pScrn); + /* Initially, assume that acceleration is off. */ + info->accelOn = FALSE; + if (!noAccel) { - if (R128AccelInit(pScreen)) { - xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Acceleration enabled\n"); - info->accelOn = TRUE; - } else { - xf86DrvMsg(pScrn->scrnIndex, X_ERROR, - "Acceleration initialization failed\n"); - xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Acceleration disabled\n"); - info->accelOn = FALSE; - } - } else { - xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Acceleration disabled\n"); - info->accelOn = FALSE; + if (info->useEXA) { +#ifdef USE_EXA + if (R128EXAAccelInit(pScreen)) { + info->accelOn = TRUE; + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "EXA acceleration enabled.\n"); + } +#endif + } + + if ((!info->useEXA) || + ((info->useEXA) && (!info->accelOn))) { +#ifdef HAVE_XAA_H + if (R128XAAAccelInit(pScreen)) { + info->accelOn = TRUE; + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "XAA acceleration enabled.\n"); + } +#endif + } + + if (!info->accelOn) { + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "Acceleration disabled.\n"); + } } } @@ -1826,7 +1843,7 @@ Bool R128ScreenInit(SCREEN_INIT_ARGS_DECL) width, height); } - R128VerboseInitAccel(noAccel, pScreen); + R128AccelInit(noAccel, pScreen); } } #ifdef USE_EXA @@ -1834,7 +1851,7 @@ Bool R128ScreenInit(SCREEN_INIT_ARGS_DECL) xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Filling in EXA memory info\n"); - R128VerboseInitAccel(noAccel, pScreen); + R128AccelInit(noAccel, pScreen); info->ExaDriver->offScreenBase = pScrn->virtualY * width_bytes; xf86DrvMsg(pScrn->scrnIndex, X_INFO, @@ -1999,7 +2016,7 @@ Bool R128ScreenInit(SCREEN_INIT_ARGS_DECL) width, height); } - R128VerboseInitAccel(noAccel, pScreen); + R128AccelInit(noAccel, pScreen); } } #ifdef USE_EXA @@ -2007,7 +2024,7 @@ Bool R128ScreenInit(SCREEN_INIT_ARGS_DECL) xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Filling in EXA memory info\n"); - R128VerboseInitAccel(noAccel, pScreen); + R128AccelInit(noAccel, pScreen); info->ExaDriver->offScreenBase = pScrn->virtualY * width_bytes; xf86DrvMsg(pScrn->scrnIndex, X_INFO, diff --git a/src/r128_exa.c b/src/r128_exa.c index b7501ac..425fd64 100644 --- a/src/r128_exa.c +++ b/src/r128_exa.c @@ -394,6 +394,37 @@ R128CCESync(ScreenPtr pScreen, int marker) #endif Bool +R128EXAAccelInit(ScreenPtr pScreen) +{ + ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); + R128InfoPtr info = R128PTR(pScrn); + int errmaj = 0, errmin = 0; + + info->exaReq.majorversion = EXA_VERSION_MAJOR; + info->exaReq.minorversion = EXA_VERSION_MINOR; + + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "Loading EXA module...\n"); + if (!LoadSubModule(pScrn->module, "exa", NULL, NULL, NULL, + &info->exaReq, &errmaj, &errmin)) { + LoaderErrorMsg(NULL, "exa", errmaj, errmin); + return FALSE; + } + + /* Don't init EXA here because it'll be taken care of in mm init */ + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "Allocating EXA driver...\n"); + info->ExaDriver = exaDriverAlloc(); + if (!info->ExaDriver) { + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "Could not allocate EXA driver...\n"); + info->accelOn = FALSE; + } + + return TRUE; +} + +Bool R128EXAInit(ScreenPtr pScreen) { ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); |