[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