From 0a58bd04d528ccf6cce440a0a9024fc8bf93720a Mon Sep 17 00:00:00 2001 From: Xaver Hugl Date: Thu, 7 Sep 2023 15:09:27 +0200 Subject: [PATCH] libkwineffects: don't query OpenGL extensions twice --- src/libkwineffects/glplatform.cpp | 28 +++++++--------------------- src/libkwineffects/glplatform.h | 1 - 2 files changed, 7 insertions(+), 22 deletions(-) diff --git a/src/libkwineffects/glplatform.cpp b/src/libkwineffects/glplatform.cpp index 730d1e7770..f865e2b566 100644 --- a/src/libkwineffects/glplatform.cpp +++ b/src/libkwineffects/glplatform.cpp @@ -736,20 +736,6 @@ void GLPlatform::detect(OpenGLPlatformInterface platformInterface) m_context = std::make_unique(); - if (!isGLES() && m_context->hasVersion(Version(3, 0))) { - int count; - glGetIntegerv(GL_NUM_EXTENSIONS, &count); - - for (int i = 0; i < count; i++) { - const char *name = (const char *)glGetStringi(GL_EXTENSIONS, i); - m_extensions.insert(name); - } - } else { - const QByteArray extensions = (const char *)glGetString(GL_EXTENSIONS); - QList extensionsList = extensions.split(' '); - m_extensions = {extensionsList.constBegin(), extensionsList.constEnd()}; - } - // Parse the Mesa version const auto versionTokens = m_context->openglVersionString().toByteArray().split(' '); const int mesaIndex = versionTokens.indexOf("Mesa"); @@ -761,20 +747,20 @@ void GLPlatform::detect(OpenGLPlatformInterface platformInterface) m_supportsGLSL = true; m_textureNPOT = true; } else { - m_supportsGLSL = (m_extensions.contains("GL_ARB_shader_objects") - && m_extensions.contains("GL_ARB_fragment_shader") - && m_extensions.contains("GL_ARB_vertex_shader")); + m_supportsGLSL = (m_context->hasOpenglExtension("GL_ARB_shader_objects") + && m_context->hasOpenglExtension("GL_ARB_fragment_shader") + && m_context->hasOpenglExtension("GL_ARB_vertex_shader")); - m_textureNPOT = m_extensions.contains("GL_ARB_texture_non_power_of_two"); + m_textureNPOT = m_context->hasOpenglExtension("GL_ARB_texture_non_power_of_two"); } if (!qEnvironmentVariableIsSet("KWIN_NO_TIMER_QUERY")) { if (isGLES()) { // 3.0 is required so query functions can be used without "EXT" suffix. // Timer queries are still not part of the core OpenGL ES specification. - m_supportsTimerQuery = glVersion() >= Version(3, 0) && m_extensions.contains("GL_EXT_disjoint_timer_query"); + m_supportsTimerQuery = glVersion() >= Version(3, 0) && m_context->hasOpenglExtension("GL_EXT_disjoint_timer_query"); } else { - m_supportsTimerQuery = glVersion() >= Version(3, 3) || m_extensions.contains("GL_ARB_timer_query"); + m_supportsTimerQuery = glVersion() >= Version(3, 3) || m_context->hasOpenglExtension("GL_ARB_timer_query"); } } @@ -789,7 +775,7 @@ void GLPlatform::detect(OpenGLPlatformInterface platformInterface) m_chipset = QByteArrayLiteral("Unknown"); m_preferBufferSubData = false; - m_packInvert = m_extensions.contains("GL_MESA_pack_invert"); + m_packInvert = m_context->hasOpenglExtension("GL_MESA_pack_invert"); // Mesa classic drivers // ==================================================== diff --git a/src/libkwineffects/glplatform.h b/src/libkwineffects/glplatform.h index bc388b41ce..21bf1c57e1 100644 --- a/src/libkwineffects/glplatform.h +++ b/src/libkwineffects/glplatform.h @@ -413,7 +413,6 @@ private: private: QByteArray m_glsl_version; QByteArrayView m_chipset; - QSet m_extensions; Driver m_driver; ChipClass m_chipClass; CompositingType m_recommendedCompositor;