Revert of Add initial pipeline for decompressors (https://codereview.chromium.org/432503002/)

Reason for revert:
New test is crashing on Android.

http://108.170.220.21:10117/builders/Test-Android-Nexus10-MaliT604-Arm7-Debug/builds/2509/steps/RunTests/logs/stdio

http://108.170.220.21:10117/builders/Test-Android-Nexus4-Adreno320-Arm7-Debug/builds/2313/steps/RunTests/logs/stdio

Original issue's description:
> Add initial pipeline for decompressors
>
> Committed: https://skia.googlesource.com/skia/+/14a1df0bcd00734e6efbe4a21629fe95118815ef

R=robertphillips@google.com, krajcevski@google.com
TBR=krajcevski@google.com, robertphillips@google.com
NOTREECHECKS=true
NOTRY=true

Author: mtklein@google.com

Review URL: https://codereview.chromium.org/425223006
diff --git a/src/utils/SkTextureCompressor.cpp b/src/utils/SkTextureCompressor.cpp
index e0b751f..30fd307 100644
--- a/src/utils/SkTextureCompressor.cpp
+++ b/src/utils/SkTextureCompressor.cpp
@@ -20,16 +20,15 @@
 
 namespace SkTextureCompressor {
 
-void GetBlockDimensions(Format format, int* dimX, int* dimY, bool matchSpec) {
+void GetBlockDimensions(Format format, int* dimX, int* dimY) {
     if (NULL == dimX || NULL == dimY) {
         return;
     }
 
-    if (!matchSpec && SkTextureCompressorGetPlatformDims(format, dimX, dimY)) {
+    if (SkTextureCompressorGetPlatformDims(format, dimX, dimY)) {
         return;
     }
 
-    // No specialized arguments, return the dimensions as they are in the spec.
     switch(format) {
         // These formats are 64 bits per 4x4 block.
         default:
@@ -160,30 +159,4 @@
     return NULL;
 }
 
-bool DecompressBufferFromFormat(uint8_t* dst, int dstRowBytes, const uint8_t* src,
-                                int width, int height, Format format) {
-    int dimX, dimY;
-    GetBlockDimensions(format, &dimX, &dimY, true);
-
-    if (width < 0 || ((width % dimX) != 0) || height < 0 || ((height % dimY) != 0)) {
-        return false;
-    }
-
-    switch(format) {
-        case kLATC_Format:
-            DecompressLATC(dst, dstRowBytes, src, width, height);
-            return true;
-
-        case kR11_EAC_Format:
-            DecompressR11EAC(dst, dstRowBytes, src, width, height);
-            return true;
-
-        case kASTC_12x12_Format:
-            // TODO(krajcevski) .. right now just fall through and return false.
-            return false;
-    }
-
-    return false;
-}
-
 }  // namespace SkTextureCompressor
diff --git a/src/utils/SkTextureCompressor.h b/src/utils/SkTextureCompressor.h
index eac8c5e..c6305ba 100644
--- a/src/utils/SkTextureCompressor.h
+++ b/src/utils/SkTextureCompressor.h
@@ -44,24 +44,6 @@
                                 int width, int height, int rowBytes, Format format,
                                 bool opt = true /* Use optimization if available */);
 
-    // Decompresses the given src data from the format specified into the
-    // destination buffer. The width and height of the data passed corresponds
-    // to the width and height of the uncompressed image. The destination buffer (dst)
-    // is assumed to be large enough to hold the entire decompressed image. The
-    // decompressed image colors are determined based on the passed format:
-    //
-    // LATC -> Alpha 8
-    // R11_EAC -> Alpha 8
-    // ASTC -> RGBA
-    //
-    // Note, CompressBufferToFormat compresses A8 data into ASTC. However,
-    // general ASTC data encodes RGBA data, so that is what the decompressor
-    // operates on.
-    //
-    // Returns true if successfully decompresses the src data.
-    bool DecompressBufferFromFormat(uint8_t* dst, int dstRowBytes, const uint8_t* src,
-                                    int width, int height, Format format);
-
     // This typedef defines what the nominal aspects of a compression function
     // are. The typedef is not meant to be used by clients of the API, but rather
     // allows SIMD optimized compression functions to be implemented.
@@ -75,12 +57,10 @@
                                       Format format);
 
     // Returns the desired dimensions of the block size for the given format. These dimensions
-    // don't necessarily correspond to the specification's dimensions, since there may
-    // be specialized algorithms that operate on multiple blocks at once. If the
-    // flag 'matchSpec' is true, then the actual dimensions from the specification are
-    // returned. If the flag is false, then these dimensions reflect the appropriate operable
-    // dimensions of the compression functions.
-    void GetBlockDimensions(Format format, int* dimX, int* dimY, bool matchSpec = false);
+    // don't necessarily correspond to the hardware-specified dimensions, since there may
+    // be specialized algorithms that operate on multiple blocks at once. These dimensions
+    // reflect that optimization and return the appropriate operable dimensions.
+    void GetBlockDimensions(Format format, int* dimX, int* dimY);
 }
 
 #endif
diff --git a/src/utils/SkTextureCompressor_LATC.cpp b/src/utils/SkTextureCompressor_LATC.cpp
index 5db0fc6..9d42b4f 100644
--- a/src/utils/SkTextureCompressor_LATC.cpp
+++ b/src/utils/SkTextureCompressor_LATC.cpp
@@ -17,46 +17,6 @@
 
 ////////////////////////////////////////////////////////////////////////////////
 
-// Generates an LATC palette. LATC constructs
-// a palette of eight colors from LUM0 and LUM1 using the algorithm:
-//
-// LUM0,              if lum0 > lum1 and code(x,y) == 0
-// LUM1,              if lum0 > lum1 and code(x,y) == 1
-// (6*LUM0+  LUM1)/7, if lum0 > lum1 and code(x,y) == 2
-// (5*LUM0+2*LUM1)/7, if lum0 > lum1 and code(x,y) == 3
-// (4*LUM0+3*LUM1)/7, if lum0 > lum1 and code(x,y) == 4
-// (3*LUM0+4*LUM1)/7, if lum0 > lum1 and code(x,y) == 5
-// (2*LUM0+5*LUM1)/7, if lum0 > lum1 and code(x,y) == 6
-// (  LUM0+6*LUM1)/7, if lum0 > lum1 and code(x,y) == 7
-//
-// LUM0,              if lum0 <= lum1 and code(x,y) == 0
-// LUM1,              if lum0 <= lum1 and code(x,y) == 1
-// (4*LUM0+  LUM1)/5, if lum0 <= lum1 and code(x,y) == 2
-// (3*LUM0+2*LUM1)/5, if lum0 <= lum1 and code(x,y) == 3
-// (2*LUM0+3*LUM1)/5, if lum0 <= lum1 and code(x,y) == 4
-// (  LUM0+4*LUM1)/5, if lum0 <= lum1 and code(x,y) == 5
-// 0,                 if lum0 <= lum1 and code(x,y) == 6
-// 255,               if lum0 <= lum1 and code(x,y) == 7
-
-static const int kLATCPaletteSize = 8;
-static void generate_latc_palette(uint8_t palette[], uint8_t lum0, uint8_t lum1) {
-    palette[0] = lum0;
-    palette[1] = lum1;
-    if (lum0 > lum1) {
-        for (int i = 1; i < 7; i++) {
-            palette[i+1] = ((7-i)*lum0 + i*lum1) / 7;
-        }
-    } else {
-        for (int i = 1; i < 5; i++) {
-            palette[i+1] = ((5-i)*lum0 + i*lum1) / 5;
-        }
-        palette[6] = 0;
-        palette[7] = 255;
-    }
-}
-
-////////////////////////////////////////////////////////////////////////////////
-
 #if COMPRESS_LATC_SLOW
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -119,9 +79,47 @@
 ////////////////////////////////////////////////////////////////////////////////
 
 // LATC compressed texels down into square 4x4 blocks
+static const int kLATCPaletteSize = 8;
 static const int kLATCBlockSize = 4;
 static const int kLATCPixelsPerBlock = kLATCBlockSize * kLATCBlockSize;
 
+// Generates an LATC palette. LATC constructs
+// a palette of eight colors from LUM0 and LUM1 using the algorithm:
+//
+// LUM0,              if lum0 > lum1 and code(x,y) == 0
+// LUM1,              if lum0 > lum1 and code(x,y) == 1
+// (6*LUM0+  LUM1)/7, if lum0 > lum1 and code(x,y) == 2
+// (5*LUM0+2*LUM1)/7, if lum0 > lum1 and code(x,y) == 3
+// (4*LUM0+3*LUM1)/7, if lum0 > lum1 and code(x,y) == 4
+// (3*LUM0+4*LUM1)/7, if lum0 > lum1 and code(x,y) == 5
+// (2*LUM0+5*LUM1)/7, if lum0 > lum1 and code(x,y) == 6
+// (  LUM0+6*LUM1)/7, if lum0 > lum1 and code(x,y) == 7
+//
+// LUM0,              if lum0 <= lum1 and code(x,y) == 0
+// LUM1,              if lum0 <= lum1 and code(x,y) == 1
+// (4*LUM0+  LUM1)/5, if lum0 <= lum1 and code(x,y) == 2
+// (3*LUM0+2*LUM1)/5, if lum0 <= lum1 and code(x,y) == 3
+// (2*LUM0+3*LUM1)/5, if lum0 <= lum1 and code(x,y) == 4
+// (  LUM0+4*LUM1)/5, if lum0 <= lum1 and code(x,y) == 5
+// 0,                 if lum0 <= lum1 and code(x,y) == 6
+// 255,               if lum0 <= lum1 and code(x,y) == 7
+
+static void generate_latc_palette(uint8_t palette[], uint8_t lum0, uint8_t lum1) {
+    palette[0] = lum0;
+    palette[1] = lum1;
+    if (lum0 > lum1) {
+        for (int i = 1; i < 7; i++) {
+            palette[i+1] = ((7-i)*lum0 + i*lum1) / 7;
+        }
+    } else {
+        for (int i = 1; i < 5; i++) {
+            palette[i+1] = ((5-i)*lum0 + i*lum1) / 5;
+        }
+        palette[6] = 0;
+        palette[7] = 255;
+    }
+}
+
 // Compress a block by using the bounding box of the pixels. It is assumed that
 // there are no extremal pixels in this block otherwise we would have used
 // compressBlockBBIgnoreExtremal.
@@ -395,24 +393,6 @@
 
 #endif  // COMPRESS_LATC_FAST
 
-void decompress_latc_block(uint8_t* dst, int dstRowBytes, const uint8_t* src) {
-    uint64_t block = SkEndian_SwapLE64(*(reinterpret_cast<const uint64_t *>(src)));
-    uint8_t lum0 = block & 0xFF;
-    uint8_t lum1 = (block >> 8) & 0xFF;
-
-    uint8_t palette[kLATCPaletteSize];
-    generate_latc_palette(palette, lum0, lum1);
-
-    block >>= 16;
-    for (int j = 0; j < 4; ++j) {
-        for (int i = 0; i < 4; ++i) {
-            dst[i] = palette[block & 0x7];
-            block >>= 3;
-        }
-        dst += dstRowBytes;
-    }
-}
-
 ////////////////////////////////////////////////////////////////////////////////
 
 namespace SkTextureCompressor {
@@ -438,14 +418,4 @@
 #endif
 }
 
-void DecompressLATC(uint8_t* dst, int dstRowBytes, const uint8_t* src, int width, int height) {
-    for (int j = 0; j < height; j += 4) {
-        for (int i = 0; i < width; i += 4) {
-            decompress_latc_block(dst + i, dstRowBytes, src);
-            src += 8;
-        }
-        dst += 4 * dstRowBytes;
-    }
-}
-
 }  // SkTextureCompressor
