summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog8
-rw-r--r--man/savage.man11
-rw-r--r--src/savage_exa.c16
3 files changed, 27 insertions, 8 deletions
diff --git a/ChangeLog b/ChangeLog
index b491504..0d5c037 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2006-05-09 Alex Deucher <agd5f@yahoo.com>
+
+ * man/savage.man:
+ * src/savage_exa.c: (SavageEXAInit), (SavageDownloadFromScreen):
+ - add AccelMethod to savage.man
+ - fix bug 6847
+ - add memcpy based DFS
+
2006-04-30 Alex Deucher <agd5f@yahoo.com>
* src/Makefile.am:
diff --git a/man/savage.man b/man/savage.man
index 07202ec..935b0fc 100644
--- a/man/savage.man
+++ b/man/savage.man
@@ -80,6 +80,17 @@ Default: hardware cursor.
.TP
.BI "Option \*qNoAccel\*q \*q" boolean \*q
Disable or enable acceleration. Default: acceleration is enabled.
+TP
+.BI "Option \*qAccelMethod\*q \*q" "string" \*q
+Chooses between available acceleration architectures. Valid options are
+.B XAA
+and
+.B EXA.
+XAA is the traditional acceleration architecture and support for it is very
+stable. EXA is a newer acceleration architecture with better performance for
+the Render and Composite extensions, but the rendering code for it is newer and
+possibly unstable. The default is
+.B XAA.
.TP
.BI "Option \*qRotate\*q \*qCW\*q"
.TP
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;