diff options
author | Will Thompson <will@willthompson.co.uk> | 2012-05-01 20:07:49 +0100 |
---|---|---|
committer | Will Thompson <will@willthompson.co.uk> | 2012-05-04 11:44:22 +0100 |
commit | f097f82eae3a93e644ca9570ff97dc7543d16651 (patch) | |
tree | 5265f4d5dbfadc8d208f24df0b7e3d1ba5e8a446 | |
parent | 65d48c9a0362c00537cd26668b68334c3ab0e769 (diff) |
Remove ShadowFB and Rotate options
-rw-r--r-- | src/videocore.c | 214 |
1 files changed, 3 insertions, 211 deletions
diff --git a/src/videocore.c b/src/videocore.c index 2738978..40aa5a7 100644 --- a/src/videocore.c +++ b/src/videocore.c @@ -56,9 +56,6 @@ static Bool FBDevPreInit(ScrnInfoPtr pScrn, int flags); static Bool FBDevScreenInit(int Index, ScreenPtr pScreen, int argc, char **argv); static Bool FBDevCloseScreen(int scrnIndex, ScreenPtr pScreen); -static void * FBDevWindowLinear(ScreenPtr pScreen, CARD32 row, CARD32 offset, int mode, - CARD32 *size, void *closure); -static void FBDevPointerMoved(int index, int x, int y); static Bool FBDevDGAInit(ScrnInfoPtr pScrn, ScreenPtr pScreen); static Bool FBDevDriverFunc(ScrnInfoPtr pScrn, xorgDriverFuncOp op, pointer ptr); @@ -117,15 +114,11 @@ static SymTabRec FBDevChipsets[] = { /* Supported options */ typedef enum { - OPTION_SHADOW_FB, - OPTION_ROTATE, OPTION_FBDEV, OPTION_DEBUG } FBDevOpts; static const OptionInfoRec FBDevOptions[] = { - { OPTION_SHADOW_FB, "ShadowFB", OPTV_BOOLEAN, {0}, FALSE }, - { OPTION_ROTATE, "Rotate", OPTV_STRING, {0}, FALSE }, { OPTION_FBDEV, "fbdev", OPTV_STRING, {0}, FALSE }, { OPTION_DEBUG, "debug", OPTV_BOOLEAN, {0}, FALSE }, { -1, NULL, OPTV_NONE, {0}, FALSE } @@ -178,12 +171,8 @@ struct _VideoCoreRec { unsigned char* fbmem; int fboff; int lineLength; - int rotate; - Bool shadowFB; - void *shadow; CloseScreenProcPtr CloseScreen; CreateScreenResourcesProcPtr CreateScreenResources; - void (*PointerMoved)(int index, int x, int y); EntityInfoPtr pEnt; /* DGA info */ DGAModePtr pDGAMode; @@ -387,7 +376,6 @@ FBDevPreInit(ScrnInfoPtr pScrn, int flags) { VideoCorePtr fPtr; int default_depth, fbbpp; - const char *s; int type; if (flags & PROBE_DETECT) return FALSE; @@ -472,45 +460,8 @@ FBDevPreInit(ScrnInfoPtr pScrn, int flags) memcpy(fPtr->Options, FBDevOptions, sizeof(FBDevOptions)); xf86ProcessOptions(pScrn->scrnIndex, fPtr->pEnt->device->options, fPtr->Options); - /* use shadow framebuffer by default */ - fPtr->shadowFB = xf86ReturnOptValBool(fPtr->Options, OPTION_SHADOW_FB, TRUE); - videoCoreDebug = xf86ReturnOptValBool(fPtr->Options, OPTION_DEBUG, FALSE); - /* rotation */ - fPtr->rotate = FBDEV_ROTATE_NONE; - if ((s = xf86GetOptValString(fPtr->Options, OPTION_ROTATE))) - { - if(!xf86NameCmp(s, "CW")) - { - fPtr->shadowFB = TRUE; - fPtr->rotate = FBDEV_ROTATE_CW; - xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, - "rotating screen clockwise\n"); - } - else if(!xf86NameCmp(s, "CCW")) - { - fPtr->shadowFB = TRUE; - fPtr->rotate = FBDEV_ROTATE_CCW; - xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, - "rotating screen counter-clockwise\n"); - } - else if(!xf86NameCmp(s, "UD")) - { - fPtr->shadowFB = TRUE; - fPtr->rotate = FBDEV_ROTATE_UD; - xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, - "rotating screen upside-down\n"); - } - else - { - xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, - "\"%s\" is not a valid value for Option \"Rotate\"\n", s); - xf86DrvMsg(pScrn->scrnIndex, X_INFO, - "valid options are \"CW\", \"CCW\" and \"UD\"\n"); - } - } - /* select video modes */ xf86DrvMsg(pScrn->scrnIndex, X_INFO, "checking modes against framebuffer device...\n"); @@ -586,64 +537,10 @@ FBDevPreInit(ScrnInfoPtr pScrn, int flags) return FALSE; } - /* Load shadow if needed */ - if (fPtr->shadowFB) { - xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "using shadow" - " framebuffer\n"); - if (!xf86LoadSubModule(pScrn, "shadow")) { - FBDevFreeRec(pScrn); - return FALSE; - } - } - TRACE_EXIT("PreInit"); return TRUE; } - -static Bool -FBDevCreateScreenResources(ScreenPtr pScreen) -{ - PixmapPtr pPixmap; - ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; - VideoCorePtr fPtr = VIDEOCOREPTR(pScrn); - Bool ret; - - pScreen->CreateScreenResources = fPtr->CreateScreenResources; - ret = pScreen->CreateScreenResources(pScreen); - pScreen->CreateScreenResources = FBDevCreateScreenResources; - - if (!ret) - return FALSE; - - pPixmap = pScreen->GetScreenPixmap(pScreen); - - if (!shadowAdd(pScreen, pPixmap, fPtr->rotate ? - shadowUpdateRotatePackedWeak() : shadowUpdatePackedWeak(), - FBDevWindowLinear, fPtr->rotate, NULL)) { - return FALSE; - } - - return TRUE; -} - -static Bool -FBDevShadowInit(ScreenPtr pScreen) -{ - ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; - VideoCorePtr fPtr = VIDEOCOREPTR(pScrn); - - if (!shadowSetup(pScreen)) { - return FALSE; - } - - fPtr->CreateScreenResources = pScreen->CreateScreenResources; - pScreen->CreateScreenResources = FBDevCreateScreenResources; - - return TRUE; -} - - static Bool FBDevScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) { @@ -706,12 +603,7 @@ FBDevScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) return FALSE; } - if(fPtr->rotate==FBDEV_ROTATE_CW || fPtr->rotate==FBDEV_ROTATE_CCW) - { - int tmp = pScrn->virtualX; - pScrn->virtualX = pScrn->displayWidth = pScrn->virtualY; - pScrn->virtualY = tmp; - } else if (!fPtr->shadowFB) { + if (TRUE) { /* FIXME: this doesn't work for all cases, e.g. when each scanline has a padding which is independent from the depth (controlfb) */ pScrn->displayWidth = fbdevHWGetLineLength(pScrn) / @@ -724,24 +616,8 @@ FBDevScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) } } - if(fPtr->rotate && !fPtr->PointerMoved) { - fPtr->PointerMoved = pScrn->PointerMoved; - pScrn->PointerMoved = FBDevPointerMoved; - } - fPtr->fbstart = fPtr->fbmem + fPtr->fboff; - if (fPtr->shadowFB) { - fPtr->shadow = calloc(1, pScrn->virtualX * pScrn->virtualY * - pScrn->bitsPerPixel); - - if (!fPtr->shadow) { - xf86DrvMsg(pScrn->scrnIndex, X_ERROR, - "Failed to allocate shadow framebuffer\n"); - return FALSE; - } - } - switch ((type = fbdevHWGetType(pScrn))) { case FBDEVHW_PACKED_PIXELS: @@ -750,8 +626,7 @@ FBDevScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) case 16: case 24: case 32: - ret = fbScreenInit(pScreen, fPtr->shadowFB ? fPtr->shadow - : fPtr->fbstart, pScrn->virtualX, + ret = fbScreenInit(pScreen, fPtr->fbstart, pScrn->virtualX, pScrn->virtualY, pScrn->xDpi, pScrn->yDpi, pScrn->displayWidth, pScrn->bitsPerPixel); @@ -819,23 +694,7 @@ FBDevScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) xf86DrvMsg(pScrn->scrnIndex, X_WARNING, "Render extension initialisation failed\n"); - if (fPtr->shadowFB && !FBDevShadowInit(pScreen)) { - xf86DrvMsg(scrnIndex, X_ERROR, - "shadow framebuffer initialization failed\n"); - return FALSE; - } - - if (!fPtr->rotate) - FBDevDGAInit(pScrn, pScreen); - else { - xf86DrvMsg(scrnIndex, X_INFO, "display rotated; disabling DGA\n"); - xf86DrvMsg(scrnIndex, X_INFO, "using driver rotation; disabling " - "XRandR\n"); - xf86DisableRandR(); - if (pScrn->bitsPerPixel == 24) - xf86DrvMsg(scrnIndex, X_WARNING, "rotation might be broken at 24 " - "bits per pixel\n"); - } + FBDevDGAInit(pScrn, pScreen); xf86SetBlackWhitePixels(pScreen); miInitializeBackingStore(pScreen); @@ -914,11 +773,6 @@ FBDevCloseScreen(int scrnIndex, ScreenPtr pScreen) fbdevHWRestore(pScrn); fbdevHWUnmapVidmem(pScrn); - if (fPtr->shadow) { - shadowRemove(pScreen, pScreen->GetScreenPixmap(pScreen)); - free(fPtr->shadow); - fPtr->shadow = NULL; - } if (fPtr->pDGAMode) { free(fPtr->pDGAMode); fPtr->pDGAMode = NULL; @@ -932,68 +786,6 @@ FBDevCloseScreen(int scrnIndex, ScreenPtr pScreen) } - -/*********************************************************************** - * Shadow stuff - ***********************************************************************/ - -static void * -FBDevWindowLinear(ScreenPtr pScreen, CARD32 row, CARD32 offset, int mode, - CARD32 *size, void *closure) -{ - ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; - VideoCorePtr fPtr = VIDEOCOREPTR(pScrn); - - if (!pScrn->vtSema) - return NULL; - - if (fPtr->lineLength) - *size = fPtr->lineLength; - else - *size = fPtr->lineLength = fbdevHWGetLineLength(pScrn); - - return ((CARD8 *)fPtr->fbstart + row * fPtr->lineLength + offset); -} - -static void -FBDevPointerMoved(int index, int x, int y) -{ - ScrnInfoPtr pScrn = xf86Screens[index]; - VideoCorePtr fPtr = VIDEOCOREPTR(pScrn); - int newX, newY; - - switch (fPtr->rotate) - { - case FBDEV_ROTATE_CW: - /* 90 degrees CW rotation. */ - newX = pScrn->pScreen->height - y - 1; - newY = x; - break; - - case FBDEV_ROTATE_CCW: - /* 90 degrees CCW rotation. */ - newX = y; - newY = pScrn->pScreen->width - x - 1; - break; - - case FBDEV_ROTATE_UD: - /* 180 degrees UD rotation. */ - newX = pScrn->pScreen->width - x - 1; - newY = pScrn->pScreen->height - y - 1; - break; - - default: - /* No rotation. */ - newX = x; - newY = y; - break; - } - - /* Pass adjusted pointer coordinates to wrapped PointerMoved function. */ - (*fPtr->PointerMoved)(index, newX, newY); -} - - /*********************************************************************** * DGA stuff ***********************************************************************/ |