xorg 尝试使用两个显卡(intel 和 nvidia)进行双头设置时出现问题

xorg 尝试使用两个显卡(intel 和 nvidia)进行双头设置时出现问题

我想做的是正确配置文件 xorg.conf,因为我想在使用 FreeBSD 13.1 时同时使用两个 GPU 连接到两个不同的显示器。当我想在一台显示器/GPU 上使用 Blender 进行一些 3D 建模并使用第二台显示器/GPU(nvidia 1060 或 Intel UHD 显卡 630)观看一些教程时,它可能会很有用。我还有第三个 GPU (geforce RTX 2080 ti),但我想保留它,以便在 bhyve Linux 虚拟机上传递。在 BIOS 上,我可以将 Nvidia Geforce 1060 或 Intel gpu 设置为 PC 启动时使用的 GPU。我不确定选择哪个 GPU 作为默认值是正确的。所以,这就是我想要遵循的计划:

  1. 显示器 AOC -> HDMI 电缆 ---> GPU nvidia Geforce 1060

  2. 显示器 Samsung SynchMaster ---> hdmi 电缆 ---> gpu intel 'CoffeeLake-S GT2 [UHD Graphics 630]'

  3. GPU Geforce RTX 2080 Ti 连接到我稍后购买的另一台显示器

实际上我正在使用这个 xorg.conf :https://pastebin.ubuntu.com/p/DhW6RHS3zb/

相反,这是 Xorg.0.log 文件:https://pastebin.ubuntu.com/p/YtdPq9fngQ/

在我前面,我有 AOC 显示器连接到 Geforce 1060 的 HDMI 端口。在我的右边,我有显示器 samsung syncmaster,它连接到英特尔 GPU 的 HDMI 端口。发生的情况是三星显示器部分工作。唯一可以定向到它的 2 个应用程序(它通过 HDMI 电缆连接到 Intel GPU)是:

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

and :

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

(firefox只能在屏幕0.0上显示:不知道为什么)

在这里您可以找到连接到我的电脑的每个 PCI 设备的列表:

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

我可以将一些应用程序导出到 DISPLAY=:0.1(显示器 Samsung SynchMaster ---> hdmi 电缆 ---> gpu intel 'CoffeeLake-S GT2 [UHD Graphics 630])。但这样的使用方式一点也不舒服。事实上,我无法运行 xorg 的另一会话,因为它说一个会话已经在运行。我无法运行另一个 xfce4 会话。仅显示一些应用程序,如果我反转 xorg.conf 文件上的电缆和驱动程序,将连接到 AOC 显示器的英特尔 GPU 作为主 GPU,将连接到三星同步主机的 nvidia 1060 作为辅助 GPU,则行为是一样的,不同之处在于我颠倒了显示器。我尝试启用 xinerama,但效果不佳。它会冻结鼠标,无论如何,将两个屏幕连接到一个屏幕上是荒谬的,因为它们没有物理连接。我想要做的是能够在显示器 1 上执行一些任务,并在显示器 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 说唯一连接的显示器是 HDMI-0,即连接到 nVidia 1060 gpu 的显示器 AOC。但如果我反转 xorg.conf 上的驱动程序和电缆,唯一连接的显示器将再次是 HDMI-0,但这次它将是 Samsung Synchmaster。

该问题可能是由 NVidia 驱动程序引起的,因为它实际上替换了一些 Xorg 库。如今,这个问题可以通过巧妙地使用 libmap.conf(5) 来解决。但这并没有改变 Xorg 本身可能不喜欢让两个不同的显卡同时工作的事实。例如,NVidia 驱动程序使用 libEGL.so 的修改版本。 Xorg(实际上是 mesa)提供完全相同的库,但 NVidia 驱动程序需要 NVidia 修改版本。回到过去,NVidia 驱动程序安装只需覆盖/替换 Xorg libEGL.so。不允许再这样做(不允许一个包覆盖另一个包的文件)。通过将 libEGL.so 的 NVidia 修改版本保存为 NVidia-libEGL.so 并相应配置 libmap.conf(5) 解决了这个问题。现在,如果 Nvidia 驱动程序请求加载 libEGL.so,它实际上会加载 NVidia-libEGL.so (因为 libmap.conf(5) 中的映射)。

我没有解决办法。你 ?

相关内容