exa: only setup offscreen allocator if driver doesn't provide CreatePixmap

This commit is contained in:
Kristian Høgsberg 2007-08-03 16:33:33 +10:00 committed by Dave Airlie
parent ffb58f4fa8
commit f15af2ae60

View File

@ -755,9 +755,10 @@ exaDriverInit (ScreenPtr pScreen,
return FALSE; return FALSE;
} }
if (!pScreenInfo->CreatePixmap) {
if (!pScreenInfo->memoryBase) { if (!pScreenInfo->memoryBase) {
LogMessage(X_ERROR, "EXA(%d): ExaDriverRec::memoryBase must be " LogMessage(X_ERROR, "EXA(%d): ExaDriverRec::memoryBase "
"non-zero\n", pScreen->myNum); "must be non-zero\n", pScreen->myNum);
return FALSE; return FALSE;
} }
@ -768,10 +769,11 @@ exaDriverInit (ScreenPtr pScreen,
} }
if (pScreenInfo->offScreenBase > pScreenInfo->memorySize) { if (pScreenInfo->offScreenBase > pScreenInfo->memorySize) {
LogMessage(X_ERROR, "EXA(%d): ExaDriverRec::offScreenBase must be <= " LogMessage(X_ERROR, "EXA(%d): ExaDriverRec::offScreenBase must "
"ExaDriverRec::memorySize\n", pScreen->myNum); "be <= ExaDriverRec::memorySize\n", pScreen->myNum);
return FALSE; return FALSE;
} }
}
if (!pScreenInfo->PrepareSolid) { if (!pScreenInfo->PrepareSolid) {
LogMessage(X_ERROR, "EXA(%d): ExaDriverRec::PrepareSolid must be " LogMessage(X_ERROR, "EXA(%d): ExaDriverRec::PrepareSolid must be "
@ -881,8 +883,7 @@ exaDriverInit (ScreenPtr pScreen,
/* /*
* Hookup offscreen pixmaps * Hookup offscreen pixmaps
*/ */
if ((pExaScr->info->flags & EXA_OFFSCREEN_PIXMAPS) && if (pExaScr->info->flags & EXA_OFFSCREEN_PIXMAPS)
pExaScr->info->offScreenBase < pExaScr->info->memorySize)
{ {
if (!AllocatePixmapPrivate(pScreen, exaPixmapPrivateIndex, if (!AllocatePixmapPrivate(pScreen, exaPixmapPrivateIndex,
sizeof (ExaPixmapPrivRec))) { sizeof (ExaPixmapPrivRec))) {
@ -899,10 +900,15 @@ exaDriverInit (ScreenPtr pScreen,
pExaScr->SavedModifyPixmapHeader = pScreen->ModifyPixmapHeader; pExaScr->SavedModifyPixmapHeader = pScreen->ModifyPixmapHeader;
pScreen->ModifyPixmapHeader = exaModifyPixmapHeader; pScreen->ModifyPixmapHeader = exaModifyPixmapHeader;
if (!pExaScr->info->CreatePixmap) {
LogMessage(X_INFO, "EXA(%d): Offscreen pixmap area of %d bytes\n", LogMessage(X_INFO, "EXA(%d): Offscreen pixmap area of %lu bytes\n",
pScreen->myNum, pScreen->myNum,
pExaScr->info->memorySize - pExaScr->info->offScreenBase); pExaScr->info->memorySize - pExaScr->info->offScreenBase);
} else {
LogMessage(X_INFO, "EXA(%d): Driver allocated offscreen pixmaps\n",
pScreen->myNum);
}
} }
else else
{ {
@ -911,6 +917,7 @@ exaDriverInit (ScreenPtr pScreen,
return FALSE; return FALSE;
} }
if (!pExaScr->info->CreatePixmap) {
DBG_PIXMAP(("============== %ld < %ld\n", pExaScr->info->offScreenBase, DBG_PIXMAP(("============== %ld < %ld\n", pExaScr->info->offScreenBase,
pExaScr->info->memorySize)); pExaScr->info->memorySize));
if (pExaScr->info->offScreenBase < pExaScr->info->memorySize) { if (pExaScr->info->offScreenBase < pExaScr->info->memorySize) {
@ -920,6 +927,7 @@ exaDriverInit (ScreenPtr pScreen,
return FALSE; return FALSE;
} }
} }
}
LogMessage(X_INFO, "EXA(%d): Driver registered support for the following" LogMessage(X_INFO, "EXA(%d): Driver registered support for the following"
" operations:\n", pScreen->myNum); " operations:\n", pScreen->myNum);