Mesa (10.3): swrast: Fix handling of MESA_FORMAT_L8A8_SRGB for big-endian

Emil Velikov evelikov at kemper.freedesktop.org
Tue Sep 23 00:21:03 UTC 2014


Module: Mesa
Branch: 10.3
Commit: 27f70a92730685171d8891c28bfc89af11e293e1
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=27f70a92730685171d8891c28bfc89af11e293e1

Author: Richard Sandiford <rsandifo at linux.vnet.ibm.com>
Date:   Tue Sep 16 16:27:57 2014 +1000

swrast: Fix handling of MESA_FORMAT_L8A8_SRGB for big-endian

Luminance is the least-significant byte of the uint16, rather than the
lowest byte in memory.  Other parts of mesa already handle this correctly
for big-endian, and swrast already handles other MESA_FORMAT_x8y8 formats
correctly.  This case was just an odd-one-out.

Signed-off-by: Richard Sandiford <rsandifo at linux.vnet.ibm.com>
Reviewed-by: Brian Paul <brianp at vmware.com>
Cc: <mesa-stable at lists.freedesktop.org>
Signed-off-by: Dave Airlie <airlied at redhat.com>
(cherry picked from commit ecc48f83c8359e3ef64ea40dfb6074f4a1a38dc1)

---

 src/mesa/swrast/s_texfetch_tmp.h |    6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/mesa/swrast/s_texfetch_tmp.h b/src/mesa/swrast/s_texfetch_tmp.h
index 72037ec..3923e2b 100644
--- a/src/mesa/swrast/s_texfetch_tmp.h
+++ b/src/mesa/swrast/s_texfetch_tmp.h
@@ -808,11 +808,11 @@ static void
 FETCH(L8A8_SRGB)(const struct swrast_texture_image *texImage,
                  GLint i, GLint j, GLint k, GLfloat *texel)
 {
-   const GLubyte *src = TEXEL_ADDR(GLubyte, texImage, i, j, k, 2);
+   const GLushort s = *TEXEL_ADDR(GLushort, texImage, i, j, k, 1);
    texel[RCOMP] =
    texel[GCOMP] =
-   texel[BCOMP] = util_format_srgb_8unorm_to_linear_float(src[0]);
-   texel[ACOMP] = UBYTE_TO_FLOAT(src[1]); /* linear */
+   texel[BCOMP] = util_format_srgb_8unorm_to_linear_float(s & 0xff);
+   texel[ACOMP] = UBYTE_TO_FLOAT(s >> 8); /* linear */
 }
 
 




More information about the mesa-commit mailing list