#1008245 update-glx config for nvidia but libegl point to mesa-diverted

#1008245#5
Date:
2022-03-25 08:57:20 UTC
From:
To:
Dear Maintainer,

I've setup my debian Testing to use nvidia driver 470.103.01.
The system is setup to use nvidia drive: update-glx --config glx
However running update-glx --query glx reports:

Name: glx
Link: /usr/lib/glx
Slaves:
 glx--libEGL.so.1-x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/libEGL.so.1
 glx--libGL.so.1-x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/libGL.so.1
 glx--libGLESv1_CM.so.1-x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/libGLESv1_CM.so.1
 glx--libGLESv2.so.2-x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/libGLESv2.so.2
 glx--libGLX_indirect.so.0-x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/libGLX_indirect.so.0
 glx--libglxserver_nvidia.so /usr/lib/xorg/modules/extensions/libglxserver_nvidia.so
 glx--libnvidia-cfg.so.1-x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/libnvidia-cfg.so.1
 glx--nvidia-blacklists-nouveau.conf /etc/modprobe.d/nvidia-blacklists-nouveau.conf
 glx--nvidia-bug-report.sh /usr/bin/nvidia-bug-report.sh
 glx--nvidia-drm-outputclass.conf /usr/share/X11/xorg.conf.d/nvidia-drm-outputclass.conf
 glx--nvidia-load.conf /etc/modules-load.d/nvidia.conf
 glx--nvidia-modprobe.conf /etc/modprobe.d/nvidia.conf
 glx--nvidia_drv.so /usr/lib/xorg/modules/drivers/nvidia_drv.so
Status: auto
Best: /usr/lib/nvidia
Value: /usr/lib/nvidia

Alternative: /usr/lib/mesa-diverted
Priority: 5
Slaves:
 glx--libEGL.so.1-x86_64-linux-gnu /usr/lib/mesa-diverted/x86_64-linux-gnu/libEGL.so.1
 glx--libGL.so.1-x86_64-linux-gnu /usr/lib/mesa-diverted/x86_64-linux-gnu/libGL.so.1
 glx--libGLESv1_CM.so.1-x86_64-linux-gnu /usr/lib/mesa-diverted/x86_64-linux-gnu/libGLESv1_CM.so.1
 glx--libGLESv2.so.2-x86_64-linux-gnu /usr/lib/mesa-diverted/x86_64-linux-gnu/libGLESv2.so.2
 glx--libGLX_indirect.so.0-x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/libGLX_mesa.so.0

Alternative: /usr/lib/nvidia
Priority: 100
Slaves:
 glx--libEGL.so.1-x86_64-linux-gnu /usr/lib/mesa-diverted/x86_64-linux-gnu/libEGL.so.1
 glx--libGL.so.1-x86_64-linux-gnu /usr/lib/mesa-diverted/x86_64-linux-gnu/libGL.so.1
 glx--libGLESv1_CM.so.1-x86_64-linux-gnu /usr/lib/mesa-diverted/x86_64-linux-gnu/libGLESv1_CM.so.1
 glx--libGLESv2.so.2-x86_64-linux-gnu /usr/lib/mesa-diverted/x86_64-linux-gnu/libGLESv2.so.2
 glx--libGLX_indirect.so.0-x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/libGLX_nvidia.so.0
 glx--libglxserver_nvidia.so /usr/lib/nvidia/libglxserver_nvidia.so
 glx--libnvidia-cfg.so.1-x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/nvidia/libnvidia-cfg.so.1
 glx--nvidia-blacklists-nouveau.conf /etc/nvidia/nvidia-blacklists-nouveau.conf
 glx--nvidia-bug-report.sh /usr/lib/nvidia/nvidia-bug-report.sh
 glx--nvidia-drm-outputclass.conf /etc/nvidia/nvidia-drm-outputclass.conf
 glx--nvidia-load.conf /etc/nvidia/nvidia-load.conf
 glx--nvidia-modprobe.conf /etc/nvidia/nvidia-modprobe.conf
 glx--nvidia_drv.so /usr/lib/nvidia/nvidia_drv.so

Why on earth, glx--libEGL.so.1-x86_64-linux-gnu points to mesa-diverted??

