diff options
author | Ben Skeggs <skeggsb@gmail.com> | 2007-07-01 18:22:37 +1000 |
---|---|---|
committer | Ben Skeggs <skeggsb@gmail.com> | 2007-07-01 18:22:37 +1000 |
commit | dff1cce299df636813e8f85109f4556f520620c0 (patch) | |
tree | 7eb846f714a36a87afe9d9b658d421742b3a7536 | |
parent | 2e0e7e3856573fbbcb5fe5c96cadcde4d33db68f (diff) | |
download | xorg-driver-xf86-video-nouveau-dff1cce299df636813e8f85109f4556f520620c0.tar.gz |
Always provide UTS, fallback to memcpy if no GART.
-rw-r--r-- | src/nv_exa.c | 25 |
1 files changed, 15 insertions, 10 deletions
diff --git a/src/nv_exa.c b/src/nv_exa.c index 50306ee..4ce44ce 100644 --- a/src/nv_exa.c +++ b/src/nv_exa.c @@ -263,7 +263,7 @@ static void NVExaDoneCopy (PixmapPtr pDstPixmap) {} Bool NVAccelMemcpyRect(char *dst, const char *src, int height, int dst_pitch, int src_pitch, int line_len) { - if ((src_pitch == line_len) && (src_pitch == dst_pitch)) { + if ((src_pitch == line_len) && (src_pitch == dst_pitch)) { memcpy(dst, src, line_len*height); } else { while (height--) { @@ -431,20 +431,27 @@ static Bool NVUploadToScreen(PixmapPtr pDst, char *src, int src_pitch) { ScrnInfoPtr pScrn = xf86Screens[pDst->drawable.pScreen->myNum]; + NVPtr pNv = NVPTR(pScrn); int dst_offset, dst_pitch, cpp; - Bool ret; + char *dst; dst_offset = NVAccelGetPixmapOffset(pDst); dst_pitch = exaGetPixmapPitch(pDst); cpp = pDst->drawable.bitsPerPixel >> 3; - if (1) { + if (pNv->AGPScratch) { dst_offset += (y * dst_pitch) + (x * cpp); - ret = NVAccelUploadM2MF(pScrn, dst_offset, src, - dst_pitch, src_pitch, - w * cpp, h); + if (NVAccelUploadM2MF(pScrn, dst_offset, src, dst_pitch, + src_pitch, w * cpp, h)) + return TRUE; } - return ret; + + dst = pDst->devPrivate.ptr + (y * dst_pitch) + (x * cpp); + exaWaitSync(pDst->drawable.pScreen); + if (NVAccelMemcpyRect(dst, src, h, dst_pitch, src_pitch, w*cpp)) + return TRUE; + + return FALSE; } @@ -599,9 +606,7 @@ Bool NVExaInit(ScreenPtr pScreen) /* Install default hooks */ pNv->EXADriverPtr->DownloadFromScreen = NVDownloadFromScreen; - if (pNv->AGPScratch) { - pNv->EXADriverPtr->UploadToScreen = NVUploadToScreen; - } + pNv->EXADriverPtr->UploadToScreen = NVUploadToScreen; pNv->EXADriverPtr->PrepareCopy = NVExaPrepareCopy; pNv->EXADriverPtr->Copy = NVExaCopy; |