From 03bb33088d5c905d1c2cf764ba3894405670b9f4 Mon Sep 17 00:00:00 2001 From: Alex Deucher Date: Wed, 10 May 2006 02:58:56 +0000 Subject: - add AccelMethod to savage.man - fix bug 6847 - add memcpy based DFS --- ChangeLog | 8 ++++++++ man/savage.man | 11 +++++++++++ src/savage_exa.c | 16 ++++++++-------- 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 + + * 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 * 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; -- cgit v1.2.3