Add options to disable EXA acceleration for Composite/UTS/DFS, and always print

out how much memory EXA is managing for offscreen pixmaps.
This commit is contained in:
Eric Anholt 2006-06-18 19:12:15 -07:00
parent 21ef7e17ef
commit 6aaf0e5b58
3 changed files with 53 additions and 7 deletions

View File

@ -623,6 +623,10 @@ exaDriverInit (ScreenPtr pScreen,
pExaScr->SavedDestroyPixmap = pScreen->DestroyPixmap; pExaScr->SavedDestroyPixmap = pScreen->DestroyPixmap;
pScreen->DestroyPixmap = exaDestroyPixmap; pScreen->DestroyPixmap = exaDestroyPixmap;
LogMessage(X_INFO, "EXA(%d): Offscreen pixmap area of %d bytes\n",
pScreen->myNum,
pExaScr->info->memorySize - pExaScr->info->offScreenBase);
} }
else else
{ {
@ -641,6 +645,22 @@ exaDriverInit (ScreenPtr pScreen,
} }
} }
LogMessage(X_INFO, "EXA(%d): Driver registered support for the following"
" operations:\n", pScreen->myNum);
assert(pScreenInfo->PrepareSolid != NULL);
LogMessage(X_INFO, " Solid\n");
assert(pScreenInfo->PrepareCopy != NULL);
LogMessage(X_INFO, " Copy\n");
if (pScreenInfo->PrepareComposite != NULL) {
LogMessage(X_INFO, " Composite (RENDER acceleration)\n");
}
if (pScreenInfo->UploadToScreen != NULL) {
LogMessage(X_INFO, " UploadToScreen\n");
}
if (pScreenInfo->DownloadFromScreen != NULL) {
LogMessage(X_INFO, " DownloadFromScreen\n");
}
return TRUE; return TRUE;
} }

View File

@ -413,7 +413,6 @@ exaOffscreenInit (ScreenPtr pScreen)
if (!area) if (!area)
return FALSE; return FALSE;
area->state = ExaOffscreenAvail; area->state = ExaOffscreenAvail;
area->base_offset = pExaScr->info->offScreenBase; area->base_offset = pExaScr->info->offScreenBase;
area->offset = area->base_offset; area->offset = area->base_offset;
@ -422,10 +421,6 @@ exaOffscreenInit (ScreenPtr pScreen)
area->next = NULL; area->next = NULL;
area->score = 0; area->score = 0;
#if DEBUG_OFFSCREEN
ErrorF("============ initial memory block of %d\n", area->size);
#endif
/* Add it to the free areas */ /* Add it to the free areas */
pExaScr->info->offScreenAreas = area; pExaScr->info->offScreenAreas = area;

View File

@ -47,11 +47,22 @@ static int exaXorgScreenPrivateIndex;
typedef enum { typedef enum {
EXAOPT_MIGRATION_HEURISTIC, EXAOPT_MIGRATION_HEURISTIC,
EXAOPT_NO_COMPOSITE,
EXAOPT_NO_UTS,
EXAOPT_NO_DFS,
} EXAOpts; } EXAOpts;
static const OptionInfoRec EXAOptions[] = { static const OptionInfoRec EXAOptions[] = {
{ EXAOPT_MIGRATION_HEURISTIC, "MigrationHeuristic", OPTV_ANYSTR, {0}, FALSE }, { EXAOPT_MIGRATION_HEURISTIC, "MigrationHeuristic",
{ -1, NULL, OPTV_NONE, {0}, FALSE } OPTV_ANYSTR, {0}, FALSE },
{ EXAOPT_NO_COMPOSITE, "EXANoComposite",
OPTV_BOOLEAN, {0}, FALSE },
{ EXAOPT_NO_UTS, "EXANoUploadToScreen",
OPTV_BOOLEAN, {0}, FALSE },
{ EXAOPT_NO_DFS, "EXANoDownloadFromScreen",
OPTV_BOOLEAN, {0}, FALSE },
{ -1, NULL,
OPTV_NONE, {0}, FALSE }
}; };
static Bool static Bool
@ -135,6 +146,26 @@ exaDDXDriverInit(ScreenPtr pScreen)
} }
} }
if (xf86IsOptionSet(pScreenPriv->options, EXAOPT_NO_COMPOSITE)) {
xf86DrvMsg(pScreen->myNum, X_INFO,
"EXA: Disabling Composite operation "
"(RENDER acceleration)\n");
pExaScr->info->CheckComposite = NULL;
pExaScr->info->PrepareComposite = NULL;
}
if (xf86IsOptionSet(pScreenPriv->options, EXAOPT_NO_UTS)) {
xf86DrvMsg(pScreen->myNum, X_INFO,
"EXA: Disabling UploadToScreen\n");
pExaScr->info->UploadToScreen = NULL;
}
if (xf86IsOptionSet(pScreenPriv->options, EXAOPT_NO_DFS)) {
xf86DrvMsg(pScreen->myNum, X_INFO,
"EXA: Disabling DownloadFromScreen\n");
pExaScr->info->DownloadFromScreen = NULL;
}
pScreen->devPrivates[exaXorgScreenPrivateIndex].ptr = pScreenPriv; pScreen->devPrivates[exaXorgScreenPrivateIndex].ptr = pScreenPriv;
pScreenPriv->SavedEnableDisableFBAccess = pScrn->EnableDisableFBAccess; pScreenPriv->SavedEnableDisableFBAccess = pScrn->EnableDisableFBAccess;