summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWill Thompson <will@willthompson.co.uk>2012-05-01 20:07:49 +0100
committerWill Thompson <will@willthompson.co.uk>2012-05-04 11:44:22 +0100
commitf097f82eae3a93e644ca9570ff97dc7543d16651 (patch)
tree5265f4d5dbfadc8d208f24df0b7e3d1ba5e8a446
parent65d48c9a0362c00537cd26668b68334c3ab0e769 (diff)
Remove ShadowFB and Rotate options
-rw-r--r--src/videocore.c214
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
***********************************************************************/