Mesa (master): intel: fix up some XRGB breakage

Brian Paul brianp at kemper.freedesktop.org
Fri Oct 30 15:12:55 UTC 2009


Module: Mesa
Branch: master
Commit: 409469fb70682cd819ab405e0f92a4659381cfbe
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=409469fb70682cd819ab405e0f92a4659381cfbe

Author: Brian Paul <brianp at vmware.com>
Date:   Fri Oct 30 09:12:11 2009 -0600

intel: fix up some XRGB breakage

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    |    5 ++++-
 src/mesa/drivers/dri/intel/intel_screen.c |    2 +-
 src/mesa/drivers/dri/intel/intel_span.c   |    2 +-
 3 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/src/mesa/drivers/dri/intel/intel_fbo.c b/src/mesa/drivers/dri/intel/intel_fbo.c
index 9c780d4..d8ac4d3 100644
--- a/src/mesa/drivers/dri/intel/intel_fbo.c
+++ b/src/mesa/drivers/dri/intel/intel_fbo.c
@@ -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;
diff --git a/src/mesa/drivers/dri/intel/intel_screen.c b/src/mesa/drivers/dri/intel/intel_screen.c
index 62c322b..789135b 100644
--- a/src/mesa/drivers/dri/intel/intel_screen.c
+++ b/src/mesa/drivers/dri/intel/intel_screen.c
@@ -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;
 
diff --git a/src/mesa/drivers/dri/intel/intel_span.c b/src/mesa/drivers/dri/intel/intel_span.c
index b0484a9..927e4fd 100644
--- a/src/mesa/drivers/dri/intel/intel_span.c
+++ b/src/mesa/drivers/dri/intel/intel_span.c
@@ -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) {




More information about the mesa-commit mailing list