3 台显示器、Ubuntu 12.04、Gnome 3、2 张 nvidia 卡,带有 xrandr 或 xinerama?

3 台显示器、Ubuntu 12.04、Gnome 3、2 张 nvidia 卡,带有 xrandr 或 xinerama?

好的。我已经绞尽脑汁尝试了一周多,试图让 3 个显示器正常工作。

我有:

  • Nvidia 8600 GT 512MB PCIEx16

  • Nvidia GT 240 1GB PCIEx16

它们没有在 SLI 中运行(显然)。我尝试使用从教程到一些模板,一直到 nvidia-settings 等所有东西。据我所知,Xinerama 不喜欢 gnome 3,因为它有合成功能,虽然我读过很多关于使用 Xrandr 来代替合成功能的文章,但遗憾的是,我不能。它总是要么使 X 崩溃,我必须用我的备份替换 xorg.conf,要么默认为 gnome-classic 桌面,最重要的是,当它默认时,它会不断添加越来越多的面板。

基本上,我希望能够使用所有 3 个监视器(是的,就像在 Windows 中一样)从不同的窗口进行拖放。

我有 xorg-edit,但我仍然不太清楚如何设置它?有什么方法可以:

A> 使用 3 个显示器、2 个 nvidia 卡、xinerama 和 gnome 3 进行合成工作?

或者

B>使用带有 3 个显示器的 twinview(我听说可以通过手动编辑 xorg.conf 来实现)

或者

C>设置 Xrandr 以合成方式绘制所有 3 个显示器。

或者

D>每个显示器使用单独的X,并且能够使用带有合成功能的gnome,以及在这3个显示器之间进行拖动

或者

E>任何事情。哈哈。我只想让它发挥作用。

如果您能提供任何帮助,我将不胜感激。顺便说一句,我正在运行带有 gnome 的 ubuntu mini 安装。除了这个之外,一切都运行良好。我可以用 2 个显示器和合成器很好地运行它,但不能用 3 个。

另外,用于编辑 xorg.conf 的最佳 GUI 工具是什么?我根本找不到任何最新且人类可以理解的东西。哈哈。我实际上是一名工程师,并且已经与计算机打交道很长时间了,但 xorg.conf 的东西真的让我很困惑。哈哈

谢谢!

答案1

哈哈,我喜欢多显示器问题 :) 如果我没记错的话,TwinView 顾名思义,适用于 2 个显示器。XRandR 的问题在多显示器设置中是双重的。它会创建一个大型虚拟显示器,每个显示器都会获得其中的一部分。如果总分辨率太高(2048 X 2048),它可能无法工作……帧缓冲区问题等等。您应该能够在 xorg.conf 中增加 fb 大小,但据我所知,这会降低性能。此外,如果显示器的分辨率不同,可能会有黑色区域,或者窗口会从显示器上掉下来。

Xinerama 能够进行多显示器设置。我们先尝试混合使用 xinerama 和 TwinView。如果失败,只需用 # 注释掉 TwinView 行即可。以下是示例/etc/X11/xorg.conf文件。使用它作为骨架并替换相应的信息。首先使用示例中的 TwinView 设置进行尝试。

Section "ServerLayout"
    Identifier     "TriHead"
    Screen      0  "Screen0" 0 0
    Screen      1  "Screen1" RightOf "Screen0"
    Screen      2  "Screen1" RightOf "Screen1"
    Option         "Xinerama" "1"                # Enable xinerama on the whole
EndSection

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "Nvidia GT 240"
    BusID          "PCI:1:0:0"                   # Use lscpi | grep VGA to get the BusID
    Screen          0                            # Note the Screen numbers
EndSection

Section "Device"
    Identifier     "Device1"                     # A device for each screen
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "Nvidia GT 240"
    BusID          "PCI:1:0:0"
    Screen          1
EndSection

Section "Device"
    Identifier     "Device2"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "Nvidia 8600 GT"
    BusID          "PCI:2:0:0"
    Screen          2
EndSection

Section "Monitor"
    Identifier     "Monitor0"
    VendorName     "Unknown"
    ModelName      "Gateway HX2000"
    HorizSync       31.0 - 83.0
    VertRefresh     56.0 - 76.0
    Option         "DPMS"
EndSection

