diff options
Diffstat (limited to 'src/gpu/gl')
-rw-r--r-- | src/gpu/gl/GrGLCaps.cpp | 34 | ||||
-rw-r--r-- | src/gpu/gl/GrGLCaps.h | 2 |
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; |