Running glxinfo I can confirm that I'm using Nvidia driver (even if glx--libGL.so.1-x86_64-linux-gnu points to mesa-diverted).
But running eglinfo clearly states that I'm using mesa driver.

I have trouble running singularity container for some paraview app when using --nv for preloading nvidia driver
I suspect that my problem is linked with these "wrong" links

Can you please confirm or infirm my  statements?

Best
C

#1008245#10
Date:
2022-03-25 11:43:07 UTC
From:
To:
MESA and modern NVIDIA drivers (starting after the 418 series) use
libglvnd to provide generic loader libraries libGL.so.1, libEGL.so.1,
... while MESA and NVIDIA only provide some implementations:
libGLX_${VENDOR}.so.0, libEGL_${VENDOR}.so.0, ...
(NVIDIA still ships GLVND builds of (loader) libGL.so.1 etc., but we use
them from src:libglvnd.)
The name "mesa-diverted" is misleading nowadays since it actually
contains diverted libglvnd libraries ... this won't be fixed, because
once all the NVIDIA drivers predating GLVND usage reach EoL (Tesla 418
in 03/2022 and legacy 390 in 12/2022), i.e. once there are no longer
NVIDIA-specific libGL.so.1 etc. we can simplify the diversion and
alternatives setup for bookworm, since most things done can now be
solved by libglvnd.

As expected.

That's the point we need to look into.

Luca, can you confirm that eglinfo should report something
"NVIDIA-specific" or is that a red herring?

Christophe, you should have something like these libraries
related to EGL installed:

ii  libegl-mesa0:amd64              21.3.7-1                          amd64        free implementation of the EGL API -- Mesa vendor library
ii  libegl-nvidia0:amd64            470.103.01-3                      amd64        NVIDIA binary EGL library
ii  libegl1:amd64                   1.4.0-1                           amd64        Vendor neutral GL dispatch library -- EGL support
ii  libnvidia-egl-wayland1:amd64    1:1.1.9-1.1                       amd64        Wayland EGL External Platform library -- shared library
ii  libnvidia-eglcore:amd64         470.103.01-3                      amd64        NVIDIA binary EGL core libraries
ii  libwayland-egl1:amd64           1.20.0-1                          amd64        wayland compositor infrastructure - EGL library
ii  nvidia-egl-common               470.103.01-3                      amd64        NVIDIA binary EGL driver - common files
ii  nvidia-egl-icd:amd64            470.103.01-3                      amd64        NVIDIA EGL installable client driver (ICD)

Please send the configuration of the nvidia alternative, too:

update-glx --display nvidia

(the bug script should probably collect that as well ...)


Andreas

