[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:28:29 PDT 2015
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;
--
2.3.6
More information about the Nouveau
mailing list