diff options
Diffstat (limited to 'src/datavisualization/utils/qutils.h')
-rw-r--r-- | src/datavisualization/utils/qutils.h | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/src/datavisualization/utils/qutils.h b/src/datavisualization/utils/qutils.h index 22937cae..6bf995b7 100644 --- a/src/datavisualization/utils/qutils.h +++ b/src/datavisualization/utils/qutils.h @@ -24,12 +24,14 @@ #include <QtGui/QSurfaceFormat> #include <QtGui/QOpenGLContext> +#include <QtGui/QOpenGLFunctions> #include <QtGui/QOffscreenSurface> #include <QtCore/QCoreApplication> namespace QtDataVisualization { -inline static QSurfaceFormat qDefaultSurfaceFormat(bool antialias = true) +static inline QSurfaceFormat qDefaultSurfaceFormat(bool antialias = true) Q_DECL_UNUSED; +static inline QSurfaceFormat qDefaultSurfaceFormat(bool antialias) { bool isES = false; @@ -61,20 +63,23 @@ inline static QSurfaceFormat qDefaultSurfaceFormat(bool antialias = true) isES = ctx->isOpenGLES(); #endif - if (dummySurface) { - ctx->doneCurrent(); - delete ctx; - delete dummySurface; - } - #if (QT_VERSION >= QT_VERSION_CHECK(5, 4, 0)) // We support only ES2 emulation with software renderer for now - if (QCoreApplication::testAttribute(Qt::AA_UseSoftwareOpenGL)) { + const GLubyte *openGLVersion = ctx->functions()->glGetString(GL_VERSION); + QString versionStr = QString::fromLatin1((const char *)openGLVersion).toLower(); + if (versionStr.contains(QStringLiteral("mesa")) + || QCoreApplication::testAttribute(Qt::AA_UseSoftwareOpenGL)) { qWarning("Only OpenGL ES2 emulation is available for software rendering."); isES = true; } #endif + if (dummySurface) { + ctx->doneCurrent(); + delete ctx; + delete dummySurface; + } + if (isES) { // For ES2 only attributes surfaceFormat.setRedBufferSize(8); |