Problem with xorg tryng to dual head setup with two graphics cards (intel and nvidia)

Hello

what I’m trying to do is to correctly configure the file xorg.conf because I want to use two gpus at the same time connected to two different monitors while using FreeBSD 13.1. It could be useful when I want to make some 3d modelling using Blender on one monitor / gpu and using the second one (nvidia 1060 or Intel UHD graphics 630) to watch some tutorial. I’ve also got a third gpu (geforce RTX 2080 ti) ,but I want to keep it free to be passed through on a bhyve linux virtual machine. On the BIOS I can setup the Nvidia Geforce 1060 or the Intel gpu as the GPU with which the PC boots. I’m not sure which is the correct gpu to choose as default. So,this is the scheme that I want to follow :

  1. monitor AOC → hdmi cable —> gpu nvidia geforce 1060
  2. monitor Samsung SynchMaster —> hdmi cable —> gpu intel ‘CoffeeLake-S GT2 [UHD Graphics 630]’
  3. gpu geforce RTX 2080 ti connected to another monitor that I will buy later

Actually I’m using this xorg.conf : Ubuntu Pastebin

instead this is the Xorg.0.log file : Ubuntu Pastebin

In front of me I have the AOC monitor connected to the HDMI port of the Geforce 1060. On my right I have the monitor samsung syncmaster,that’s connected to the HDMI port of the intel GPU. What happens is that the samsung monitor works partially. The only 2 apps which can be directed to it (it is attached to the Intel GPU with the HDMI cable) are :

[marietto@marietto ~]$ export DISPLAY=:0.1 ; konsole

and :

[marietto@marietto ~]$ export DISPLAY=:0.1 ; chrome

(firefox can be displayed only on the screen 0.0 : don’t know why)

Here you can find the list of every PCI device attached to my PC :

https://pastebin.ubuntu.com/p/Gx5DqckFQP/

I can export some applications to the DISPLAY=:0.1 (monitor Samsung SynchMaster —> hdmi cable —> gpu intel 'CoffeeLake-S GT2 [UHD Graphics 630]). But this kind of usage is not comfortable at all. Infact I can’t run another session of xorg because it says that one session is already running. And I’m not able to run another xfce4 session. Only some applications are displayed over it and If I invert the cable and the drivers on the xorg.conf file,placing as primary GPU the intel gpu attached to the AOC monitor and as secondary GPU the nvidia 1060 attached to the samsung syncmaster,the behavior is the same,with the difference that I’ve inverted the monitors. I’ve tried to enable xinerama,but it does not work well. It freezes the mouse and anyway,attaching virtually two screens into only one is ridiculous,because they aren’t attached physically. What I want to do is to be able to do some tasks on monitor 1 and some different tasks on monitor 2.

# xrandr -q

Screen 0: minimum 8 x 8, current 1920 x 1080, maximum 32767 x 32767
DVI-D-0 disconnected (normal left inverted right x axis y axis)
DP-0 disconnected (normal left inverted right x axis y axis)
DP-1 disconnected (normal left inverted right x axis y axis)
HDMI-0 connected 1920x1080+0+0 (normal left inverted right x axis y axis) 598mm x 336mm
   1920x1080     60.00*+  59.94    50.00    60.00    50.04  
   1680x1050     59.95  
   1440x900      59.89  
   1280x1024     75.02    60.02  
   1280x960      60.00  
   1280x720      60.00    59.94    50.00  
   1024x768      75.03    70.07    60.00  
   800x600       75.00    72.19    60.32    56.25  
   720x576       50.00  
   720x480       59.94  
   640x480       75.00    72.81    59.94    59.93  
DP-2 disconnected (normal left inverted right x axis y axis)
DP-3 disconnected (normal left inverted right x axis y axis)
DP-4 disconnected (normal left inverted right x axis y axis)
DP-5 disconnected (normal left inverted right x axis y axis)

arandr says that the only monitor connected is the HDMI-0,the monitor AOC connected to the nVidia 1060 gpu. But if I invert the drivers on xorg.conf and the cables,the only monitor connected will again be the HDMI-0,but this time it will be the Samsung Synchmaster.

The problem could be caused by the NVidia driver because it actually replaced some Xorg libraries. Nowadays this is solved by clever use of libmap.conf(5). But this doesn’t change the fact Xorg itself may not like having two different video cards working simultaneously. The NVidia driver uses a modified version of libEGL.so for example. Xorg (well, mesa actually) supplies the exact same library but the NVidia driver requires the NVidia modified version. Back in the olden days the NVidia driver installation would simply overwrite/replace the Xorg libEGL.so. It’s not allowed to do this anymore (one package overwriting another package’s files is not allowed). This was solved by saving the NVidia modified version of libEGL.so as NVidia-libEGL.so and configuring libmap.conf(5) accordingly. Now, if the Nvidia driver requests to load libEGL.so it actually loads NVidia-libEGL.so (because of the mappings in libmap.conf(5)).

I don’t have a solution. Do you ?