[Nouveau] [PATCH 2/2] nv04-nv40: don't attempt to do 32-bit shifts
Ilia Mirkin
imirkin at alum.mit.edu
Tue May 19 13:42:36 PDT 2015
On Tue, May 19, 2015 at 4:35 PM, Martin Peres <martin.peres at free.fr> wrote:
> 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>
Thanks! FWIW I just happened to notice this as I was reading the code,
so it's untested and not in response to any bug. I have no idea if it
actually affects things... I suspect planemask != ~0U is pretty rare
to begin with, outside of things that test it explicitly.
-ilia
More information about the Nouveau
mailing list