Section "Monitor"
    Identifier     "Monitor1"
    VendorName     "Unknown"
    ModelName      "DELL 1907FPV"
    HorizSync       30.0 - 81.0
    VertRefresh     56.0 - 76.0
    Option         "DPMS"
EndSection

Section "Monitor"
    Identifier     "Monitor2"
    VendorName     "Unknown"
    ModelName      "DELL 1907FPV"
    HorizSync       30.0 - 81.0
    VertRefresh     56.0 - 76.0
    Option         "DPMS"
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
    Option         "NoLogo" "True"
    Option         "Coolbits" "5"
#    Option         "DoubleBuffer" "True"
    Option         "TripleBuffer" "True"
    Option         "TwinView" "1"                # Enable TwinView for the shared card
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

Section "Screen"
    Identifier     "Screen1"
    Device         "Device1"
    Monitor        "Monitor1"
    DefaultDepth    24
    Option         "TwinView" "1"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

Section "Screen"
    Identifier     "Screen2"
    Device         "Device2"
    Monitor        "Monitor2"
    DefaultDepth    24
    Option         "NoLogo" "True"
    Option         "Coolbits" "5"
#    Option         "DoubleBuffer" "True"
    Option         "TripleBuffer" "True"
    Option         "TwinView" "0"                # No TwinView on this screen
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

我还应该提到,不推荐使用诸如“Coolsbits”之类的附加选项,因为它会启用超频和调整风扇速度。使用 VBlank 同步时,“TrippleBuffer”很有用。

答案2

嗯,我做到了这一点。所有 3 个监视器都已启动并开始工作,但我仍然无法让堆肥工作。

这是我的 xorg.conf。有什么建议吗?

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

Section "InputDevice"
    Identifier     "Mouse0"
    Driver         "mouse"
    Option         "Protocol" "auto"
    Option         "Device" "/dev/psaux"
    Option         "Emulate3Buttons" "no"
    Option         "ZAxisMapping" "4 5"
EndSection

Section "Files"
EndSection

Section "Module"
    Load "glx"
EndSection

Section "Extensions"
    Option "Composite" "Disable"
EndSection

Section "InputDevice"
    Identifier     "Keyboard0"
    Driver         "kbd"
EndSection

Section "Monitor"
    Identifier     "Monitor0"
    VendorName     "Acer"
    ModelName      "20 Inch"
    HorizSync       24.0 - 82.0
    VertRefresh     48.0 - 76.0
    Option         "DPMS"
EndSection

Section "Monitor"
    Identifier     "Monitor1"
    VendorName     "HP"
    ModelName      "MidPuta"
    HorizSync       24.0 - 82.0
    VertRefresh     48.0 - 76.0
    Option         "DPMS"
EndSection

Section "Monitor"
    Identifier     "Monitor2"
    VendorName     "Samsung"
    ModelName      "10 Inch"
    HorizSync       24.0 - 82.0
    VertRefresh     48.0 - 76.0
    Option         "DPMS"
EndSection

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "GT 240"
    BusID          "PCI:3:0:0"
    Screen          0
EndSection

Section "Device"
    Identifier     "Device1"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "GT 240"
    BusID          "PCI:3:0:0"
    Screen          1
EndSection

Section "Device"
    Identifier     "Device2"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "8600 GT"
    BusID          "PCI:6:0:0"
    Screen          0
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
    Option         "TwinView" "0"
    Option         "metamodes" "DFP-1: 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" "CRT-1: 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" "DFP-0: nvidia-auto-select +0+0"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection
#

答案3

Xinerama 破坏了 randr 和 compiz

我有几乎同样的问题(3x gpu,6x 屏幕)

您能做的最好的事情是使用 nvidia 驱动程序,对齐屏幕,启用 xinerama,保存到 xorg.conf 并重新启动(不要应用设置)

您将能够将窗口从一个屏幕移动到另一个屏幕,并最大化每个屏幕的窗口。

没有硬件加速,没有 compiz。

也许有一天 mir 或 wayland 会有更好的支持,但我不会抱太大希望。不知何故,Linux 社区中的每个人似乎都认为多显示器意味着两个显示器,仅此而已。

我最近听说最新的 Randr 现在支持多个 gpu/屏幕设置,但经过几个小时的咒骂和沮丧之后,我放弃了,回到了损坏的 Xinerama 设置

相关内容