Index: src/gpu/gl/GrGLCaps.cpp |
diff --git a/src/gpu/gl/GrGLCaps.cpp b/src/gpu/gl/GrGLCaps.cpp |
index f577e9d740398dc5ca53fec9379b2e7266f544db..6523e032335f30925587a34e51a6cbe868283f50 100644 |
--- a/src/gpu/gl/GrGLCaps.cpp |
+++ b/src/gpu/gl/GrGLCaps.cpp |
@@ -369,6 +369,8 @@ |
this->initConfigRenderableTable(ctxInfo); |
+ this->initCompressedTextureSupport(ctxInfo); |
+ |
return true; |
} |
@@ -456,6 +458,38 @@ |
fConfigRenderSupport[i][kYes_MSAA] = false; |
} |
} |
+} |
+ |
+void GrGLCaps::initCompressedTextureSupport(const GrGLContextInfo &ctxInfo) { |
+ GrGLStandard standard = ctxInfo.standard(); |
+ GrGLVersion version = ctxInfo.version(); |
+ |
+ // glCompressedTexImage2D is available on all OpenGL ES devices... |
+ // however, it is only available on standard OpenGL after version 1.3 |
+ if (kGL_GrGLStandard == standard && version < GR_GL_VER(1, 3)) { |
+ return; |
+ } |
+ |
+ // Check for ETC1 |
+ bool hasETC1 = false; |
+ |
+ // First check version for support |
+ if (kGL_GrGLStandard == standard) { |
+ hasETC1 = |
+ version >= GR_GL_VER(4, 3) || |
+ ctxInfo.hasExtension("GL_ARB_ES3_compatibility"); |
+ } else { |
+ hasETC1 = |
+ version >= GR_GL_VER(3, 0) || |
+ ctxInfo.hasExtension("GL_OES_compressed_ETC1_RGB8_texture") || |
+ // ETC2 is a superset of ETC1, so we can just check for that, too. |
+ (ctxInfo.hasExtension("GL_OES_compressed_ETC2_RGB8_texture") && |
+ ctxInfo.hasExtension("GL_OES_compressed_ETC2_RGBA8_texture")); |
+ } |
+ fCompressedFormatSupport[kETC1_GrCompressedFormat] = hasETC1; |
+ |
+ fCompressedFormatSupport[kETC2_GrCompressedFormat] = false; |
+ fCompressedFormatSupport[kDXT1_GrCompressedFormat] = false; |
} |
bool GrGLCaps::readPixelsSupported(const GrGLInterface* intf, |