aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/gpu/gl
diff options
context:
space:
mode:
Diffstat (limited to 'src/gpu/gl')
-rw-r--r--src/gpu/gl/GrGLCaps.cpp34
-rw-r--r--src/gpu/gl/GrGLCaps.h2
2 files changed, 36 insertions, 0 deletions
diff --git a/src/gpu/gl/GrGLCaps.cpp b/src/gpu/gl/GrGLCaps.cpp
index f577e9d740..6523e03233 100644
--- a/src/gpu/gl/GrGLCaps.cpp
+++ b/src/gpu/gl/GrGLCaps.cpp
@@ -369,6 +369,8 @@ bool GrGLCaps::init(const GrGLContextInfo& ctxInfo, const GrGLInterface* gli) {
this->initConfigRenderableTable(ctxInfo);
+ this->initCompressedTextureSupport(ctxInfo);
+
return true;
}
@@ -458,6 +460,38 @@ void GrGLCaps::initConfigRenderableTable(const GrGLContextInfo& ctxInfo) {
}
}
+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,
GrGLenum format,
GrGLenum type) const {
diff --git a/src/gpu/gl/GrGLCaps.h b/src/gpu/gl/GrGLCaps.h
index ea0f41245d..c2d808e4a5 100644
--- a/src/gpu/gl/GrGLCaps.h
+++ b/src/gpu/gl/GrGLCaps.h
@@ -313,6 +313,8 @@ private:
// This must be called after initFSAASupport().
void initConfigRenderableTable(const GrGLContextInfo&);
+ void initCompressedTextureSupport(const GrGLContextInfo &);
+
// tracks configs that have been verified to pass the FBO completeness when
// used as a color attachment
VerifiedColorConfigs fVerifiedColorConfigs;