summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Bruhin <git@the-compiler.org>2018-07-19 00:28:12 +0200
committerFlorian Bruhin <git@the-compiler.org>2018-08-15 10:34:37 +0200
commitcdaf15624412b2534482507653a00b51d16e8f15 (patch)
tree8b448476c0cb5e8de0fa5e0bef5a3e3c5865e0a9
parent93f40116b2e4be2b908b7c37ac00f43a6f8aade9 (diff)
downloadqutebrowser-cdaf15624412b2534482507653a00b51d16e8f15.tar.gz
qutebrowser-cdaf15624412b2534482507653a00b51d16e8f15.zip
Fix checks for Nouveau workaround
(cherry picked from commit 8a748741ba3fa3214a1e4c7f3c250ff275392102)
-rw-r--r--qutebrowser/config/configinit.py2
-rw-r--r--qutebrowser/misc/backendproblem.py11
-rw-r--r--tests/unit/config/test_configinit.py2
3 files changed, 14 insertions, 1 deletions
diff --git a/qutebrowser/config/configinit.py b/qutebrowser/config/configinit.py
index c4418a17c..99a3ff91c 100644
--- a/qutebrowser/config/configinit.py
+++ b/qutebrowser/config/configinit.py
@@ -89,6 +89,8 @@ def _init_envvars():
os.environ['QT_XCB_FORCE_SOFTWARE_OPENGL'] = '1'
elif software_rendering == 'qt-quick':
os.environ['QT_QUICK_BACKEND'] = 'software'
+ elif software_rendering == 'chromium':
+ os.environ['QT_WEBENGINE_DISABLE_NOUVEAU_WORKAROUND'] = '1'
if config.val.qt.force_platform is not None:
os.environ['QT_QPA_PLATFORM'] = config.val.qt.force_platform
diff --git a/qutebrowser/misc/backendproblem.py b/qutebrowser/misc/backendproblem.py
index b2d6f71bb..363f7f23c 100644
--- a/qutebrowser/misc/backendproblem.py
+++ b/qutebrowser/misc/backendproblem.py
@@ -172,6 +172,11 @@ def _nvidia_shader_workaround():
def _handle_nouveau_graphics():
+ """Force software rendering when using the Nouveau driver.
+
+ WORKAROUND for https://bugreports.qt.io/browse/QTBUG-41242
+ Should be fixed in Qt 5.10 via https://codereview.qt-project.org/#/c/208664/
+ """
assert objects.backend == usertypes.Backend.QtWebEngine, objects.backend
if os.environ.get('QUTE_SKIP_NOUVEAU_CHECK'):
@@ -181,7 +186,11 @@ def _handle_nouveau_graphics():
return
if (os.environ.get('LIBGL_ALWAYS_SOFTWARE') == '1' or
- 'QT_XCB_FORCE_SOFTWARE_OPENGL' in os.environ):
+ # qt.force_software_rendering = 'software-opengl'
+ 'QT_XCB_FORCE_SOFTWARE_OPENGL' in os.environ or
+ # qt.force_software_rendering = 'chromium', also see:
+ # https://build.opensuse.org/package/view_file/openSUSE:Factory/libqt5-qtwebengine/disable-gpu-when-using-nouveau-boo-1005323.diff?expand=1
+ 'QT_WEBENGINE_DISABLE_NOUVEAU_WORKAROUND' in os.environ):
return
button = _Button("Force software rendering", 'qt.force_software_rendering',
diff --git a/tests/unit/config/test_configinit.py b/tests/unit/config/test_configinit.py
index cb32d3761..56f2a3c90 100644
--- a/tests/unit/config/test_configinit.py
+++ b/tests/unit/config/test_configinit.py
@@ -293,6 +293,8 @@ class TestEarlyInit:
'QT_XCB_FORCE_SOFTWARE_OPENGL', '1'),
('qt.force_software_rendering', 'qt-quick',
'QT_QUICK_BACKEND', 'software'),
+ ('qt.force_software_rendering', 'chromium',
+ 'QT_WEBENGINE_DISABLE_NOUVEAU_WORKAROUND', '1'),
('qt.force_platform', 'toaster', 'QT_QPA_PLATFORM', 'toaster'),
('qt.highdpi', True, 'QT_AUTO_SCREEN_SCALE_FACTOR', '1'),
('window.hide_decoration', True,