xlib: set alpha to 0xff when mapping RGB pixmaps
authorBrian Paul <brianp@vmware.com>
Fri, 11 Nov 2011 01:00:24 +0000 (18:00 -0700)
committerBrian Paul <brianp@vmware.com>
Fri, 11 Nov 2011 14:13:00 +0000 (07:13 -0700)
Fixes a bunch of conform regressions.

src/mesa/drivers/x11/xm_buffer.c

index 6cf9f068f2233c5c9012fefbaad63304fb44b1af..ea87b6dfd0a44db611e069d554ce19b4cd0382d0 100644 (file)
@@ -477,6 +477,17 @@ xmesa_MapRenderbuffer(struct gl_context *ctx,
             return;
          }
 
+         if (xrb->Base.Format == MESA_FORMAT_ARGB8888 ||
+             xrb->Base.Format == MESA_FORMAT_RGBA8888_REV) {
+            /* The original pixmap is RGB but we're returning an RGBA
+             * image buffer.  Fill in the A values with 0xff.
+             */
+            GLuint i, *p = (GLuint *) ximage->data;
+            for (i = 0; i < w * h; i++) {
+               p[i] |= 0xff000000;
+            }
+         }
+
          xrb->map_ximage = ximage;
 
          /* the first row of the OpenGL image is last row of the XImage */