Mesa (master): mesa: fix packing/unpacking for MESA_FORMAT_A4R4G4B4_UNORM

Brian Paul brianp at kemper.freedesktop.org
Wed Mar 5 23:07:04 UTC 2014


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

Author: Brian Paul <brianp at vmware.com>
Date:   Tue Mar  4 09:10:00 2014 -0700

mesa: fix packing/unpacking for MESA_FORMAT_A4R4G4B4_UNORM

Spotted by Chia-I Wu.
v2: also fix unpack_ubyte_ARGB4444_REV()

Reviewed-by: Roland Scheidegger <sroland at vmware.com>
Reviewed-by: Chia-I Wu <olv at lunarg.com>
Reviewed-by: Anuj Phogat <anuj.phogat at gmail.com>

---

 src/mesa/main/format_pack.c      |    2 +-
 src/mesa/main/format_unpack.c    |   16 ++++++++--------
 src/mesa/swrast/s_texfetch_tmp.h |    8 ++++----
 3 files changed, 13 insertions(+), 13 deletions(-)

diff --git a/src/mesa/main/format_pack.c b/src/mesa/main/format_pack.c
index 2772ff2..ee505ec 100644
--- a/src/mesa/main/format_pack.c
+++ b/src/mesa/main/format_pack.c
@@ -567,7 +567,7 @@ static void
 pack_ubyte_ARGB4444_REV(const GLubyte src[4], void *dst)
 {
    GLushort *d = ((GLushort *) dst);
-   *d = PACK_COLOR_4444(src[GCOMP], src[BCOMP], src[ACOMP], src[RCOMP]);
+   *d = PACK_COLOR_4444(src[BCOMP], src[GCOMP], src[RCOMP], src[ACOMP]);
 }
 
 static void
diff --git a/src/mesa/main/format_unpack.c b/src/mesa/main/format_unpack.c
index 276ba55..f9c42e7 100644
--- a/src/mesa/main/format_unpack.c
+++ b/src/mesa/main/format_unpack.c
@@ -267,10 +267,10 @@ unpack_ARGB4444_REV(const void *src, GLfloat dst[][4], GLuint n)
    const GLushort *s = ((const GLushort *) src);
    GLuint i;
    for (i = 0; i < n; i++) {
-      dst[i][RCOMP] = ((s[i]      ) & 0xf) * (1.0F / 15.0F);
-      dst[i][GCOMP] = ((s[i] >> 12) & 0xf) * (1.0F / 15.0F);
-      dst[i][BCOMP] = ((s[i] >>  8) & 0xf) * (1.0F / 15.0F);
-      dst[i][ACOMP] = ((s[i] >>  4) & 0xf) * (1.0F / 15.0F);
+      dst[i][RCOMP] = ((s[i] >>  4) & 0xf) * (1.0F / 15.0F);
+      dst[i][GCOMP] = ((s[i] >>  8) & 0xf) * (1.0F / 15.0F);
+      dst[i][BCOMP] = ((s[i] >> 12) & 0xf) * (1.0F / 15.0F);
+      dst[i][ACOMP] = ((s[i]      ) & 0xf) * (1.0F / 15.0F);
    }
 }
 
@@ -2738,10 +2738,10 @@ unpack_ubyte_ARGB4444_REV(const void *src, GLubyte dst[][4], GLuint n)
    const GLushort *s = ((const GLushort *) src);
    GLuint i;
    for (i = 0; i < n; i++) {
-      dst[i][RCOMP] = EXPAND_4_8((s[i]      ) & 0xf);
-      dst[i][GCOMP] = EXPAND_4_8((s[i] >> 12) & 0xf);
-      dst[i][BCOMP] = EXPAND_4_8((s[i] >>  8) & 0xf);
-      dst[i][ACOMP] = EXPAND_4_8((s[i] >>  4) & 0xf);
+      dst[i][RCOMP] = EXPAND_4_8((s[i] >>  4) & 0xf);
+      dst[i][GCOMP] = EXPAND_4_8((s[i] >>  8) & 0xf);
+      dst[i][BCOMP] = EXPAND_4_8((s[i] >> 12) & 0xf);
+      dst[i][ACOMP] = EXPAND_4_8((s[i]      ) & 0xf);
    }
 }
 
diff --git a/src/mesa/swrast/s_texfetch_tmp.h b/src/mesa/swrast/s_texfetch_tmp.h
index 806f0fd..1db3adc 100644
--- a/src/mesa/swrast/s_texfetch_tmp.h
+++ b/src/mesa/swrast/s_texfetch_tmp.h
@@ -611,10 +611,10 @@ static void FETCH(f_argb4444_rev)( const struct swrast_texture_image *texImage,
                                    GLint i, GLint j, GLint k, GLfloat *texel )
 {
    const GLushort s = *TEXEL_ADDR(GLushort, texImage, i, j, k, 1);
-   texel[RCOMP] = ((s      ) & 0xf) * (1.0F / 15.0F);
-   texel[GCOMP] = ((s >> 12) & 0xf) * (1.0F / 15.0F);
-   texel[BCOMP] = ((s >>  8) & 0xf) * (1.0F / 15.0F);
-   texel[ACOMP] = ((s >>  4) & 0xf) * (1.0F / 15.0F);
+   texel[RCOMP] = ((s >>  4) & 0xf) * (1.0F / 15.0F);
+   texel[GCOMP] = ((s >>  8) & 0xf) * (1.0F / 15.0F);
+   texel[BCOMP] = ((s >> 12) & 0xf) * (1.0F / 15.0F);
+   texel[ACOMP] = ((s      ) & 0xf) * (1.0F / 15.0F);
 }
 
 




More information about the mesa-commit mailing list