Not clear what the depth % 8 was trying to protect against, but it was
breaking 30bpp visuals with DRI3. Add it in to ensure that bitsPerPixel
% 8 is 0, since there is plenty of bpp/8 math in the driver.

Signed-off-by: Ilia Mirkin <imir...@alum.mit.edu>
---
 src/nouveau_dri2.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/nouveau_dri2.c b/src/nouveau_dri2.c
index cbb7b2a..ac0ca09 100644
--- a/src/nouveau_dri2.c
+++ b/src/nouveau_dri2.c
@@ -1076,13 +1076,16 @@ static PixmapPtr nouveau_dri3_pixmap_from_fd(ScreenPtr 
screen, int fd, CARD16 wi
        struct nouveau_bo *bo = NULL;
        struct nouveau_pixmap *nvpix;
 
-       if (depth < 8 || depth > 32 || depth % 8)
+       if (depth < 8 || depth > 32)
                return NULL;
 
        pixmap = screen->CreatePixmap(screen, 0, 0, depth, 0);
        if (!pixmap)
                return NULL;
 
+       if (pixmap->drawable.bitsPerPixel % 8)
+               goto free_pixmap;
+
        if (!screen->ModifyPixmapHeader(pixmap, width, height, 0, 0, stride, 
NULL))
                goto free_pixmap;
 
-- 
2.13.6

_______________________________________________
Nouveau mailing list
Nouveau@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/nouveau

Reply via email to