summaryrefslogtreecommitdiff
path: root/src/savage_exa.c
diff options
context:
space:
mode:
authorAlex Deucher <agd5f@yahoo.com>2006-05-10 02:58:56 +0000
committerAlex Deucher <agd5f@yahoo.com>2006-05-10 02:58:56 +0000
commit03bb33088d5c905d1c2cf764ba3894405670b9f4 (patch)
tree3655ae234722c0cb3506fdecd875c796e63c0e39 /src/savage_exa.c
parent6d688c993ec7baf8f00df59764dd3e04bab24e09 (diff)
- add AccelMethod to savage.man
- fix bug 6847 - add memcpy based DFS
Diffstat (limited to 'src/savage_exa.c')
-rw-r--r--src/savage_exa.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/src/savage_exa.c b/src/savage_exa.c
index 1cb2711..942fe86 100644
--- a/src/savage_exa.c
+++ b/src/savage_exa.c
@@ -45,7 +45,7 @@ SavageDoneCopy(PixmapPtr pDstPixmap);
Bool
SavageUploadToScreen(PixmapPtr pDst, int x, int y, int w, int h, char *src, int src_pitch);
-#if 0
+#if 1
Bool
SavageDownloadFromScreen(PixmapPtr pSrc, int x, int y, int w, int h, char *dst, int dst_pitch);
#endif
@@ -153,8 +153,7 @@ SavageEXAInit(ScreenPtr pScreen)
((pScrn->virtualX+31)/32)*((pScrn->virtualY+15)/16) * 2048;
}
} else {
- psav->EXADriverPtr->offScreenBase =
- ((pScrn->virtualY * psav->lDelta + SAVAGE_BUFFER_ALIGN) & ~SAVAGE_BUFFER_ALIGN);
+ psav->EXADriverPtr->offScreenBase = pScrn->virtualY * psav->lDelta;
}
if (psav->EXADriverPtr->memorySize > psav->EXADriverPtr->offScreenBase) {
@@ -201,8 +200,8 @@ SavageEXAInit(ScreenPtr pScreen)
/* host data blit */
psav->EXADriverPtr->UploadToScreen = SavageUploadToScreen;
#endif
-#if 0
- psav->EXADriverPtr->accel.DownloadFromScreen = SavageDownloadFromScreen;
+#if 1
+ psav->EXADriverPtr->DownloadFromScreen = SavageDownloadFromScreen;
#endif
if(!exaDriverInit(pScreen, psav->EXADriverPtr)) {
@@ -456,17 +455,18 @@ SavageUploadToScreen(PixmapPtr pDst, int x, int y, int w, int h, char *src, int
return TRUE;
}
-#if 0
+#if 1
Bool
SavageDownloadFromScreen(PixmapPtr pSrc, int x, int y, int w, int h, char *dst, int dst_pitch)
{
ScrnInfoPtr pScrn = xf86Screens[pSrc->drawable.pScreen->myNum];
- unsigned char *src;
+ unsigned char *src = pSrc->devPrivate.ptr;
int src_pitch = exaGetPixmapPitch(pSrc);
int bpp = pSrc->drawable.bitsPerPixel;
+ exaWaitSync(pSrc->drawable.pScreen);
+
/* do the copy */
- src = pSrc->devPrivate.ptr;
src += (x * bpp / 8) + (y * src_pitch);
w *= bpp / 8;