Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(168)

Unified Diff: third_party/ktx/ktx.cpp

Issue 440783004: Add support for all compressed formats in KTX file format (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Fix boolean stuff Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « third_party/ktx/ktx.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 {
« no previous file with comments | « third_party/ktx/ktx.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698