On 12/01/2014 03:04 AM, Iago Toral Quiroga wrote: > From: Jason Ekstrand <jason.ekstr...@intel.com> > > As with B5G6R5, these have been left broken with comments saying they are. > > Signed-off-by: Jason Ekstrand <jason.ekstr...@intel.com> > --- > src/mesa/main/format_pack.c | 8 +------- > src/mesa/main/format_unpack.c | 11 ++++------- > src/mesa/main/formats.c | 2 ++ > src/mesa/swrast/s_texfetch_tmp.h | 8 ++++---- > 4 files changed, 11 insertions(+), 18 deletions(-) > > diff --git a/src/mesa/main/format_pack.c b/src/mesa/main/format_pack.c > index 20d2b1a..3d191c1 100644 > --- a/src/mesa/main/format_pack.c > +++ b/src/mesa/main/format_pack.c > @@ -584,17 +584,11 @@ pack_float_B5G5R5A1_UNORM(const GLfloat src[4], void > *dst) > pack_ubyte_B5G5R5A1_UNORM(v, dst); > } > > - > -/* MESA_FORMAT_A1R5G5B5_UNORM > - * Warning: these functions do not match the current Mesa definition > - * of MESA_FORMAT_A1R5G5B5_UNORM. > - */ > - > static void > pack_ubyte_A1R5G5B5_UNORM(const GLubyte src[4], void *dst) > { > GLushort *d = ((GLushort *) dst), tmp; > - tmp = PACK_COLOR_1555(src[ACOMP], src[RCOMP], src[GCOMP], src[BCOMP]); > + tmp = PACK_COLOR_5551(src[BCOMP], src[GCOMP], src[RCOMP], src[ACOMP]); > *d = (tmp >> 8) | (tmp << 8); > } > > diff --git a/src/mesa/main/format_unpack.c b/src/mesa/main/format_unpack.c > index f5ab966..8a95fad 100644 > --- a/src/mesa/main/format_unpack.c > +++ b/src/mesa/main/format_unpack.c > @@ -2827,17 +2827,14 @@ unpack_ubyte_B5G5R5A1_UNORM(const void *src, GLubyte > dst[][4], GLuint n) > static void > unpack_ubyte_A1R5G5B5_UNORM(const void *src, GLubyte dst[][4], GLuint n) > { > - /* Warning: this function does not match the current Mesa definition > - * of MESA_FORMAT_A1R5G5B5_UNORM. > - */ > const GLushort *s = ((const GLushort *) src); > GLuint i; > for (i = 0; i < n; i++) { > GLushort tmp = (s[i] << 8) | (s[i] >> 8); /* byteswap */ > - dst[i][RCOMP] = EXPAND_5_8((tmp >> 10) & 0x1f); > - dst[i][GCOMP] = EXPAND_5_8((tmp >> 5) & 0x1f); > - dst[i][BCOMP] = EXPAND_5_8((tmp >> 0) & 0x1f); > - dst[i][ACOMP] = EXPAND_1_8((tmp >> 15) & 0x01); > + dst[i][RCOMP] = EXPAND_5_8((tmp >> 1) & 0x1f); > + dst[i][GCOMP] = EXPAND_5_8((tmp >> 6) & 0x1f); > + dst[i][BCOMP] = EXPAND_5_8((tmp >> 11) & 0x1f); > + dst[i][ACOMP] = EXPAND_1_8((tmp ) & 0x01); > } > } > > diff --git a/src/mesa/main/formats.c b/src/mesa/main/formats.c > index 1315d36..7ec0507 100644 > --- a/src/mesa/main/formats.c > +++ b/src/mesa/main/formats.c > @@ -1487,6 +1487,8 @@ _mesa_format_matches_format_and_type(mesa_format > mesa_format, > !swapBytes; > > case MESA_FORMAT_A1R5G5B5_UNORM: > + return format == GL_BGRA && type == GL_UNSIGNED_SHORT_5_5_5_1 && > + !swapBytes; > return GL_FALSE;
Delete the unreachable return. With that fixed, this patch is Reviewed-by: Ian Romanick <ian.d.roman...@intel.com> > > case MESA_FORMAT_L4A4_UNORM: > diff --git a/src/mesa/swrast/s_texfetch_tmp.h > b/src/mesa/swrast/s_texfetch_tmp.h > index 23db48d..e3a3cfe 100644 > --- a/src/mesa/swrast/s_texfetch_tmp.h > +++ b/src/mesa/swrast/s_texfetch_tmp.h > @@ -482,10 +482,10 @@ FETCH(A1R5G5B5_UNORM)(const struct swrast_texture_image > *texImage, > { > const GLushort *src = TEXEL_ADDR(GLushort, texImage, i, j, k, 1); > const GLushort s = (*src << 8) | (*src >> 8); /* byteswap */ > - texel[RCOMP] = UBYTE_TO_FLOAT( ((s >> 7) & 0xf8) | ((s >> 12) & 0x7) ); > - texel[GCOMP] = UBYTE_TO_FLOAT( ((s >> 2) & 0xf8) | ((s >> 7) & 0x7) ); > - texel[BCOMP] = UBYTE_TO_FLOAT( ((s << 3) & 0xf8) | ((s >> 2) & 0x7) ); > - texel[ACOMP] = UBYTE_TO_FLOAT( ((s >> 15) & 0x01) * 255 ); > + texel[RCOMP] = ((s >> 1) & 0x1f) * (1.0F / 31.0F); > + texel[GCOMP] = ((s >> 6) & 0x1f) * (1.0F / 31.0F); > + texel[BCOMP] = ((s >> 11) & 0x1f) * (1.0F / 31.0F); > + texel[ACOMP] = ((s ) & 0x01) * 1.0F; > } > > > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev