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,22 +755,24 @@ exaDriverInit (ScreenPtr pScreen,
return FALSE; return FALSE;
} }
if (!pScreenInfo->memoryBase) { if (!pScreenInfo->CreatePixmap) {
LogMessage(X_ERROR, "EXA(%d): ExaDriverRec::memoryBase must be " if (!pScreenInfo->memoryBase) {
"non-zero\n", pScreen->myNum); LogMessage(X_ERROR, "EXA(%d): ExaDriverRec::memoryBase "
return FALSE; "must be non-zero\n", pScreen->myNum);
} return FALSE;
}
if (!pScreenInfo->memorySize) { if (!pScreenInfo->memorySize) {
LogMessage(X_ERROR, "EXA(%d): ExaDriverRec::memorySize must be " LogMessage(X_ERROR, "EXA(%d): ExaDriverRec::memorySize must be "
"non-zero\n", pScreen->myNum); "non-zero\n", pScreen->myNum);
return FALSE; return FALSE;
} }
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) {
@ -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 %lu bytes\n",
pScreen->myNum,
pExaScr->info->memorySize - pExaScr->info->offScreenBase);
} else {
LogMessage(X_INFO, "EXA(%d): Driver allocated offscreen pixmaps\n",
pScreen->myNum);
LogMessage(X_INFO, "EXA(%d): Offscreen pixmap area of %d bytes\n", }
pScreen->myNum,
pExaScr->info->memorySize - pExaScr->info->offScreenBase);
} }
else else
{ {
@ -911,14 +917,16 @@ exaDriverInit (ScreenPtr pScreen,
return FALSE; return FALSE;
} }
DBG_PIXMAP(("============== %ld < %ld\n", pExaScr->info->offScreenBase, if (!pExaScr->info->CreatePixmap) {
pExaScr->info->memorySize)); DBG_PIXMAP(("============== %ld < %ld\n", pExaScr->info->offScreenBase,
if (pExaScr->info->offScreenBase < pExaScr->info->memorySize) { pExaScr->info->memorySize));
if (!exaOffscreenInit (pScreen)) { if (pExaScr->info->offScreenBase < pExaScr->info->memorySize) {
LogMessage(X_WARNING, "EXA(%d): Offscreen pixmap setup failed\n", if (!exaOffscreenInit (pScreen)) {
pScreen->myNum); LogMessage(X_WARNING, "EXA(%d): Offscreen pixmap setup failed\n",
return FALSE; pScreen->myNum);
} return FALSE;
}
}
} }
LogMessage(X_INFO, "EXA(%d): Driver registered support for the following" LogMessage(X_INFO, "EXA(%d): Driver registered support for the following"