diff options
author | Kristian Høgsberg <krh@redhat.com> | 2007-08-03 16:33:33 +1000 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2007-10-02 14:03:48 +1000 |
commit | f15af2ae60bb8503c336bc3cba0560bd314a34bc (patch) | |
tree | 6096e168ccdf82f4025aed847ae75beb6ab93d2b /exa/exa.c | |
parent | ffb58f4fa8d86e87f831430b8627f27d85f971a9 (diff) |
exa: only setup offscreen allocator if driver doesn't provide CreatePixmap
Diffstat (limited to 'exa/exa.c')
-rw-r--r-- | exa/exa.c | 62 |
1 files changed, 35 insertions, 27 deletions
@@ -755,22 +755,24 @@ exaDriverInit (ScreenPtr pScreen, return FALSE; } - if (!pScreenInfo->memoryBase) { - LogMessage(X_ERROR, "EXA(%d): ExaDriverRec::memoryBase must be " - "non-zero\n", pScreen->myNum); - return FALSE; - } + if (!pScreenInfo->CreatePixmap) { + if (!pScreenInfo->memoryBase) { + LogMessage(X_ERROR, "EXA(%d): ExaDriverRec::memoryBase " + "must be non-zero\n", pScreen->myNum); + return FALSE; + } - if (!pScreenInfo->memorySize) { - LogMessage(X_ERROR, "EXA(%d): ExaDriverRec::memorySize must be " - "non-zero\n", pScreen->myNum); - return FALSE; - } + if (!pScreenInfo->memorySize) { + LogMessage(X_ERROR, "EXA(%d): ExaDriverRec::memorySize must be " + "non-zero\n", pScreen->myNum); + return FALSE; + } - if (pScreenInfo->offScreenBase > pScreenInfo->memorySize) { - LogMessage(X_ERROR, "EXA(%d): ExaDriverRec::offScreenBase must be <= " - "ExaDriverRec::memorySize\n", pScreen->myNum); - return FALSE; + if (pScreenInfo->offScreenBase > pScreenInfo->memorySize) { + LogMessage(X_ERROR, "EXA(%d): ExaDriverRec::offScreenBase must " + "be <= ExaDriverRec::memorySize\n", pScreen->myNum); + return FALSE; + } } if (!pScreenInfo->PrepareSolid) { @@ -881,8 +883,7 @@ exaDriverInit (ScreenPtr pScreen, /* * Hookup offscreen pixmaps */ - if ((pExaScr->info->flags & EXA_OFFSCREEN_PIXMAPS) && - pExaScr->info->offScreenBase < pExaScr->info->memorySize) + if (pExaScr->info->flags & EXA_OFFSCREEN_PIXMAPS) { if (!AllocatePixmapPrivate(pScreen, exaPixmapPrivateIndex, sizeof (ExaPixmapPrivRec))) { @@ -899,10 +900,15 @@ exaDriverInit (ScreenPtr pScreen, pExaScr->SavedModifyPixmapHeader = pScreen->ModifyPixmapHeader; 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 { @@ -911,14 +917,16 @@ exaDriverInit (ScreenPtr pScreen, return FALSE; } - DBG_PIXMAP(("============== %ld < %ld\n", pExaScr->info->offScreenBase, - pExaScr->info->memorySize)); - if (pExaScr->info->offScreenBase < pExaScr->info->memorySize) { - if (!exaOffscreenInit (pScreen)) { - LogMessage(X_WARNING, "EXA(%d): Offscreen pixmap setup failed\n", - pScreen->myNum); - return FALSE; - } + if (!pExaScr->info->CreatePixmap) { + DBG_PIXMAP(("============== %ld < %ld\n", pExaScr->info->offScreenBase, + pExaScr->info->memorySize)); + if (pExaScr->info->offScreenBase < pExaScr->info->memorySize) { + if (!exaOffscreenInit (pScreen)) { + LogMessage(X_WARNING, "EXA(%d): Offscreen pixmap setup failed\n", + pScreen->myNum); + return FALSE; + } + } } LogMessage(X_INFO, "EXA(%d): Driver registered support for the following" |