Index: third_party/ktx/ktx.cpp |
diff --git a/third_party/ktx/ktx.cpp b/third_party/ktx/ktx.cpp |
index a05498b7e80b27ee4fc1f19263910976258599a7..ebcc5eb18747b267caba91bdaaaeb9424fe0a023 100644 |
--- a/third_party/ktx/ktx.cpp |
+++ b/third_party/ktx/ktx.cpp |
@@ -12,9 +12,27 @@ |
#include "SkEndian.h" |
#include "gl/GrGLDefines.h" |
+#include "GrConfig.h" |
#include "etc1.h" |
+static inline uint32_t compressed_fmt_to_gl_define(SkTextureCompressor::Format fmt) { |
+ static const uint32_t kGLDefineMap[SkTextureCompressor::kFormatCnt] = { |
+ GR_GL_COMPRESSED_LUMINANCE_LATC1, // kLATC_Format |
+ GR_GL_COMPRESSED_R11, // kR11_EAC_Format |
+ GR_GL_COMPRESSED_RGB8_ETC1, // kETC1_Format |
+ GR_GL_COMPRESSED_RGBA_ASTC_12x12, // kASTC_12x12_Format |
+ }; |
+ |
+ GR_STATIC_ASSERT(0 == SkTextureCompressor::kLATC_Format); |
+ GR_STATIC_ASSERT(1 == SkTextureCompressor::kR11_EAC_Format); |
+ GR_STATIC_ASSERT(2 == SkTextureCompressor::kETC1_Format); |
+ GR_STATIC_ASSERT(3 == SkTextureCompressor::kASTC_12x12_Format); |
+ GR_STATIC_ASSERT(SK_ARRAY_COUNT(kGLDefineMap) == SkTextureCompressor::kFormatCnt); |
+ |
+ return kGLDefineMap[fmt]; |
+} |
+ |
#define KTX_FILE_IDENTIFIER_SIZE 12 |
static const uint8_t KTX_FILE_IDENTIFIER[KTX_FILE_IDENTIFIER_SIZE] = { |
0xAB, 0x4B, 0x54, 0x58, 0x20, 0x31, 0x31, 0xBB, 0x0D, 0x0A, 0x1A, 0x0A |
@@ -123,8 +141,19 @@ SkString SkKTXFile::getValueForKey(const SkString& key) const { |
return SkString(); |
} |
-bool SkKTXFile::isETC1() const { |
- return this->valid() && GR_GL_COMPRESSED_RGB8_ETC1 == fHeader.fGLInternalFormat; |
+bool SkKTXFile::isCompressedFormat(SkTextureCompressor::Format fmt) const { |
+ if (!this->valid()) { |
+ return false; |
+ } |
+ |
+ // This has many aliases |
+ bool isFmt = false; |
+ if (fmt == SkTextureCompressor::kLATC_Format) { |
+ isFmt = GR_GL_COMPRESSED_RED_RGTC1 == fHeader.fGLInternalFormat || |
+ GR_GL_COMPRESSED_3DC_X == fHeader.fGLInternalFormat; |
+ } |
+ |
+ return isFmt || compressed_fmt_to_gl_define(fmt) == fHeader.fGLInternalFormat; |
} |
bool SkKTXFile::isRGBA8() const { |