Browse Source

Platform: update docs about the EGL enumeration failing bug.

It was actually a problem in glvnd, and got fixed in 1.3.3, so I don't
need to do this env var gymnastic anymore.
pull/518/head
Vladimír Vondruš 5 years ago
parent
commit
d03cc34385
  1. 21
      src/Magnum/Platform/WindowlessEglApplication.h

21
src/Magnum/Platform/WindowlessEglApplication.h

@ -556,10 +556,8 @@ same can be also specified via via @ref Configuration::setCudaDevice().
@par No EGL devices found @par No EGL devices found
@parblock @parblock
Systems running Mesa 19.2 (which has the above extensions) that also have With GLVND versions 1.3.2 and older, EGL context creation may fail with the
`libEGL_nvidia.so` installed (for example as a CUDA dependency) may fail following error (with additional output produced when the `--magnum-gpu-validation`
to create the context with the following error (with additional output
produced when the `--magnum-gpu-validation`
@ref GL-Context-usage-command-line "command-line option" is enabled): @ref GL-Context-usage-command-line "command-line option" is enabled):
@m_class{m-console-wrap} @m_class{m-console-wrap}
@ -570,12 +568,15 @@ eglQueryDevicesEXT(): EGL_BAD_ALLOC error: In function eglQueryDevicesEXT(), bac
Platform::WindowlessEglApplication::tryCreateContext(): no EGL devices found Platform::WindowlessEglApplication::tryCreateContext(): no EGL devices found
@endcode @endcode
This is due to the NVidia's EGL implementation failing to enumerate devices This is due to some driver implementations failing to enumerate devices (for
(because there aren't any), which then causes the GLVND wrapper to stop example when the system has NVidia drivers installed as a dependency of CUDA
instead of enumerating the Mesa devices as well. The solution is but there actually isn't any NVidia card) and the GLVND treats that as a fatal
whitelisting all EGL implementations except the NVidia one error. This is [fixed in version 1.3.3](https://github.com/NVIDIA/libglvnd/commit/a527411da713b2068974c46d7129326520dc5923)
<a href="https://github.com/NVIDIA/libglvnd/blob/master/src/EGL/icd_enumeration.md">as described in the libglvnd documentation</a> where it just skips that particular vendor and continues. A workaround on older
using the `__EGL_VENDOR_LIBRARY_FILENAMES` environment variable, for example: versions might be filtering out the bad devices manually using the
`__EGL_VENDOR_LIBRARY_FILENAMES` environment variable
<a href="https://github.com/NVIDIA/libglvnd/blob/master/src/EGL/icd_enumeration.md">as described in the libglvnd documentation</a>, for
example:
@m_class{m-console-wrap} @m_class{m-console-wrap}

Loading…
Cancel
Save