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:
parent
21ef7e17ef
commit
6aaf0e5b58
20
exa/exa.c
20
exa/exa.c
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
Loading…
Reference in New Issue