在花了很多时间研究 xrandr 之后,我找到了一个对我“有效”的解决方案。
我使用这个论坛作为向其他人提供解决我的问题的方法,以及就某些我不理解的事情提出我自己的问题。
设置:
- 2x Nvidia GT 630(每块配备 2x DVI 1x HDMI)
- 3x 显示器(2x Acer 1680x1050 (DVI) 和 1x LG 1680x1050 (DVI))
- Debian 8.6 默认安装(GnomeDesktop Manager 3)
- Nouveau 驱动程序(默认安装)
我在卡 1 上连接了 1 个 Acer 和 1 个 LG。默认安装使它们能够完美地作为无缝桌面运行。 GDM 中未检测到卡 2 上的最后一个 Acer,因此无法正常工作。它是在系统更深处检测到的,使用了我从知道自己在做什么的人那里获取的一些 BASH 魔法:
ls /sys/class/drm/*/status | xargs -I {} -i bash -c "echo -n {}: ; cat {}"
/sys/class/drm/card0-DVI-I-1/status:connected
/sys/class/drm/card0-DVI-I-2/status:connected
/sys/class/drm/card0-HDMI-A-1/status:disconnected
/sys/class/drm/card1-DVI-I-3/status:connected
/sys/class/drm/card1-DVI-I-4/status:disconnected
/sys/class/drm/card1-HDMI-A-2/status:disconnected
我首先输入
xrandr --listproviders
并得到
Providers: number : 2
Provider 0: id: 0x64 cap: 0x7, Source Output, Sink Output, Source Offload crtcs: 2 outputs: 3 associated providers: 1 name:nouveau
Provider 1: id: 0x36a cap: 0x2, Sink Output crtcs: 2 outputs: 3 associated providers: 1 name:modesetting
您立即可以看到提供商 0 的“名称”条目设置为“nouveau”,提供商 1 的“名称”条目设置为“modesetting”
我很确定每个提供商都有自己的独立显卡。 为什么一个设置为“使用”nouveau,另一个模式设置(大概是 KernelModesetting)? Nouveau 应该在 KMS 之上运行......
dmesg 向我显示两张卡都在 nouveau 下运行...
打字
xrandr --setprovideroutputsource nouveau nouveau
似乎将两个提供商的“名称”条目强制为“nouveau”。 X 立即重新启动(或崩溃),然后我返回到登录屏幕。
登录后,在 X 终端中输入:
xrandr --listproviders
并得到确认:
Providers: number : 2
Provider 0: id: 0xbf cap: 0x7, Source Output, Sink Output, Source Offload crtcs: 2 outputs: 3 associated providers: 0 name:nouveau
Provider 1: id: 0x64 cap: 0x7, Source Output, Sink Output, Source Offload crtcs: 2 outputs: 3 associated providers: 0 name:nouveau
两个上限条目相同。为什么是这样?帽是什么意思?
从这里我实际上可以启用 xrandr 与第二张卡(提供商 1)对话:
xrandr --setprovideroutputsource 1 0
现在,当我键入以下内容时,将显示额外的 DVI 和 HDMI 端口:
xrandr
从这里我启用第三个监视器:
xrandr --output DVI-I-1-3 –auto
(因为我的第三台显示器位于 DVI-I-1-3)
我可以选择通过设置下的 GDM GUI 应用程序启用监视器。
从这里开始,更多的 xrandr 输出定位命令或 GUI 操作将使我的显示器处于相对于其他显示器的位置,并且一切正常。现在我必须将所有这些命令包装在一个脚本中,因为 xrandr 不会在重新启动时保存设置。当我让它工作时,我将在稍后的帖子中讨论该脚本。
当前的一些问题是移动窗口时图形性能较差,有时鼠标会一次冻结几秒钟。专有的 Nvidia 驱动程序可能会解决此问题,但其他解决方案也是最受欢迎的。
我忍不住认为我已经犯了这个错误,并且有一种“更好”的方法来实现我刚刚所做的事情,同时仍然使用 xrandr (我也尝试过使用 ZaphodHeads 自定义 xorg.conf 但没有结果)。 为什么我必须输入:
xrandr --setprovideroutputsource nouveau nouveau
首先要设置其余命令吗?
Xrandr –help
显示:
--setprovideroutputsource <prov-xid> <source-xid>
在哪里可以找到 source-xid 的列表?
为什么 xrandr 和 /sys/class/drm/ 之间的 DVI 端口标记不同?