3 或 4 台带有 Nvidia 和 Ubuntu 的显示器

8 multiple-monitors compiz x-windows ubuntu nvidia-graphics-card

我看到有人使用 Ubuntu 8.10 和两张 Nvidia 卡运行 3 个显示器(/sf/ask/1897941/)。

我很好奇您是否可以使用 Xinerama、经过修改的 TwinView 配置、多个 X 屏幕或其他方法来做到这一点?它适用于 compiz 吗?

我打算在中间运行我的戴尔 30",两侧有两个 1280x1024 并继续使用一个 X 屏幕,并在 Ubuntu 9.04 上运行 compiz。目前,我正在使用 2 台带有 twinview 和 compiz 的显示器,运行非常好。我只是无法让第三台显示器运行(除非我在它自己的 X 屏幕中启用它,然后启用 Xinerama 来启用窗口,就像所有一个 X 屏幕一样拖动窗口,但这会破坏 compiz,我不太关心有单独的 X 屏幕)。

我很想知道如何用 2 个 GPU 设置 4 个显示器。

小智 8

我意识到这是一个迟来的回复,但有一个答案,这可能没有一年前的存在。

首先,限制(我认为在 X 本身中)是 X 希望所有连接到 1 个大 xscreen 的屏幕都在同一个视频卡上

因此,包含 2 个视频卡的解决方案(据我所知)将使您的光标遍历所有 3 个显示器(跨两个xscreens),但不能将窗口拖动到第 3 个显示器(反之亦然)。

要让 1 个大 Xscreen 和窗口随处滑动,我相信您需要将所有三台显示器都连接到同一个视频卡上。

因此,您需要找到一张可以从同一张卡上运行 3 个或更多显示器的卡。我是 nvidia 的忠实粉丝,但我最近找不到一个每张卡的显示器超过 2 个的。有些卡有 3 个端口,但一次只能使用 3 个中的 2 个。你必须仔细阅读细则。

我发现的唯一可以同时处理 2 个以上显示器的卡是一些 Matrox 卡和一些较新的 ATI 卡。Matrox 卡对总显示器的像素大小和每台显示器的分辨率都有限制。在 Linux 中有几款支持 3+ 显示器的 ATI 卡,我买了一张 MSI Radeon 6990 卡,它有 5 个显示器端口,可以通过拆分一个端口来支持 6 个显示器,但我无法得到明确的答案,拆分将如何对显示器施加限制拆分端口的大小。我现在只使用 3 个端口,它们都支持每个 Mini-DisplayPort 2560x1600。

我儿子有一张不同的卡,在 5xxx 系列中,上面有 6 个 Mini-DisplayPort 连接器,它最多支持 6 个显示器,而且更便宜——所以我知道有不止一张卡可以使用,不确定其他卡的型号。

您问题的另一部分,关于compiz,我无法回答,但是一旦您将所有显示器都安装在一个视频卡上,我怀疑compiz可能会起作用,因为您将不需要xinerama.

在这 3 个启动并运行后,您可能需要使用 xrandr 将它们排列在一起。一旦您从命令行发出正确的命令,您就可以将它们放入一个脚本文件中,并在每次启动时运行它们以节省您的输入和记忆。

我的设置脚本有 3 行:

xrandr --output DFP1 --mode 2560x1600 --rotate left
xrandr --output DFP2 --mode 2560x1600 --rotate left --pos 1600x0
xrandr --output DFP3 --mode 2560x1600 --rotate left --pos 3200x0
Run Code Online (Sandbox Code Playgroud)

您的输出设备和选项会有所不同。


小智 2

据我所知,目前您根本无法将 Compiz 与任何 3 屏幕设置一起使用。TwinView 之所以能够工作,是因为 Nvidia 在驱动程序级别做了一些欺骗,或者类似的事情。我已经在 Solaris、Ubuntu Linux 上运行三显示器设置一段时间了,但总是遇到同样的问题。

您最希望的是没有任何 Compiz 的三显示器设置。

另外,似乎 RANDR 扩展被禁用,就像这个设置一样,运行 gvim 之类的东西会给你:

Xlib:  extension "RANDR" missing on display ":0.0".
Run Code Online (Sandbox Code Playgroud)

这是我的 xorg.conf,希望它能有所帮助:

Section "ServerLayout"
    Identifier     "Layout0"
    Screen      0  "Screen0" 1280 0
    Screen      1  "Screen1" LeftOf "Screen0"
    Screen      2  "Screen2" RightOf "Screen0"
    InputDevice    "Keyboard0" "CoreKeyboard"
    InputDevice    "Mouse0" "CorePointer"
    Option         "Xinerama" "1"
EndSection

Section "Files"
EndSection

Section "InputDevice"
    # generated from default
    Identifier     "Mouse0"
    Driver         "mouse"
    Option         "Protocol" "auto"
    Option         "Device" "/dev/psaux"
    Option         "Emulate3Buttons" "no"
    Option         "ZAxisMapping" "4 5"
    Option         "AccelerationProfile" "-1"
EndSection

Section "InputDevice"
    # generated from default
    Identifier     "Keyboard0"
    Driver         "kbd"
EndSection

Section "Monitor"
    # HorizSync source: edid, VertRefresh source: edid
    Identifier     "Monitor0"
    VendorName     "Unknown"
    ModelName      "ViewSonic"
    HorizSync       30.0 - 81.0
    VertRefresh     56.0 - 76.0
    Option         "DPMS"
EndSection

Section "Monitor"
    # HorizSync source: edid, VertRefresh source: edid
    Identifier     "Monitor1"
    VendorName     "Unknown"
    ModelName      "DELL 1907FP"
    HorizSync       30.0 - 81.0
    VertRefresh     56.0 - 76.0
    Option         "DPMS"
EndSection

Section "Monitor"
    # HorizSync source: edid, VertRefresh source: edid
    Identifier     "Monitor2"
    VendorName     "Unknown"
    ModelName      "DELL 1907FP"
    HorizSync       30.0 - 81.0
    VertRefresh     56.0 - 76.0
    Option         "DPMS"
EndSection

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce GTX 460"
    BusID          "PCI:1:0:0"
    Screen          0
EndSection

Section "Device"
    Identifier     "Device1"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce GTX 460"
    BusID          "PCI:1:0:0"
    Screen          1
EndSection

Section "Device"
    Identifier     "Device2"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce GTX 460"
    BusID          "PCI:2:0:0"
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
    Option         "TwinView" "0"
    Option         "metamodes" "DFP-0: nvidia-auto-select +0+0"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

Section "Screen"
    Identifier     "Screen1"
    Device         "Device1"
    Monitor        "Monitor1"
    DefaultDepth    24
    Option         "TwinView" "0"
    Option         "metamodes" "DFP-2: nvidia-auto-select +0+0"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

Section "Screen"
    Identifier     "Screen2"
    Device         "Device2"
    Monitor        "Monitor2"
    DefaultDepth    24
    Option         "TwinView" "0"
    Option         "metamodes" "nvidia-auto-select +0+0"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection
Run Code Online (Sandbox Code Playgroud)