mesa: fix dstRowDiff computation in RGTC texstore functions
authorMarek Olšák <maraeo@gmail.com>
Tue, 5 Apr 2011 23:23:51 +0000 (01:23 +0200)
committerMarek Olšák <maraeo@gmail.com>
Fri, 8 Apr 2011 02:38:36 +0000 (04:38 +0200)
Copied from libtxc_dxtn, this fixes NPOT RGTC1 textures with r300g.
I also did the same for RGTC2.

src/mesa/main/texcompress_rgtc.c

index c50df19c5d8426195990c7ea96b8e7767161dc04..d9de9bec3d161e561035bac16dd7ea1212f8f75f 100644 (file)
@@ -121,7 +121,7 @@ _mesa_texstore_red_rgtc1(TEXSTORE_PARAMS)
                                         texWidth, (GLubyte *) dstAddr);
 
    blkaddr = dst;
-   dstRowDiff = dstRowStride >= (srcWidth * 4) ? dstRowStride - (((srcWidth + 3) & ~3) * 4) : 0;
+   dstRowDiff = dstRowStride >= (srcWidth * 2) ? dstRowStride - (((srcWidth + 3) & ~3) * 2) : 0;
    for (j = 0; j < srcHeight; j+=4) {
       if (srcHeight > j + 3) numypixels = 4;
       else numypixels = srcHeight - j;
@@ -176,7 +176,7 @@ _mesa_texstore_signed_red_rgtc1(TEXSTORE_PARAMS)
                                                  texWidth, (GLubyte *) dstAddr);
 
    blkaddr = dst;
-   dstRowDiff = dstRowStride >= (srcWidth * 4) ? dstRowStride - (((srcWidth + 3) & ~3) * 4) : 0;
+   dstRowDiff = dstRowStride >= (srcWidth * 2) ? dstRowStride - (((srcWidth + 3) & ~3) * 2) : 0;
    for (j = 0; j < srcHeight; j+=4) {
       if (srcHeight > j + 3) numypixels = 4;
       else numypixels = srcHeight - j;
@@ -232,7 +232,7 @@ _mesa_texstore_rg_rgtc2(TEXSTORE_PARAMS)
                                         texWidth, (GLubyte *) dstAddr);
 
    blkaddr = dst;
-   dstRowDiff = dstRowStride >= (srcWidth * 8) ? dstRowStride - (((srcWidth + 7) & ~7) * 8) : 0;
+   dstRowDiff = dstRowStride >= (srcWidth * 4) ? dstRowStride - (((srcWidth + 3) & ~3) * 4) : 0;
    for (j = 0; j < srcHeight; j+=4) {
       if (srcHeight > j + 3) numypixels = 4;
       else numypixels = srcHeight - j;
@@ -294,7 +294,7 @@ _mesa_texstore_signed_rg_rgtc2(TEXSTORE_PARAMS)
                                                  texWidth, (GLubyte *) dstAddr);
 
    blkaddr = dst;
-   dstRowDiff = dstRowStride >= (srcWidth * 8) ? dstRowStride - (((srcWidth + 7) & ~7) * 8) : 0;
+   dstRowDiff = dstRowStride >= (srcWidth * 4) ? dstRowStride - (((srcWidth + 3) & ~3) * 4) : 0;
    for (j = 0; j < srcHeight; j += 4) {
       if (srcHeight > j + 3) numypixels = 4;
       else numypixels = srcHeight - j;