swrast: fix texel decoding in opt_sample_rgba_2d()
authorBrian Paul <brianp@vmware.com>
Thu, 29 Oct 2009 01:38:12 +0000 (19:38 -0600)
committerBrian Paul <brianp@vmware.com>
Thu, 29 Oct 2009 01:38:12 +0000 (19:38 -0600)
src/mesa/swrast/s_texfilter.c

index db03c6aa3986c849683ff874b1ec560b71cdba11..0bb988e3ef973dab41585477d361fb6e8b7c26b4 100644 (file)
@@ -1391,11 +1391,11 @@ opt_sample_rgba_2d(GLcontext *ctx,
       const GLint col = IFLOOR(texcoords[i][0] * width) & colMask;
       const GLint row = IFLOOR(texcoords[i][1] * height) & rowMask;
       const GLint pos = (row << shift) | col;
-      const GLubyte *texel = ((GLubyte *) img->Data) + (pos << 2);    /* pos*4 */
-      rgba[i][RCOMP] = UBYTE_TO_FLOAT(texel[3]);
-      rgba[i][GCOMP] = UBYTE_TO_FLOAT(texel[2]);
-      rgba[i][BCOMP] = UBYTE_TO_FLOAT(texel[1]);
-      rgba[i][ACOMP] = UBYTE_TO_FLOAT(texel[0]);
+      const GLuint texel = *((GLuint *) img->Data + pos);
+      rgba[i][RCOMP] = UBYTE_TO_FLOAT( (texel >> 24)        );
+      rgba[i][GCOMP] = UBYTE_TO_FLOAT( (texel >> 16) & 0xff );
+      rgba[i][BCOMP] = UBYTE_TO_FLOAT( (texel >>  8) & 0xff );
+      rgba[i][ACOMP] = UBYTE_TO_FLOAT( (texel      ) & 0xff );
    }
 }