diff options
author | Kenneth Graunke <[email protected]> | 2011-03-01 11:15:34 -0800 |
---|---|---|
committer | Kenneth Graunke <[email protected]> | 2011-03-01 11:21:48 -0800 |
commit | d1fc920f613aa349e6721963e22e12c6eb49e3f9 (patch) | |
tree | 1109a959314b30eb4e1e198117b92bb6e71059e7 | |
parent | faf1ddacfb006fe50d81aab50b33356567cafaba (diff) |
intel: Support glCopyTexImage() from ARGB8888 to XRGB8888.
Nexuiz was hitting a software fallback.
-rw-r--r-- | 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 136d8e1d0a9..62d4169acd1 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__, |