[Nouveau] [PATCHv2] nv04-nv40/exa: Match the blob behavior more closely on PrepareCopy.

Francisco Jerez currojerez at riseup.net
Fri Nov 6 07:14:40 PST 2009


Fix a somewhat indeterministic corruption problem on nv17 when there
is stuff going on the other fifos (e.g. gallium but I've also
reproduced it with an app just SIFM-ing memory around): in some cases
it made the blits the X server had scheduled fail corrupting the
nearby screen areas.

Signed-off-by: Francisco Jerez <currojerez at riseup.net>
---
 src/nv04_exa.c |    6 ++++++
 1 files changed, 6 insertions(+), 0 deletions(-)

diff --git a/src/nv04_exa.c b/src/nv04_exa.c
index 71a4ac2..f4966a4 100644
--- a/src/nv04_exa.c
+++ b/src/nv04_exa.c
@@ -209,10 +209,16 @@ NV04EXAPrepareCopy(PixmapPtr pSrcPixmap, PixmapPtr pDstPixmap, int dx, int dy,
 			MARK_UNDO(chan);
 			return FALSE;
 		}
+
+		BEGIN_RING(chan, blit, NV04_IMAGE_BLIT_SURFACE, 1);
+		OUT_RING  (chan, pNv->NvContextSurfaces->handle);
 		BEGIN_RING(chan, blit, NV04_IMAGE_BLIT_OPERATION, 1);
 		OUT_RING  (chan, 1); /* ROP_AND */
+
 		NV04EXASetROP(pScrn, alu, planemask);
 	} else {
+		BEGIN_RING(chan, blit, NV04_IMAGE_BLIT_SURFACE, 1);
+		OUT_RING  (chan, pNv->NvContextSurfaces->handle);
 		BEGIN_RING(chan, blit, NV04_IMAGE_BLIT_OPERATION, 1);
 		OUT_RING  (chan, 3); /* SRCCOPY */
 	}
-- 
1.6.4.4



More information about the Nouveau mailing list