[Interest] How to make WARP as fallback after d3d11 fails

Andy asmaloney at gmail.com
Tue Mar 21 14:56:56 CET 2017


Kai:

Thank you for pointing at this! I think this might help explain my
unanswered question towards the end of last year (21 Dec) about seeing
machines in the wild that fail to create any OpenGL context at all. I had
assumed there was always a way to get _something_.

If I read it correctly, there are currently three cases in the default.json
which might not return a context at all since they fall back to the
software rasterizer:

- "Intel Q965/Q963 - GMA 3000 has insufficient support of opengl and
directx" (disables both ANGLE & desktop)
- "Intel GMA 3150 (QTBUG-43243), Mobile Intel 945GM (QTBUG-47435) crash"
(disables both ANGLE & desktop)
- "AMD FirePro V5900 driver causes crashes in Direct3D on Windows." (if
testDesktopGL() fails)

So if the software rasterizer fails or is not available in these cases,
QGLWidget::makeCurrent() followed by QOpenGLContext::currentContext() will
return nullptr , correct?

Aside from essentially duplicating
QWindowsOpenGLTester::detectSupportedRenderers, is there a way for me to
access the blacklist to be able to inform the user there's an issue with
their specific card? I'm not seeing a public API to find out this info.

Thanks!


---
Andy Maloney  //  https://asmaloney.com
twitter ~ @asmaloney <https://twitter.com/asmaloney>


On Tue, Mar 21, 2017 at 4:09 AM, Kai Koehne <Kai.Koehne at qt.io> wrote:

> > -----Original Message-----
> > From: Interest [mailto:interest-bounces+kai.koehne=qt.io at qt-project.org]
> > On Behalf Of Yuchen Deng
> > Sent: Tuesday, March 21, 2017 7:14 AM
> > To: interest at qt-project.org
> > Subject: [Interest] How to make WARP as fallback after d3d11 fails
> > hi, everyone, I have a question about OpenGL support on Windows. How can
> > I do make WARP as fallback after d3d11 fails. for now it's depends mesa's
> > opengl32sw if angle's d3d11 fail.
>
> Hi!
>
> The code that implements this logic is in
>
> qtbase\src\plugins\platforms\windows\qwindowsopengltester.cpp
>
> ook at QWindowsOpenGLTester::requestedRenderer() and
> QWindowsOpenGLTester::detectSupportedRenderers()
>
> https://code.woboq.org/qt5/qtbase/src/plugins/platforms/
> windows/qwindowsopengltester.cpp.html#_ZN20QWindowsOpenGLTester17requ
> estedRendererEv
>
> > I know to change the environment variable `set QT_OPENGL=angle` and `set
> > QT_ANGLE_PLATFORM=warp` can do that always, but I wanna when d3d11
> > fails then set WARP as fallback not depends any environment variable
> setup.
>
> QWindowsOpenGLTester::detectSupportedRenderers() defines the order in
> which the different OpenGL ES renderers on Windows are evaluated. It also
> shows that there is a blacklist feature that disables certain types. So, if
> you blacklist e.g. D3D9 Qt should directly fall back to D3d11Warp.
>
> https://code.woboq.org/qt5/qtbase/src/plugins/platforms/
> windows/qwindowsopengltester.cpp.html#_ZN20QWindowsOpenGLTester24dete
> ctSupportedRenderersERK14GpuDescriptionb
>
> Hope this helps,
>
> Kai
> _______________________________________________
> Interest mailing list
> Interest at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/interest
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20170321/bc5df351/attachment.html>


More information about the Interest mailing list