diff --git a/src/utils/SkTextureCompressor_LATC.h b/src/utils/SkTextureCompressor_LATC.h
index 6ee2ff6..e3446b5 100644
--- a/src/utils/SkTextureCompressor_LATC.h
+++ b/src/utils/SkTextureCompressor_LATC.h
@@ -16,8 +16,6 @@
                           int width, int height, int rowBytes);
 
     SkBlitter* CreateLATCBlitter(int width, int height, void* outputBuffer);
-
-    void DecompressLATC(uint8_t* dst, int dstRowBytes, const uint8_t* src, int width, int height);
 }
 
 #endif  // SkTextureCompressor_LATC_DEFINED
diff --git a/src/utils/SkTextureCompressor_R11EAC.cpp b/src/utils/SkTextureCompressor_R11EAC.cpp
index 7baa219..982fb01 100644
--- a/src/utils/SkTextureCompressor_R11EAC.cpp
+++ b/src/utils/SkTextureCompressor_R11EAC.cpp
@@ -29,6 +29,8 @@
 // If mul is zero, then we set mul = 1/8, so that the formula becomes
 // clamp[0, 2047](base_cw * 8 + 4 + mod_val)
 
+#if COMPRESS_R11_EAC_SLOW
+
 static const int kNumR11EACPalettes = 16;
 static const int kR11EACPaletteSize = 8;
 static const int kR11EACModifierPalettes[kNumR11EACPalettes][kR11EACPaletteSize] = {
@@ -50,8 +52,6 @@
     {-3, -5, -7, -9, 2, 4, 6, 8}
 };
 