#1008245#15
Date:
2022-03-25 11:56:57 UTC
From:
To:
Hi, Andreas
thanks for your explanations. This is more clear now.
nvidia - auto mode
  link best version is /usr/lib/nvidia/current
  link currently points to /usr/lib/nvidia/current
  link nvidia is /usr/lib/nvidia/nvidia
  slave nvidia--libEGL_nvidia.so.0-x86_64-linux-gnu is /usr/lib/x86_64-linux-gnu/libEGL_nvidia.so.0
  slave nvidia--libGLESv1_CM_nvidia.so.1-x86_64-linux-gnu is /usr/lib/x86_64-linux-gnu/libGLESv1_CM_nvidia.so.1
  slave nvidia--libGLESv2_nvidia.so.2-x86_64-linux-gnu is /usr/lib/x86_64-linux-gnu/libGLESv2_nvidia.so.2
  slave nvidia--libGLX_nvidia.so.0-x86_64-linux-gnu is /usr/lib/x86_64-linux-gnu/libGLX_nvidia.so.0
  slave nvidia--libcuda.so-i386-linux-gnu is /usr/lib/i386-linux-gnu/libcuda.so
  slave nvidia--libcuda.so-x86_64-linux-gnu is /usr/lib/x86_64-linux-gnu/libcuda.so
  slave nvidia--libcuda.so.1-i386-linux-gnu is /usr/lib/i386-linux-gnu/libcuda.so.1
  slave nvidia--libcuda.so.1-x86_64-linux-gnu is /usr/lib/x86_64-linux-gnu/libcuda.so.1
  slave nvidia--libglxserver_nvidia.so is /usr/lib/nvidia/libglxserver_nvidia.so
  slave nvidia--libnvcuvid.so-x86_64-linux-gnu is /usr/lib/x86_64-linux-gnu/libnvcuvid.so
  slave nvidia--libnvcuvid.so.1-x86_64-linux-gnu is /usr/lib/x86_64-linux-gnu/libnvcuvid.so.1
  slave nvidia--libnvidia-cfg.so.1-x86_64-linux-gnu is /usr/lib/x86_64-linux-gnu/nvidia/libnvidia-cfg.so.1
  slave nvidia--libnvidia-encode.so.1-x86_64-linux-gnu is /usr/lib/x86_64-linux-gnu/libnvidia-encode.so.1
  slave nvidia--libnvidia-ml.so-x86_64-linux-gnu is /usr/lib/x86_64-linux-gnu/libnvidia-ml.so
  slave nvidia--libnvidia-ml.so.1-x86_64-linux-gnu is /usr/lib/x86_64-linux-gnu/libnvidia-ml.so.1
  slave nvidia--libnvidia-ptxjitcompiler.so.1-i386-linux-gnu is /usr/lib/i386-linux-gnu/libnvidia-ptxjitcompiler.so.1
  slave nvidia--libnvidia-ptxjitcompiler.so.1-x86_64-linux-gnu is /usr/lib/x86_64-linux-gnu/libnvidia-ptxjitcompiler.so.1
  slave nvidia--libvdpau_nvidia.so.1-x86_64-linux-gnu is /usr/lib/x86_64-linux-gnu/vdpau/libvdpau_nvidia.so.1
  slave nvidia--nv-control-dpy is /usr/bin/nv-control-dpy
  slave nvidia--nvidia-application-profiles-key-documentation is /usr/share/nvidia/nvidia-application-profiles-key-documentation
  slave nvidia--nvidia-blacklists-nouveau.conf is /etc/nvidia/nvidia-blacklists-nouveau.conf
  slave nvidia--nvidia-bug-report.sh is /usr/lib/nvidia/nvidia-bug-report.sh
  slave nvidia--nvidia-debugdump is /usr/bin/nvidia-debugdump
  slave nvidia--nvidia-drm-outputclass.conf is /etc/nvidia/nvidia-drm-outputclass.conf
  slave nvidia--nvidia-load.conf is /etc/nvidia/nvidia-load.conf
  slave nvidia--nvidia-modprobe.conf is /etc/nvidia/nvidia-modprobe.conf
  slave nvidia--nvidia-options.conf is /etc/modprobe.d/nvidia-options.conf
  slave nvidia--nvidia-settings is /usr/bin/nvidia-settings
  slave nvidia--nvidia-settings.1.gz is /usr/share/man/man1/nvidia-settings.1.gz
  slave nvidia--nvidia-settings.desktop is /usr/share/applications/nvidia-settings.desktop
  slave nvidia--nvidia-smi is /usr/bin/nvidia-smi
  slave nvidia--nvidia-smi.1.gz is /usr/share/man/man1/nvidia-smi.1.gz
  slave nvidia--nvidia_drv.so is /usr/lib/nvidia/nvidia_drv.so
