[Qtwebengine] QtWebEngine + ANGLE

Michael Bruning Michael.Bruning at qt.io
Wed Aug 8 10:11:06 CEST 2018

Hi Kevin,

> On 8. Aug 2018, at 04:54, Kevin Ushey <kevinushey at gmail.com> wrote:
> Hi all,
> If I'm understanding correctly, QtWebEngine doesn't support ANGLE, as per e.g.
>     http://lists.qt-project.org/pipermail/qtwebengine/2017-August/000461.html
>     https://wiki.qt.io/QtWebEngine/Rendering#Rendering_without_the_GPU

You can use ANGLE with Qt WebEngine on Windows, it just comes with some limitations:
   - we have to turn hardware acceleration off for the Chromium part
   - WebGL does not work

This is due to the fact that when running WebEngine, we usually have two threads accessing the GPU, one being the Qt SceneGraph thread and the other being Chromium’s GPU thread. ANGLE does not handle multithreaded access well (e.g. it may crash or render some weird artefacts) and for that reason, we switch the Chromium part to not use the GPU. The Qt SceneGraph will still use HW acceleration, but Chromium’s content will be rendered in SW prior to being uploaded to the GPU by the SceneGraph.

> For background: we have a number of users on Windows with Intel integrated graphics cards, and when these users attempt to use the default desktop OpenGL backend, they often see crashes (e.g. when attempting to load the associated DLL ig9icd64.dll) or in other cases weird rendering artifacts (for example, where the page contents are rendered offset from the 'true' location on the screen). In most cases, upgrading the graphics card drivers resolves the issue, but many users are unable or unwilling to do this. Switching to the software renderer is also a viable workaround for these users, but application performance then suffers. This is especially true for laptops with high DPI displays.
ANGLE can be used to work around a lot of this driver trouble. If you can live with the limitations mentioned above, switching to ANGLE on Windows may be the way to go for you.

> The Chromium team in a 2015 bug report (https://bugs.chromium.org/p/chromium/issues/detail?id=561542) suggests that '--use-gl=desktop' is unmaintained, stating:
>     I'd suggest --use-angle=gl instead. That code path's going to be supported in the future but --use-gl=desktop on Windows is effectively unmaintained.
> and IIUC Chrome by default uses ANGLE by default for rendering (hence making this the more tested rendering pipeline).
> Are there any plans to bring support for ANGLE to QtWebEngine? Am I correct that switching to ANGLE could be a panacea for this family of rendering issues? Or is there some other way that I could further configure the default desktop OpenGL renderer in Qt / QtWebEngine / Chromium that might help alleviate these sorts of issues while still using hardware accelerated rendering?
> Thanks,
> Kevin

Best regards,

Michael Brüning
Senior Software Engineer

The Qt Company GmbH
Rudower Chaussee 13
D-12489 Berlin

Geschäftsführer: Mika Pälsi,
Juha Varelius, Mika Harjuaho
Sitz der Gesellschaft: Berlin,
Registergericht: Amtsgericht
Charlottenburg, HRB 144331 B

More information about the QtWebEngine mailing list