diff --git a/filament/backend/src/opengl/OpenGLContext.cpp b/filament/backend/src/opengl/OpenGLContext.cpp index 3741fffe82..ad92525ad3 100644 --- a/filament/backend/src/opengl/OpenGLContext.cpp +++ b/filament/backend/src/opengl/OpenGLContext.cpp @@ -262,8 +262,9 @@ void OpenGLContext::initExtensionsGLES(GLint major, GLint minor, ExtentionSet co ext.QCOM_tiled_rendering = hasExtension(exts, "GL_QCOM_tiled_rendering"); ext.EXT_texture_compression_s3tc = hasExtension(exts, "GL_EXT_texture_compression_s3tc"); ext.EXT_texture_compression_s3tc_srgb = hasExtension(exts, "GL_EXT_texture_compression_s3tc_srgb"); - ext.WEBGL_texture_compression_s3tc = hasExtension(exts, "WEBGL_compressed_texture_s3tc"); - ext.WEBGL_texture_compression_s3tc_srgb = hasExtension(exts, "WEBGL_compressed_texture_s3tc_srgb"); + ext.WEBGL_compressed_texture_s3tc = hasExtension(exts, "WEBGL_compressed_texture_s3tc"); + ext.WEBGL_compressed_texture_s3tc_srgb = hasExtension(exts, "WEBGL_compressed_texture_s3tc_srgb"); + ext.WEBGL_compressed_texture_etc = hasExtension(exts, "WEBGL_compressed_texture_etc"); // ES 3.2 implies EXT_color_buffer_float if (major >= 3 && minor >= 2) { ext.EXT_color_buffer_float = true; diff --git a/filament/backend/src/opengl/OpenGLContext.h b/filament/backend/src/opengl/OpenGLContext.h index 47a55cce97..48f801cbb0 100644 --- a/filament/backend/src/opengl/OpenGLContext.h +++ b/filament/backend/src/opengl/OpenGLContext.h @@ -147,8 +147,9 @@ public: bool GOOGLE_cpp_style_line_directive = false; bool EXT_texture_compression_s3tc = false; bool EXT_texture_compression_s3tc_srgb = false; - bool WEBGL_texture_compression_s3tc = false; - bool WEBGL_texture_compression_s3tc_srgb = false; + bool WEBGL_compressed_texture_s3tc = false; + bool WEBGL_compressed_texture_s3tc_srgb = false; + bool WEBGL_compressed_texture_etc = false; } ext; struct { diff --git a/filament/backend/src/opengl/OpenGLDriver.cpp b/filament/backend/src/opengl/OpenGLDriver.cpp index 5fc18caf90..fd6f396173 100644 --- a/filament/backend/src/opengl/OpenGLDriver.cpp +++ b/filament/backend/src/opengl/OpenGLDriver.cpp @@ -1440,13 +1440,18 @@ FenceStatus OpenGLDriver::wait(Handle fh, uint64_t timeout) { bool OpenGLDriver::isTextureFormatSupported(TextureFormat format) { const auto& ext = mContext.ext; if (isETC2Compression(format)) { - return ext.EXT_texture_compression_etc2; + return ext.EXT_texture_compression_etc2 || + ext.WEBGL_compressed_texture_etc; // WEBGL specific, apparently contains ETC2 } if (isS3TCSRGBCompression(format)) { - return ext.EXT_texture_compression_s3tc_srgb || ext.WEBGL_texture_compression_s3tc_srgb; + // see https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_sRGB.txt + return ext.WEBGL_compressed_texture_s3tc_srgb || // this is WEBGL specific + ext.EXT_texture_compression_s3tc_srgb || // this is ES specific + (ext.EXT_texture_compression_s3tc && ext.EXT_texture_sRGB); } if (isS3TCCompression(format)) { - return ext.EXT_texture_compression_s3tc || ext.WEBGL_texture_compression_s3tc; + return ext.EXT_texture_compression_s3tc || // this is ES specific + ext.WEBGL_compressed_texture_s3tc; // this is WEBGL specific } return getInternalFormat(format) != 0; }