| Index: src/utils/SkTextureCompressor.cpp
|
| diff --git a/src/utils/SkTextureCompressor.cpp b/src/utils/SkTextureCompressor.cpp
|
| index 801328642ff301cd4cad88232373c67316273378..4034615b37f389a024547be0116574eb3e580f7a 100644
|
| --- a/src/utils/SkTextureCompressor.cpp
|
| +++ b/src/utils/SkTextureCompressor.cpp
|
| @@ -16,6 +16,20 @@
|
|
|
| #include "SkTextureCompression_opts.h"
|
|
|
| +#ifndef SK_IGNORE_ETC1_SUPPORT
|
| +# include "etc1.h"
|
| +#endif
|
| +
|
| +// Convert ETC1 functions to our function signatures
|
| +static bool compress_etc1_565(uint8_t* dst, const uint8_t* src,
|
| + int width, int height, int rowBytes) {
|
| +#ifndef SK_IGNORE_ETC1_SUPPORT
|
| + return 0 == etc1_encode_image(src, width, height, 2, rowBytes, dst);
|
| +#else
|
| + return false;
|
| +#endif
|
| +}
|
| +
|
| ////////////////////////////////////////////////////////////////////////////////
|
|
|
| namespace SkTextureCompressor {
|
| @@ -35,8 +49,9 @@ void GetBlockDimensions(Format format, int* dimX, int* dimY, bool matchSpec) {
|
| default:
|
| SkDEBUGFAIL("Unknown compression format!");
|
| // fall through
|
| - case kR11_EAC_Format:
|
| case kLATC_Format:
|
| + case kR11_EAC_Format:
|
| + case kETC1_Format:
|
| *dimX = 4;
|
| *dimY = 4;
|
| break;
|
| @@ -57,8 +72,9 @@ int GetCompressedDataSize(Format fmt, int width, int height) {
|
|
|
| switch (fmt) {
|
| // These formats are 64 bits per 4x4 block.
|
| - case kR11_EAC_Format:
|
| case kLATC_Format:
|
| + case kR11_EAC_Format:
|
| + case kETC1_Format:
|
| encodedBlockSize = 8;
|
| break;
|
|
|
| @@ -110,6 +126,19 @@ bool CompressBufferToFormat(uint8_t* dst, const uint8_t* src, SkColorType srcCol
|
| }
|
| break;
|
|
|
| + case kRGB_565_SkColorType:
|
| + {
|
| + switch (format) {
|
| + case kETC1_Format:
|
| + proc = compress_etc1_565;
|
| + break;
|
| + default:
|
| + // Do nothing...
|
| + break;
|
| + }
|
| + }
|
| + break;
|
| +
|
| default:
|
| // Do nothing...
|
| break;
|
| @@ -179,9 +208,17 @@ bool DecompressBufferFromFormat(uint8_t* dst, int dstRowBytes, const uint8_t* sr
|
| DecompressR11EAC(dst, dstRowBytes, src, width, height);
|
| return true;
|
|
|
| +#ifndef SK_IGNORE_ETC1_SUPPORT
|
| + case kETC1_Format:
|
| + return 0 == etc1_decode_image(src, dst, width, height, 3, dstRowBytes);
|
| +#endif
|
| case kASTC_12x12_Format:
|
| // TODO(krajcevski) .. right now just fall through and return false.
|
| return false;
|
| +
|
| + default:
|
| + // Do nothing...
|
| + break;
|
| }
|
|
|
| return false;
|
|
|