summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
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.patch98
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 aaf3aae462ab..000000000000
--- 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()) {