i965: Accelerate uploads of RGBA and BGRA GL_UNSIGNED_INT_8_8_8_8_REV textures
authorJason Ekstrand <jason.ekstrand@intel.com>
Sat, 19 Jul 2014 01:23:30 +0000 (18:23 -0700)
committerJason Ekstrand <jason.ekstrand@intel.com>
Wed, 23 Jul 2014 23:48:35 +0000 (16:48 -0700)
Since intel is always going to be little-endian,
GL_UNSIGNED_INT_8_8_8_8_REV is the same as GL_UNSIGNED_BYTE for RGBA and
BGRA textures, so the same acceleration code will work.  We might as well
use it.

Signed-off-by: Jason Ekstrand <jason.ekstrand@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
src/mesa/drivers/dri/i965/intel_tex_subimage.c

index c73cf10f58817b4b81f1206ecb5f0c8710960b78..875190ff7375ec2ef735fa49fde9a04b5e0f9479 100644 (file)
@@ -560,7 +560,7 @@ intel_texsubimage_tiled_memcpy(struct gl_context * ctx,
     * we need tests.
     */
    if (!brw->has_llc ||
-       type != GL_UNSIGNED_BYTE ||
+       !(type == GL_UNSIGNED_BYTE || type == GL_UNSIGNED_INT_8_8_8_8_REV) ||
        texImage->TexObject->Target != GL_TEXTURE_2D ||
        pixels == NULL ||
        _mesa_is_bufferobj(packing->BufferObj) ||
@@ -573,6 +573,10 @@ intel_texsubimage_tiled_memcpy(struct gl_context * ctx,
        packing->Invert)
       return false;
 
+   if (type == GL_UNSIGNED_INT_8_8_8_8_REV &&
+       !(format == GL_RGBA || format == GL_BGRA))
+      return false; /* Invalid type/format combination */
+
    if ((texImage->TexFormat == MESA_FORMAT_L_UNORM8 && format == GL_LUMINANCE) ||
        (texImage->TexFormat == MESA_FORMAT_A_UNORM8 && format == GL_ALPHA)) {
       cpp = 1;