Add support for all compressed formats in KTX file format
R=robertphillips@google.com
Author: krajcevski@google.com
Review URL: https://codereview.chromium.org/440783004
diff --git a/src/gpu/SkGr.cpp b/src/gpu/SkGr.cpp
index 5c0464d..0a45100 100644
--- a/src/gpu/SkGr.cpp
+++ b/src/gpu/SkGr.cpp
@@ -11,6 +11,7 @@
#include "SkData.h"
#include "SkMessageBus.h"
#include "SkPixelRef.h"
+#include "SkTextureCompressor.h"
#include "GrResourceCache.h"
#include "GrGpu.h"
#include "effects/GrDitherEffect.h"
@@ -165,7 +166,7 @@
SkKTXFile ktx(data);
// Is it actually an ETC1 texture?
- if (!ktx.isETC1()) {
+ if (!ktx.isCompressedFormat(SkTextureCompressor::kETC1_Format)) {
return NULL;
}
diff --git a/src/images/SkImageDecoder_ktx.cpp b/src/images/SkImageDecoder_ktx.cpp
index 058ab72..c06450c 100644
--- a/src/images/SkImageDecoder_ktx.cpp
+++ b/src/images/SkImageDecoder_ktx.cpp
@@ -105,7 +105,7 @@
// Lock the pixels, since we're about to write to them...
SkAutoLockPixels alp(*bm);
- if (ktxFile.isETC1()) {
+ if (ktxFile.isCompressedFormat(SkTextureCompressor::kETC1_Format)) {
if (!sampler.begin(bm, SkScaledBitmapSampler::kRGB, *this)) {
return false;
}
@@ -113,11 +113,12 @@
// ETC1 Data is encoded as RGB pixels, so we should extract it as such
int nPixels = width * height;
SkAutoMalloc outRGBData(nPixels * 3);
- etc1_byte *outRGBDataPtr = reinterpret_cast<etc1_byte *>(outRGBData.get());
+ uint8_t *outRGBDataPtr = reinterpret_cast<uint8_t *>(outRGBData.get());
// Decode ETC1
- const etc1_byte *buf = reinterpret_cast<const etc1_byte *>(ktxFile.pixelData());
- if (etc1_decode_image(buf, outRGBDataPtr, width, height, 3, width*3)) {
+ const uint8_t *buf = reinterpret_cast<const uint8_t *>(ktxFile.pixelData());
+ if (!SkTextureCompressor::DecompressBufferFromFormat(
+ outRGBDataPtr, width*3, buf, width, height, SkTextureCompressor::kETC1_Format)) {
return false;
}
diff --git a/src/utils/SkTextureCompressor.h b/src/utils/SkTextureCompressor.h
index 4254ae7..e44e7b3 100644
--- a/src/utils/SkTextureCompressor.h
+++ b/src/utils/SkTextureCompressor.h
@@ -9,9 +9,9 @@
#define SkTextureCompressor_DEFINED
#include "SkImageInfo.h"
-#include "SkBlitter.h"
class SkBitmap;
+class SkBlitter;
class SkData;
namespace SkTextureCompressor {