fixed bug in GL_UNSIGNED_INT_10_10_10_2 unpacking

This commit is contained in:
Brian Paul 2000-02-21 16:33:20 +00:00
parent 0e3342ea29
commit a5f618a291
1 changed files with 25 additions and 11 deletions

View File

@ -1,4 +1,4 @@
/* $Id: image.c,v 1.16 2000/01/13 00:32:12 brianp Exp $ */
/* $Id: image.c,v 1.17 2000/02/21 16:33:20 brianp Exp $ */
/*
* Mesa 3-D graphics library
@ -1579,10 +1579,17 @@ extract_float_rgba(GLuint n, GLfloat rgba[][4],
srcType == GL_INT ||
srcType == GL_FLOAT ||
srcType == GL_UNSIGNED_BYTE_3_3_2 ||
srcType == GL_UNSIGNED_BYTE_2_3_3_REV ||
srcType == GL_UNSIGNED_SHORT_5_6_5 ||
srcType == GL_UNSIGNED_SHORT_5_6_5_REV ||
srcType == GL_UNSIGNED_SHORT_4_4_4_4 ||
srcType == GL_UNSIGNED_SHORT_4_4_4_4_REV ||
srcType == GL_UNSIGNED_SHORT_5_5_5_1 ||
srcType == GL_UNSIGNED_SHORT_1_5_5_5_REV ||
srcType == GL_UNSIGNED_INT_8_8_8_8 ||
srcType == GL_UNSIGNED_INT_10_10_10_2);
srcType == GL_UNSIGNED_INT_8_8_8_8_REV ||
srcType == GL_UNSIGNED_INT_10_10_10_2 ||
srcType == GL_UNSIGNED_INT_2_10_10_10_REV);
rComp = gComp = bComp = aComp = -1;
@ -1980,10 +1987,10 @@ extract_float_rgba(GLuint n, GLfloat rgba[][4],
for (i = 0; i < n; i ++) {
GLuint p = uisrc[i];
SWAP4BYTE(p);
rgba[i][rComp] = ((p ) & 0x3 ) * (1.0F / 3.0F);
rgba[i][gComp] = ((p >> 2) & 0x3ff) * (1.0F / 1023.0F);
rgba[i][bComp] = ((p >> 12) & 0x3ff) * (1.0F / 1023.0F);
rgba[i][aComp] = ((p >> 22) ) * (1.0F / 1023.0F);
rgba[i][rComp] = ((p >> 22) ) * (1.0F / 1023.0F);
rgba[i][gComp] = ((p >> 12) & 0x3ff) * (1.0F / 1023.0F);
rgba[i][bComp] = ((p >> 2) & 0x3ff) * (1.0F / 1023.0F);
rgba[i][aComp] = ((p ) & 0x3 ) * (1.0F / 3.0F);
}
}
else {
@ -1991,10 +1998,10 @@ extract_float_rgba(GLuint n, GLfloat rgba[][4],
GLuint i;
for (i = 0; i < n; i ++) {
GLuint p = uisrc[i];
rgba[i][rComp] = ((p ) & 0x3 ) * (1.0F / 3.0F);
rgba[i][gComp] = ((p >> 2) & 0x3ff) * (1.0F / 1023.0F);
rgba[i][bComp] = ((p >> 12) & 0x3ff) * (1.0F / 1023.0F);
rgba[i][aComp] = ((p >> 22) ) * (1.0F / 1023.0F);
rgba[i][rComp] = ((p >> 22) ) * (1.0F / 1023.0F);
rgba[i][gComp] = ((p >> 12) & 0x3ff) * (1.0F / 1023.0F);
rgba[i][bComp] = ((p >> 2) & 0x3ff) * (1.0F / 1023.0F);
rgba[i][aComp] = ((p ) & 0x3 ) * (1.0F / 3.0F);
}
}
break;
@ -2088,10 +2095,17 @@ _mesa_unpack_ubyte_color_span( const GLcontext *ctx,
srcType == GL_INT ||
srcType == GL_FLOAT ||
srcType == GL_UNSIGNED_BYTE_3_3_2 ||
srcType == GL_UNSIGNED_BYTE_2_3_3_REV ||
srcType == GL_UNSIGNED_SHORT_5_6_5 ||
srcType == GL_UNSIGNED_SHORT_5_6_5_REV ||
srcType == GL_UNSIGNED_SHORT_4_4_4_4 ||
srcType == GL_UNSIGNED_SHORT_4_4_4_4_REV ||
srcType == GL_UNSIGNED_SHORT_5_5_5_1 ||
srcType == GL_UNSIGNED_SHORT_1_5_5_5_REV ||
srcType == GL_UNSIGNED_INT_8_8_8_8 ||
srcType == GL_UNSIGNED_INT_10_10_10_2);
srcType == GL_UNSIGNED_INT_8_8_8_8_REV ||
srcType == GL_UNSIGNED_INT_10_10_10_2 ||
srcType == GL_UNSIGNED_INT_2_10_10_10_REV);
/* this is intended for RGBA mode */
assert(ctx->Visual->RGBAflag);