Mesa (master): intel: Support glCopyTexImage() from ARGB8888 to XRGB8888.

Kenneth Graunke kwg at kemper.freedesktop.org
Tue Mar 1 19:49:27 UTC 2011


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

Author: Kenneth Graunke <kenneth at whitecape.org>
Date:   Tue Mar  1 11:15:34 2011 -0800

intel: Support glCopyTexImage() from ARGB8888 to XRGB8888.

Nexuiz was hitting a software fallback.

---

 src/mesa/drivers/dri/intel/intel_tex_copy.c |   13 +++++++++++--
 1 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/src/mesa/drivers/dri/intel/intel_tex_copy.c b/src/mesa/drivers/dri/intel/intel_tex_copy.c
index 136d8e1..62d4169 100644
--- a/src/mesa/drivers/dri/intel/intel_tex_copy.c
+++ b/src/mesa/drivers/dri/intel/intel_tex_copy.c
@@ -77,6 +77,7 @@ intel_copy_texsubimage(struct intel_context *intel,
 {
    struct gl_context *ctx = &intel->ctx;
    struct intel_renderbuffer *irb;
+   bool copy_supported = false;
    bool copy_supported_with_alpha_override = false;
 
    intel_prepare_render(intel);
@@ -89,13 +90,21 @@ intel_copy_texsubimage(struct intel_context *intel,
       return GL_FALSE;
    }
 
+   copy_supported = intelImage->base.TexFormat == irb->Base.Format;
+
+   /* Converting ARGB8888 to XRGB8888 is trivial: ignore the alpha bits */
+   if (irb->Base.Format == MESA_FORMAT_ARGB8888 &&
+       intelImage->base.TexFormat == MESA_FORMAT_XRGB8888) {
+      copy_supported = true;
+   }
+
+   /* Converting XRGB8888 to ARGB8888 requires setting the alpha bits to 1.0 */
    if (irb->Base.Format == MESA_FORMAT_XRGB8888 &&
        intelImage->base.TexFormat == MESA_FORMAT_ARGB8888) {
       copy_supported_with_alpha_override = true;
    }
 
-   if (intelImage->base.TexFormat != irb->Base.Format &&
-       !copy_supported_with_alpha_override) {
+   if (!copy_supported && !copy_supported_with_alpha_override) {
       if (unlikely(INTEL_DEBUG & DEBUG_FALLBACKS))
 	 fprintf(stderr, "%s mismatched formats %s, %s\n",
 		 __FUNCTION__,




More information about the mesa-commit mailing list