19static QSet<QByteArray> getExtensions(OpenGlContext *context)
22 if (!context->isOpenglES() && context->hasVersion(Version(3, 0))) {
24 glGetIntegerv(GL_NUM_EXTENSIONS, &count);
26 for (
int i = 0; i < count; i++) {
27 const char *name = (
const char *)glGetStringi(GL_EXTENSIONS, i);
31 const QByteArray extensions = (
const char *)glGetString(GL_EXTENSIONS);
32 QList<QByteArray> extensionsList = extensions.split(
' ');
33 ret = {extensionsList.constBegin(), extensionsList.constEnd()};
39 : m_versionString((const char *)glGetString(GL_VERSION))
40 , m_version(
Version::parseString(m_versionString))
41 , m_vendor((const char *)glGetString(GL_VENDOR))
42 , m_renderer((const char *)glGetString(GL_RENDERER))
43 , m_isOpenglES(m_versionString.startsWith(
"OpenGL ES"))
44 , m_extensions(getExtensions(this))
45 , m_supportsTimerQueries(checkTimerQuerySupport())
51 if (qEnvironmentVariableIsSet(
"KWIN_NO_TIMER_QUERY")) {
96 return string == name;
115 return supportsGLSL && supportsNonPowerOfTwoTextures && supports3DTextures;
Version openglVersion() const
bool supportsTimerQueries() const
bool checkTimerQuerySupport() const
bool isSoftwareRenderer() const
const bool m_supportsTimerQueries
QByteArrayView renderer() const
bool checkSupported() const
const QSet< QByteArray > m_extensions
QByteArrayView openglVersionString() const
const QByteArrayView m_vendor
const QByteArrayView m_renderer
QByteArrayView vendor() const
bool hasVersion(const Version &version) const
bool hasOpenglExtension(QByteArrayView name) const
const QByteArrayView m_versionString