mesa/texformat: Handle GL_RGBA + GL_UNSIGNED_SHORT_5_5_5_1
authorChad Versace <chadversary@chromium.org>
Thu, 22 Dec 2016 22:39:44 +0000 (14:39 -0800)
committerChad Versace <chadversary@chromium.org>
Tue, 27 Dec 2016 17:14:00 +0000 (09:14 -0800)
_mesa_choose_tex_format() already handles GL_RGBA + GL_UNSIGNED_SHORT_1_5_5_5_REV
by converting it to MESA_FORMAT_B5G5R5A1_UNORM. Teach it do the same for
the non-reversed type. Otherwise, the switch's fallthrough converts it
to an 8888 format, which has incompatible precision in the alpha
channel.

Patch 2/2 to fix dEQP-EGL.functional.image.modify.tex_rgb5_a1_tex_subimage_rgba8
on Intel.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=99185
Cc: Haixia Shi <hshi@chromium.org>
Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
Cc: "13.0" <mesa-stable@lists.freedesktop.org>
src/mesa/main/texformat.c

index be2581b004f82033689397606f631ccfcac95101..baa3988f0a08ec473c96a95cc55c25c7174e5548 100644 (file)
@@ -74,6 +74,8 @@ _mesa_choose_tex_format(struct gl_context *ctx, GLenum target,
          RETURN_IF_SUPPORTED(MESA_FORMAT_B4G4R4A4_UNORM);
       } else if (type == GL_UNSIGNED_SHORT_1_5_5_5_REV) {
          RETURN_IF_SUPPORTED(MESA_FORMAT_B5G5R5A1_UNORM);
+      } else if (type == GL_UNSIGNED_SHORT_5_5_5_1) {
+         RETURN_IF_SUPPORTED(MESA_FORMAT_B5G5R5A1_UNORM);
       } else if (type == GL_UNSIGNED_INT_2_10_10_10_REV) {
          RETURN_IF_SUPPORTED(MESA_FORMAT_B10G10R10A2_UNORM);
       }