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

Ben Skeggs skeggsb at gmail.com
Sun Nov 8 14:20:33 PST 2009


On Fri, 2009-11-06 at 16:14 +0100, Francisco Jerez wrote:
> 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>
Reviewed-by: Ben Skeggs <bskeggs at redhat.com>

> ---
>  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 */
>  	}




More information about the Nouveau mailing list