diff options
author | Florian Bruhin <git@the-compiler.org> | 2018-07-19 00:28:12 +0200 |
---|---|---|
committer | Florian Bruhin <git@the-compiler.org> | 2018-08-15 10:34:37 +0200 |
commit | cdaf15624412b2534482507653a00b51d16e8f15 (patch) | |
tree | 8b448476c0cb5e8de0fa5e0bef5a3e3c5865e0a9 | |
parent | 93f40116b2e4be2b908b7c37ac00f43a6f8aade9 (diff) | |
download | qutebrowser-cdaf15624412b2534482507653a00b51d16e8f15.tar.gz qutebrowser-cdaf15624412b2534482507653a00b51d16e8f15.zip |
Fix checks for Nouveau workaround
(cherry picked from commit 8a748741ba3fa3214a1e4c7f3c250ff275392102)
-rw-r--r-- | qutebrowser/config/configinit.py | 2 | ||||
-rw-r--r-- | qutebrowser/misc/backendproblem.py | 11 | ||||
-rw-r--r-- | tests/unit/config/test_configinit.py | 2 |
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, |