Improve s3tc_srgb detection on desktop

Fixes #4336
This commit is contained in:
Mathias Agopian
2021-07-19 23:22:12 -07:00
committed by Mathias Agopian
parent a3cf2ee61a
commit fc32fa3a78
3 changed files with 14 additions and 7 deletions
@@ -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;
+3 -2
View File
@@ -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 {
+8 -3
View File
@@ -1440,13 +1440,18 @@ FenceStatus OpenGLDriver::wait(Handle<HwFence> 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;
}