Bug 386142 - Touch docker (or any QML-based dockers) requires working OpenGL implementation
Summary: Touch docker (or any QML-based dockers) requires working OpenGL implementation
Status: RESOLVED FIXED
Alias: None
Product: krita
Classification: Applications
Component: Dockers (other bugs)
Version First Reported In: git master (please specify the git hash!)
Platform: Microsoft Windows Microsoft Windows
: NOR normal
Target Milestone: ---
Assignee: Krita Bugs
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2017-10-24 15:31 UTC by Alvin Wong
Modified: 2017-12-03 10:59 UTC (History)
1 user (show)

See Also:
Latest Commit:
Version Fixed/Implemented In:
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Alvin Wong 2017-10-24 15:31:01 UTC
This is kind of niche because I think this can only happen on Windows 7 when the graphics driver isn't installed or when running over rdp.

For some reason the software D3D renderer used via ANGLE just refuses to work under Windows 7, so the main window can't be composited at all when the touch docker is enabled.

A solution is to bundle the `opengl32sw.dll` Gallium llvmpipe driver that comes with official releases of Qt (https://download.qt.io/development_releases/prebuilt/llvmpipe/windows/), but then it will need to be handled from the Windows OpenGL handling code in addition to the existing desktop OpenGL and ANGLE handling, which will make the code even more complex. Also means additional packaging steps.
Comment 1 Halla Rempt 2017-10-24 15:40:00 UTC
Maybe we should just disable it on Windows 7 altogether.
Comment 2 Alvin Wong 2017-10-24 15:43:12 UTC
(In reply to Boudewijn Rempt from comment #1)
> Maybe we should just disable it on Windows 7 altogether.

You mean the dockers? They do work if either OpenGL or ANGLE is working properly, which is like 99% of the time.
Comment 3 Halla Rempt 2017-10-24 15:49:41 UTC
Yes, I meant the touch docker. It's mostly useful for people with windows 10 2:1 or tablet systems anyway.
Comment 4 Alvin Wong 2017-11-03 16:26:45 UTC
I have an idea... maybe we can have it fall back to direct3d 9 with ANGLE for rendering the QML stuff? The OpenGL canvas can be kept disabled. Not sure if this will really work though.
Comment 5 Halla Rempt 2017-11-03 18:41:14 UTC
It actually should fallback to Angle automatically, if Qt is built with Angle
Comment 6 Halla Rempt 2017-11-23 10:18:14 UTC
Or we could build Qt with the qtquick software renderer...
Comment 7 Alvin Wong 2017-12-02 18:52:13 UTC
Looks like the specific bug with ANGLE I had on Windows 7 is fixed upstream: https://bugreports.qt.io/browse/QTBUG-64657

I will update to Qt 5.9.3 and add the relevant patch from it and then check if it works.
Comment 8 Alvin Wong 2017-12-03 10:59:49 UTC
Git commit 9587b062ab0e6a66c51611e8f0b93b220b4b7a2f by Alvin Wong.
Committed on 03/12/2017 at 10:48.
Pushed by alvinwong into branch 'master'.

Update Windows ext_qt to 5.9.3 and add a patch

The additional ext_qt patch fixes an issue with ANGLE WARP (software
D3D11 implementation). With this patch, ANGLE can be properly enabled on
Windows 7 systems with no proper graphics drivers installed, or when
running over an RDP connection. Similarly, QML-based dockers can now
work properly.

M  +3    -3    3rdparty/ext_qt/CMakeLists.txt
D  +0    -52   3rdparty/ext_qt/QTBUG-63654-fonts-too-small.patch
A  +50   -0    3rdparty/ext_qt/gerrit-212811_qtbase-angle-d3d11-warp-crash-fix.patch

https://commits.kde.org/krita/9587b062ab0e6a66c51611e8f0b93b220b4b7a2f