diff --git a/src/platform/qt/DisplayGL.cpp b/src/platform/qt/DisplayGL.cpp index d949eb016..3736e34e0 100644 --- a/src/platform/qt/DisplayGL.cpp +++ b/src/platform/qt/DisplayGL.cpp @@ -11,6 +11,7 @@ #include #include #include +#include #include #include #include @@ -125,7 +126,22 @@ bool DisplayGL::supportsFormat(const QSurfaceFormat& format) { context.format().profile() == QSurfaceFormat::CompatibilityProfile || context.format().testOption(QSurfaceFormat::DeprecatedFunctions))) { // Supports the old stuff - s_supports[format] = true; + QOffscreenSurface surface; + surface.create(); + if (!context.makeCurrent(&surface)) { + s_supports[format] = false; + return false; + } +#ifdef Q_OS_WIN + QLatin1String renderer(reinterpret_cast(context.functions()->glGetString(GL_RENDERER))); + if (renderer == "GDI Generic") { + // Windows' software OpenGL 1.1 implementation is not sufficient + s_supports[format] = false; + return false; + } +#endif + s_supports[format] = context,hasExtension("GL_EXT_blend_color"); // Core as of 1.2 + context.doneCurrent(); } else if (!context.isOpenGLES() && format.version() >= qMakePair(2, 1) && foundVersion < qMakePair(3, 0) && foundVersion >= qMakePair(2, 1)) { // Weird edge case we support if ARB_framebuffer_object is present QOffscreenSurface surface;