intel: fix up some XRGB breakage
authorBrian Paul <brianp@vmware.com>
Fri, 30 Oct 2009 15:12:11 +0000 (09:12 -0600)
committerBrian Paul <brianp@vmware.com>
Fri, 30 Oct 2009 15:13:04 +0000 (09:13 -0600)
We weren't choosing the right XRGB span functions for reading the
framebuffer.  XRGB formats still aren't turned on yet though.

src/mesa/drivers/dri/intel/intel_fbo.c
src/mesa/drivers/dri/intel/intel_screen.c
src/mesa/drivers/dri/intel/intel_span.c

index 9c780d4..d8ac4d3 100644 (file)
@@ -314,6 +314,10 @@ intel_create_renderbuffer(gl_format format)
       irb->Base.DataType = GL_UNSIGNED_BYTE;
       break;
    case MESA_FORMAT_XRGB8888:
+      /* XXX this is a hack since XRGB surfaces don't seem to work
+       * properly yet.  Reading the alpha channel returns 0 instead of 1.
+       */
+      format = MESA_FORMAT_ARGB8888;
       irb->Base._BaseFormat = GL_RGB;
       irb->Base.DataType = GL_UNSIGNED_BYTE;
       break;
@@ -340,7 +344,6 @@ intel_create_renderbuffer(gl_format format)
       return NULL;
    }
 
-   assert(irb->Base._BaseFormat == _mesa_get_format_base_format(format));
    irb->Base.Format = format;
    irb->Base.InternalFormat = irb->Base._BaseFormat;
    irb->texformat = format;
index 62c322b..789135b 100644 (file)
@@ -361,7 +361,7 @@ intelCreateBuffer(__DRIscreenPrivate * driScrnPriv,
       if (mesaVis->redBits == 5)
         rgbFormat = MESA_FORMAT_RGB565;
       else if (mesaVis->alphaBits == 0)
-        rgbFormat = MESA_FORMAT_ARGB8888; /* XXX change to XRGB someday */
+        rgbFormat = MESA_FORMAT_XRGB8888;
       else
         rgbFormat = MESA_FORMAT_ARGB8888;
 
index b0484a9..927e4fd 100644 (file)
@@ -666,7 +666,7 @@ intel_set_span_functions(struct intel_context *intel,
       }
       break;
    case MESA_FORMAT_ARGB8888:
-      if (0 /*rb->AlphaBits == 0*/) { /* XXX: Need xRGB8888 Mesa format */
+      if (rb->_BaseFormat == GL_RGB) {
          /* XXX remove this code someday when we enable XRGB surfaces */
         /* 8888 RGBx */
         switch (tiling) {