No GLX on Intel card with multiseat with additional nVidia card

Solution 1:

Okay, so found a solution, but there's a bug preventing hardware acceleration from working on Intel GPU's at the moment in Ubuntu 12.10 with new Mesa 9.0.1 library.

In short, problem was with loading GLX. nVidia would push it's own GLX module and step on Intel's toes.

I found a solution by noticing this line:

[    18.240] (==) ModulePath set to "/usr/lib/x86_64-linux-gnu/xorg/extra-modules,/usr/lib/xorg/extra-modules,/usr/lib/xorg/modules"

Namely modules located in /usr/lib/x86_64-linux-gnu/xorg/extra-modules are all nVidia specific ones. So I configured LightDM to use two xorg.conf files. In Intel one, I've manually set ModulePath excluding nVidia directory. This resulted in loading of proper GLX module.

My /etc/lightdm/lightdm.conf file looks like this:

[SeatDefaults]
user-session=ubuntu
greeter-session=unity-greeter
allow-guest=false

[Seat:0]
xserver-layout=Default
xserver-config=xorg.conf.nvidia

[Seat:1]
xserver-layout=TV
xserver-config=xorg.conf.intel

Lines added to xorg.conf.intel:

Section "Files"
    ModulePath     "/usr/lib/xorg/extra-modules"
    ModulePath     "/usr/lib/xorg/modules"
EndSection

Solution 2:

On my side, with Ubuntu 14.04, the paths are different and Nvidia proprietary driver override libglx.so in /usr/lib/xorg/modules/extensions/libglx.so.

To solve the issue, I duplicate /usr/lib/xorg/modules in /usr/lib/xorg/modules-nvidia and then reinstall the Intel friendly libglx.so with :

sudo apt-get install --reinstall xserver-xorg-core

This restore the original libglx.so. On the xorg.conf.nvidia, I add the path to the valid modules :

Section "Files" ModulePath "/usr/lib/xorg/modules-nvidia" EndSection

Also, in /etc/lightdm/lightdm.conf I have to add : xserver-command=/usr/bin/X -sharevts under [Seat:1] section. This tip have been found here.

Many thanks to MeanEYE who points me in the right way.

Solution 3:

So I've done a bit of research and discovered that there are a number of different ways in which you can achieve Multiseat (Multi-station, multi-terminal etc.) configurations.

1) The method I would recommend, as it uses your standard Xorg and a built-in kernel driver, is using evdev. Here's a guide on how to setup a 4 GPU and 4 monitor multiseat configuration using evdev. The guide is meant for Debian Sarge and SiS GPUs, but I think you can infer a lot of very useful information from this guide: https://en.wikibooks.org/wiki/Multiterminal_with_evdev

2) Another method is using Xypher, a different X Windows server based on KDrive. I'm not sure this is the route you want to go, however here is that guide anyways: https://en.wikibooks.org/wiki/en:Multiterminal_with_Xephyr

3) Another option is to use a tool called Multiseat Display Manager (MDM) which promises to automate the entire setup process for you, however, it does not seem to be updated so I don't recommend it. You can find it easily with Google as a last resort, however.

I'm not aware of what you have or have not already done to your configuration, so your best bet is to read the evdev guide and try to identify the steps you've not done yet. The biggest differences I'm seeing is

A) In the example xorg.conf, there's only 1 Screen and ServerLayout section. The additional Screens and ServerLayout are defined in a separate conf all together: xorg.conf.probe

B) Additionally, all devices are explicitly referenced by their BusIDs, which were obtained using lspci and

C) Interrupts are disabled on irq 10.

Hopefully, this helps get you up and running, good luck!