[Nouveau] [PATCH 2/2] nv04-nv40: don't attempt to do 32-bit shifts

Martin Peres martin.peres at free.fr
Tue May 19 13:35:15 PDT 2015


On 19/05/15 23:28, Ilia Mirkin wrote:
> A 32-bit shift is a no-op, which will also make the new planemask get
> or'd with ~0, thus negating the usefulness of the subsequent
> planemask != ~0 check. Only do this if it's a less-than-32-bit per pixel
> format, in which case it will have the desired effect of setting the
> high bits.
>
> Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu>
> ---
>   src/nv04_exa.c | 3 ++-
>   1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/src/nv04_exa.c b/src/nv04_exa.c
> index 7a58dd7..d5dec68 100644
> --- a/src/nv04_exa.c
> +++ b/src/nv04_exa.c
> @@ -49,7 +49,8 @@ NV04EXASetROP(PixmapPtr ppix, int subc, int mthd, int alu, Pixel planemask)
>   	NVPtr pNv = NVPTR(pScrn);
>   	struct nouveau_pushbuf *push = pNv->pushbuf;
>   
> -	planemask |= ~0 << ppix->drawable.bitsPerPixel;
> +	if (ppix->drawable.bitsPerPixel < 32)
> +		planemask |= ~0 << ppix->drawable.bitsPerPixel;
>   	if (planemask != ~0 || alu != GXcopy) {
>   		if (ppix->drawable.bitsPerPixel == 32)
>   			return FALSE;

Both patches look good to me. Thanks for tracking those bugs down :)

Reviewed-by: Martin Peres <martin.peres at free.fr>


More information about the Nouveau mailing list