-#if COMPRESS_R11_EAC_SLOW
-
 // Pack the base codeword, palette, and multiplier into the 64 bits necessary
 // to decode it.
 static uint64_t pack_r11eac_block(uint16_t base_cw, uint16_t palette, uint16_t multiplier,
@@ -557,38 +557,6 @@
                              static_cast<uint64_t>(packedIndexColumn3));
 }
 
-static inline int get_r11_eac_index(uint64_t block, int x, int y) {
-    SkASSERT(x >= 0 && x < 4);
-    SkASSERT(y >= 0 && y < 4);
-    const int idx = x*4 + y;
-    return (block >> ((15-idx)*3)) & 0x7;
-}
-
-static void decompress_r11_eac_block(uint8_t* dst, int dstRowBytes, const uint8_t* src) {
-    const uint64_t block = SkEndian_SwapBE64(*(reinterpret_cast<const uint64_t *>(src)));
-
-    const int base_cw = (block >> 56) & 0xFF;
-    const int mod = (block >> 52) & 0xF;
-    const int palette_idx = (block >> 48) & 0xF;
-
-    const int* palette = kR11EACModifierPalettes[palette_idx];
-
-    for (int j = 0; j < 4; ++j) {
-        for (int i = 0; i < 4; ++i) {
-            const int idx = get_r11_eac_index(block, i, j);
-            const int val = base_cw*8 + 4 + palette[idx]*mod*8;
-            if (val < 0) {
-                dst[i] = 0;
-            } else if (val > 2047) {
-                dst[i] = 0xFF;
-            } else {
-                dst[i] = (val >> 3) & 0xFF;
-            }
-        }
-        dst += dstRowBytes;
-    }
-}
-
 ////////////////////////////////////////////////////////////////////////////////
 
 namespace SkTextureCompressor {
@@ -614,14 +582,4 @@
         (width, height, outputBuffer);
 }
 
