diff options
Diffstat (limited to 'dev-qt/qtwebengine/files/qtwebengine-5.11.1-nouveau-disable-gpu.patch')
-rw-r--r-- | dev-qt/qtwebengine/files/qtwebengine-5.11.1-nouveau-disable-gpu.patch | 98 |
1 files changed, 0 insertions, 98 deletions
diff --git a/dev-qt/qtwebengine/files/qtwebengine-5.11.1-nouveau-disable-gpu.patch b/dev-qt/qtwebengine/files/qtwebengine-5.11.1-nouveau-disable-gpu.patch deleted file mode 100644 index aaf3aae4..00000000 --- a/dev-qt/qtwebengine/files/qtwebengine-5.11.1-nouveau-disable-gpu.patch +++ /dev/null @@ -1,98 +0,0 @@ -From: Antonio Larrosa <alarrosa@suse.com> -Subject: Disable GPU when using nouveau or running on wayland -References: boo#1005323, boo#1060990 - -Qt WebEngine uses multi-threaded OpenGL, which nouveau does not support. -It also crashes when running on wayland, the cause is not yet known. -Work around these issues by not doing GPU-accelerated rendering in such -cases. - -Index: qtwebengine-everywhere-src-5.11.0/src/core/web_engine_context.cpp -=================================================================== ---- qtwebengine-everywhere-src-5.11.0.orig/src/core/web_engine_context.cpp -+++ qtwebengine-everywhere-src-5.11.0/src/core/web_engine_context.cpp -@@ -100,6 +100,7 @@ - #include <QOffscreenSurface> - #ifndef QT_NO_OPENGL - # include <QOpenGLContext> -+# include <QOpenGLFunctions> - #endif - #include <QQuickWindow> - #include <QStringList> -@@ -178,6 +179,39 @@ void dummyGetPluginCallback(const std::v - } - #endif - -+#ifndef QT_NO_OPENGL -+QString openGLVendor() -+{ -+ QString vendor; -+ -+ QOpenGLContext *oldContext = QOpenGLContext::currentContext(); -+ QSurface *oldSurface = 0; -+ if (oldContext) -+ oldSurface = oldContext->surface(); -+ -+ QScopedPointer<QOffscreenSurface> surface( new QOffscreenSurface ); -+ surface->create(); -+ QOpenGLContext context; -+ if (!context.create()) { -+ qDebug() << "Error creating openGL context"; -+ } -+ else if (!context.makeCurrent(surface.data())) { -+ qDebug() << "Error making openGL context current context"; -+ } else { -+ const GLubyte *p; -+ QOpenGLFunctions *f = context.functions(); -+ if ((p = f->glGetString(GL_VENDOR))) -+ vendor = QString::fromLatin1(reinterpret_cast<const char *>(p)); -+ } -+ -+ context.doneCurrent(); -+ if (oldContext && oldSurface) -+ oldContext->makeCurrent(oldSurface); -+ -+ return vendor; -+} -+#endif -+ - } // namespace - - namespace QtWebEngineCore { -@@ -414,6 +448,27 @@ WebEngineContext::WebEngineContext() - const char *glType = 0; - #ifndef QT_NO_OPENGL - -+ bool disableGpu = qEnvironmentVariableIsSet("QT_WEBENGINE_DISABLE_GPU"); -+ -+ if (!qEnvironmentVariableIsSet("QT_WEBENGINE_DISABLE_WAYLAND_WORKAROUND") && platform.startsWith("wayland", Qt::CaseInsensitive)) -+ { -+ qWarning() << "Running on wayland. Qt WebEngine will disable usage of the GPU.\n" -+ "Note: you can set the QT_WEBENGINE_DISABLE_WAYLAND_WORKAROUND\n" -+ "environment variable before running this application, but this is \n" -+ "not recommended since this usually causes applications to crash."; -+ disableGpu = true; -+ } -+ -+ if (!qEnvironmentVariableIsSet("QT_WEBENGINE_DISABLE_NOUVEAU_WORKAROUND") && openGLVendor() == QStringLiteral("nouveau")) -+ { -+ qWarning() << "Nouveau openGL driver detected. Qt WebEngine will disable usage of the GPU.\n" -+ "Note: you can set the QT_WEBENGINE_DISABLE_NOUVEAU_WORKAROUND\n" -+ "environment variable before running this application, but this is \n" -+ "not recommended since this usually causes applications to crash as\n" -+ "Nouveau openGL drivers don't support multithreaded rendering"; -+ disableGpu = true; -+ } -+ - bool tryGL = - !usingANGLE() - && (!usingSoftwareDynamicGL() -@@ -424,7 +479,7 @@ WebEngineContext::WebEngineContext() - || enableWebGLSoftwareRendering - #endif - ) -- && !usingQtQuick2DRenderer(); -+ && !usingQtQuick2DRenderer() && !disableGpu; - - if (tryGL) { - if (qt_gl_global_share_context() && qt_gl_global_share_context()->isValid()) { |