summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArthur Huillet <arthur.huillet@free.fr>2007-07-15 01:00:19 +0200
committerArthur Huillet <arthur.huillet@free.fr>2007-07-19 21:26:46 +0200
commit81cc744eb31343a509f9ca0d37993d462f162d80 (patch)
tree6a246b60e7271d1cf8ea24d10d9c074b2dd10eed
parent74ed14e1d27903f0647fe650da666cacb1e2e940 (diff)
downloadxorg-driver-xf86-video-nouveau-81cc744eb31343a509f9ca0d37993d462f162d80.tar.gz
VERY EXPERIMENTAL now EXA waits for sync before its operations - this removed the text corruption and didn't affect performance here, please report.
-rw-r--r--src/nv_exa.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/nv_exa.c b/src/nv_exa.c
index fde1d09..da73669 100644
--- a/src/nv_exa.c
+++ b/src/nv_exa.c
@@ -285,6 +285,8 @@ NVAccelDownloadM2MF(ScrnInfoPtr pScrn, char *dst, uint64_t src_offset,
NVPtr pNv = NVPTR(pScrn);
setM2MFDirection(pScrn, 0);
+ if (!NVNotifierWaitStatus(pScrn, pNv->Notifier0, 0, 0))
+ return FALSE;
while (line_count) {
char *src = pNv->GARTScratch->map;
@@ -375,6 +377,9 @@ NVAccelUploadM2MF(ScrnInfoPtr pScrn, uint64_t dst_offset, const char *src,
setM2MFDirection(pScrn, 1);
+ if (!NVNotifierWaitStatus(pScrn, pNv->Notifier0, 0, 0))
+ return FALSE;
+
while (line_count) {
char *dst = pNv->GARTScratch->map;
int lc, i;
@@ -420,8 +425,9 @@ NVAccelUploadM2MF(ScrnInfoPtr pScrn, uint64_t dst_offset, const char *src,
NVDmaStart(pNv, NvSubMemFormat, 0x100, 1);
NVDmaNext (pNv, 0);
NVDmaKickoff(pNv);
- if (!NVNotifierWaitStatus(pScrn, pNv->Notifier0, 0, 0))
- return FALSE;
+ if ( line_count - lc > 0 )
+ if (!NVNotifierWaitStatus(pScrn, pNv->Notifier0, 0, 0))
+ return FALSE;
line_count -= lc;
}