-void DecompressR11EAC(uint8_t* dst, int dstRowBytes, const uint8_t* src, int width, int height) {
-    for (int j = 0; j < height; j += 4) {
-        for (int i = 0; i < width; i += 4) {
-            decompress_r11_eac_block(dst + i, dstRowBytes, src);
-            src += 8;
-        }
-        dst += 4 * dstRowBytes;
-    }    
-}
-
 }  // namespace SkTextureCompressor
diff --git a/src/utils/SkTextureCompressor_R11EAC.h b/src/utils/SkTextureCompressor_R11EAC.h
index 1dd8e39..5f981ef 100644
--- a/src/utils/SkTextureCompressor_R11EAC.h
+++ b/src/utils/SkTextureCompressor_R11EAC.h
@@ -16,8 +16,6 @@
                             int width, int height, int rowBytes);
 
     SkBlitter* CreateR11EACBlitter(int width, int height, void* outputBuffer);
-
-    void DecompressR11EAC(uint8_t* dst, int dstRB, const uint8_t* src, int width, int height);
 }
 
 #endif  // SkTextureCompressor_R11EAC_DEFINED
diff --git a/tests/TextureCompressionTest.cpp b/tests/TextureCompressionTest.cpp
index 7313487..503605b 100644
--- a/tests/TextureCompressionTest.cpp
+++ b/tests/TextureCompressionTest.cpp
@@ -75,86 +75,6 @@
 }
 
 /**
- * Make sure that if you compress a texture with alternating black/white pixels, and
- * then decompress it, you get what you started with.
- */
-DEF_TEST(CompressCheckerboard, reporter) {
-    SkBitmap bitmap;
-    static const int kWidth = 12;
-    static const int kHeight = 12;
-    SkImageInfo info = SkImageInfo::MakeA8(kWidth, kHeight);
-
-    // ASTC is at most 12x12, and any dimension divisible by 12 is also divisible
-    // by 4, which is the dimensions of R11_EAC and LATC. In the future, we might
-    // support additional variants of ASTC, such as 5x6 and 8x8, in which case this would
-    // need to be updated.
-    REPORTER_ASSERT(reporter, kWidth % 12 == 0);
-    REPORTER_ASSERT(reporter, kHeight % 12 == 0);
-
-    bool setInfoSuccess = bitmap.setInfo(info);
-    REPORTER_ASSERT(reporter, setInfoSuccess);
-
-    bool allocPixelsSuccess = bitmap.allocPixels(info);
-    REPORTER_ASSERT(reporter, allocPixelsSuccess);
-
-    bitmap.lockPixels();
-    uint8_t* pixels = reinterpret_cast<uint8_t*>(bitmap.getPixels());
-    REPORTER_ASSERT(reporter, NULL != pixels);
-
-    for (int y = 0; y < kHeight; ++y) {
-        for (int x = 0; x < kWidth; ++x) {
-            if ((x ^ y) & 1) {
-                pixels[x] = 0xFF;
-            } else {
-                pixels[x] = 0;
-            }
-        }
-        pixels += bitmap.rowBytes();
-    }
-    bitmap.unlockPixels();
-
-    SkAutoMalloc decompMemory(kWidth*kHeight);
-    uint8_t* decompBuffer = reinterpret_cast<uint8_t*>(decompMemory.get());
-    REPORTER_ASSERT(reporter, NULL != decompBuffer);
-    if (NULL == decompBuffer) {
-        return;
-    }
-
-    for (int i = 0; i < SkTextureCompressor::kFormatCnt; ++i) {
-        const SkTextureCompressor::Format fmt = static_cast<SkTextureCompressor::Format>(i);
-
-        // ASTC is for RGBA data, and the decompressed buffer
-        // won't match the size and contents of the original.
-        // TODO: Create separate tests for RGB and RGBA data once
-        // ASTC decompression is implemented.
-        if (SkTextureCompressor::kASTC_12x12_Format == fmt) {
-            continue;
-        }
-
-        SkAutoDataUnref data(SkTextureCompressor::CompressBitmapToFormat(bitmap, fmt));
-        REPORTER_ASSERT(reporter, NULL != data);
-
-        bool decompResult =
-            SkTextureCompressor::DecompressBufferFromFormat(
-                decompBuffer, kWidth,
-                data->bytes(),
-                kWidth, kHeight, fmt);
-        REPORTER_ASSERT(reporter, decompResult);
-
-        bitmap.lockPixels();
-        pixels = reinterpret_cast<uint8_t*>(bitmap.getPixels());
-        REPORTER_ASSERT(reporter, NULL != pixels);
-
-        for (int y = 0; y < kHeight; ++y) {
-            for (int x = 0; x < kWidth; ++x) {
-                bool ok = pixels[y*bitmap.rowBytes() + x] == decompBuffer[y*kWidth + x];
-                REPORTER_ASSERT(reporter, ok);
-            }
-        }
-    }
-}
-
-/**
  * Make sure that if we pass in a solid color bitmap that we get the appropriate results
  */
 DEF_TEST(CompressLATC, reporter) {