setting GLX provider in two concurrent X servers
devfra at inventati.org
Mon Oct 22 22:48:37 BST 2018
I hope this is the correct ML to discuss this topic, if not please redirect me
to the appropriate one.
I have an Optimus laptop and I am trying to set up two different X servers, so
that the 'main' one is running on the Intel integrated graphics card and a
secondary one is running on the NVIDIA discrete graphics card (basically what
nvidia-xrun  does).
I succeeded so far but I would like to know if there is a way to set a
specific GLX provider per each X server, and not system wide, via
update-alternatives or other means.
About my setup:
- Debian Buster with nvidia driver (396.54-1) from the Debian Experimental
- the NVIDIA graphics card is turned on via bbswitch with:
$ sudo tee /proc/acpi/bbswitch <<<ON
- and the nvidia kernel modules are loaded with:
$ sudo modprobe nvidia-current-drm
- for the second X server instance a custom xorg.conf is provided, as per
NVIDIA documentation 
- before starting the second X server, the GLX provider is set with
$ update-alternatives --set glx /usr/lib/nvidia
- and then the second X server is run from a free tty with:
$ xinit my-custom-xinitrc -- :1 vt$XDG_VTNR -nolisten tcp \
-br -config my-custom-xorg.conf
Now, by using update-alternatives I set globally the GLX provider, but this
means that I can use the graphical acceleration capabilities only in one of
the two X servers, e.g.:
- glx set to /usr/lib/nvidia
--> glxgears fails on the first X server with the Intel igpu
--> glxgears works on the second X server whit the Nvidia dgpu
As an alternative way, I am trying to not set the GLX provider via
update-alternatives and instead using an additional xorg configuration snippet
for the second X server, this one:
$ cat /etc/nvidia/nvidia-drm-outputclass.conf
As is, this snippet does not work and the second X server fails to start with
it. But if I change the first ModulePath entry with "/usr/lib/nvidia" or
"/usr/lib/nvidia/current" it works, almost.
In fact, in this way I can run glxgears in the two X server instances and with
the correct drivers ("glxgears -info" say so, Mesa for the first one, NVIDIA
for second one), but in the second X server Vulkan applications do not work
and EGL is provided by MESA instead of NVIDIA.
What am I missing here?
More information about the pkg-nvidia-devel