const GLubyte *pixels;
GLubyte *dst;
const GLubyte *tempImage = NULL;
+ int srccomps = srcFormat == GL_RGB ? 3 : 4;
assert(dstFormat == MESA_FORMAT_RGB_DXT1 ||
dstFormat == MESA_FORMAT_SRGB_DXT1);
- if (srcFormat != GL_RGB ||
+ if (!(srcFormat == GL_RGB || srcFormat == GL_RGBA) ||
srcType != GL_UNSIGNED_BYTE ||
ctx->_ImageTransferState ||
ALIGN(srcPacking->RowLength, srcPacking->Alignment) != srcWidth ||
srcPacking);
pixels = tempImage;
srcFormat = GL_RGB;
+ srccomps = 3;
}
else {
pixels = _mesa_image_address2d(srcPacking, srcAddr, srcWidth, srcHeight,
dst = dstSlices[0];
- tx_compress_dxt1(3, srcWidth, srcHeight, pixels, dst, dstRowStride, 3);
+ tx_compress_dxt1(srccomps, srcWidth, srcHeight, pixels,
+ dst, dstRowStride, 3);
free((void *) tempImage);