/usr/lib/nvidia/current - priority 470
  slave nvidia--libEGL_nvidia.so.0-x86_64-linux-gnu: /usr/lib/x86_64-linux-gnu/nvidia/current/libEGL_nvidia.so.0
  slave nvidia--libGLESv1_CM_nvidia.so.1-x86_64-linux-gnu: /usr/lib/x86_64-linux-gnu/nvidia/current/libGLESv1_CM_nvidia.so.1
  slave nvidia--libGLESv2_nvidia.so.2-x86_64-linux-gnu: /usr/lib/x86_64-linux-gnu/nvidia/current/libGLESv2_nvidia.so.2
  slave nvidia--libGLX_nvidia.so.0-x86_64-linux-gnu: /usr/lib/x86_64-linux-gnu/nvidia/current/libGLX_nvidia.so.0
  slave nvidia--libcuda.so-i386-linux-gnu: /usr/lib/i386-linux-gnu/nvidia/current/libcuda.so
  slave nvidia--libcuda.so-x86_64-linux-gnu: /usr/lib/x86_64-linux-gnu/nvidia/current/libcuda.so
  slave nvidia--libcuda.so.1-i386-linux-gnu: /usr/lib/i386-linux-gnu/nvidia/current/libcuda.so.1
  slave nvidia--libcuda.so.1-x86_64-linux-gnu: /usr/lib/x86_64-linux-gnu/nvidia/current/libcuda.so.1
  slave nvidia--libglxserver_nvidia.so: /usr/lib/nvidia/current/libglxserver_nvidia.so
  slave nvidia--libnvcuvid.so-x86_64-linux-gnu: /usr/lib/x86_64-linux-gnu/nvidia/current/libnvcuvid.so
  slave nvidia--libnvcuvid.so.1-x86_64-linux-gnu: /usr/lib/x86_64-linux-gnu/nvidia/current/libnvcuvid.so.1
  slave nvidia--libnvidia-cfg.so.1-x86_64-linux-gnu: /usr/lib/x86_64-linux-gnu/nvidia/current/libnvidia-cfg.so.1
  slave nvidia--libnvidia-encode.so.1-x86_64-linux-gnu: /usr/lib/x86_64-linux-gnu/nvidia/current/libnvidia-encode.so.1
  slave nvidia--libnvidia-ml.so-x86_64-linux-gnu: /usr/lib/x86_64-linux-gnu/nvidia/current/libnvidia-ml.so
  slave nvidia--libnvidia-ml.so.1-x86_64-linux-gnu: /usr/lib/x86_64-linux-gnu/nvidia/current/libnvidia-ml.so.1
  slave nvidia--libnvidia-ptxjitcompiler.so.1-i386-linux-gnu: /usr/lib/i386-linux-gnu/nvidia/current/libnvidia-ptxjitcompiler.so.1
  slave nvidia--libnvidia-ptxjitcompiler.so.1-x86_64-linux-gnu: /usr/lib/x86_64-linux-gnu/nvidia/current/libnvidia-ptxjitcompiler.so.1
  slave nvidia--libvdpau_nvidia.so.1-x86_64-linux-gnu: /usr/lib/x86_64-linux-gnu/nvidia/current/libvdpau_nvidia.so.1
  slave nvidia--nv-control-dpy: /usr/lib/nvidia/current/nv-control-dpy
  slave nvidia--nvidia-application-profiles-key-documentation: /usr/share/nvidia/nvidia-application-profiles-470.103.01-key-documentation
  slave nvidia--nvidia-blacklists-nouveau.conf: /etc/nvidia/current/nvidia-blacklists-nouveau.conf
  slave nvidia--nvidia-bug-report.sh: /usr/lib/nvidia/current/nvidia-bug-report.sh
  slave nvidia--nvidia-debugdump: /usr/lib/nvidia/current/nvidia-debugdump
  slave nvidia--nvidia-drm-outputclass.conf: /etc/nvidia/current/nvidia-drm-outputclass.conf
  slave nvidia--nvidia-load.conf: /etc/nvidia/current/nvidia-load.conf
  slave nvidia--nvidia-modprobe.conf: /etc/nvidia/current/nvidia-modprobe.conf
  slave nvidia--nvidia-options.conf: /etc/nvidia/current/nvidia-options.conf
  slave nvidia--nvidia-settings: /usr/lib/nvidia/current/nvidia-settings
  slave nvidia--nvidia-settings.1.gz: /usr/lib/nvidia/current/nvidia-settings.1.gz
  slave nvidia--nvidia-settings.desktop: /usr/lib/nvidia/current/nvidia-settings.desktop
  slave nvidia--nvidia-smi: /usr/lib/nvidia/current/nvidia-smi
  slave nvidia--nvidia-smi.1.gz: /usr/lib/nvidia/current/nvidia-smi.1.gz
  slave nvidia--nvidia_drv.so: /usr/lib/nvidia/current/nvidia_drv.so

#1008245#20
Date:
2022-03-25 14:25:48 UTC
From:
To:
Thanks.

I'm not sure whether this will yield helpful debug information, but you
could run

   strace --trace=/open eglinfo

to get a list of all files opened when running eglinfo. This should at
least show whether nvidia libraries are being tried ...


Andreas

#1008245#25
Date:
2022-03-25 15:53:25 UTC
From:
To:
----- Original Message -----

I attached the output as eglinfo.log

Indeed it seems that it tried some nvidia libs