第二个屏幕已识别/已连接但未显示 - Ubuntu 18.04 / Arch Linux

第二个屏幕已识别/已连接但未显示 - Ubuntu 18.04 / Arch Linux

我一直在尝试让我的第二台显示器在全新安装的 Ubuntu 18.04 LTS 上运行,尽管我也尝试过 Arch Linux。我的主显示器和辅助显示器都显示在显示器的选项菜单中,并且分辨率和刷新率的所有正确值似乎都是正确的。

我也可以将鼠标和软件窗口移动到另一个屏幕。它的表现就像它几乎在各个方面都起作用,但实际上并没有显示任何东西。

有趣的是,显示器从技术上讲是收到信号的,因为它不会弹出“检查信号电缆”(我的显示器的“无信号”警告)。然而,它实际上并没有在屏幕上显示任何内容,而只是黑屏。

计算机规格/技术细节

我正在运行 1920x1080 显示器(主要,工作)和 1280x1024 显示器(辅助,不工作)。我使用的是 AMD Radeon 380X。两台显示器都通过两个 DVI 端口直接连接到显卡。该设置在 Windows 10 中运行良好,这意味着我非常怀疑这是硬件问题。

诊断信息

兰德尔输出:

Screen 0: minimum 320 x 200, current 3200 x 1080, maximum 16384 x 16384
DisplayPort-0 disconnected (normal left inverted right x axis y axis)
HDMI-A-0 disconnected (normal left inverted right x axis y axis)
DVI-D-0 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 477mm x 268mm
   1920x1080     60.00*+
   1680x1050     59.88  
   1280x1024     75.02    60.02  
   1440x900      59.90  
   1280x960      60.00  
   1280x800      59.91  
   1152x864      75.00  
   1280x720      60.00  
   1024x768      75.03    70.07    60.00  
   832x624       74.55  
   800x600       72.19    75.00    60.32    56.25  
   640x480       75.00    72.81    66.67    59.94  
   720x400       70.08  
DVI-D-1 connected 1280x1024+1920+0 (normal left inverted right x axis y axis) 338mm x 270mm
   1280x1024     60.02*+  75.02  
   1280x800      60.02  
   1152x864      75.00  
   1280x720      60.02  
   1024x768      75.03    70.07    60.00  
   832x624       74.55  
   800x600       72.19    75.00    60.32    56.25  
   640x480       75.00    72.81    66.67    59.94  
   720x400       70.08  

我的两个屏幕连接到 DVI-D-0(我的主要工作显示器,1920x1080)和 DVI-D-1(我的“非工作”显示器,1280x1024)。 xrandr 说它们已连接,所以 xrandr 输出看起来很好,因为我可以将鼠标和所有内容移动到第二个显示器,这似乎都是正确的,并且可以被 Ubuntu 和 Arch 识别。

相关的lspci-nnk输出:

01:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Tonga XT / Amethyst XT [Radeon R9 380X / R9 M295X] [1002:6938] (rev f1)
    Subsystem: Tul Corporation / PowerColor Radeon R9 380X [148c:2350]
    Kernel driver in use: amdgpu
    Kernel modules: amdgpu

该行是唯一显示的 VGA 或输出相关内容。正如您所看到的,正在使用 amdgpu,我将在本文后面对此进行更深入的介绍。

我也有一个英特尔处理器,可以提供图形,但两个显示器都插入显卡本身而不是主板。英特尔显卡的 lspci 没有显示输出,我也不相信应该有输出。

Xorg.0.log粘贴链接:https://pastebin.com/TCkfWjcg

我尝试过的

作为这一切的序言,我浏览了整个互联网,并尝试了我在一堆 Stack Exchange 网站和其他网站上看到的大多数修复方法。以下是我所记得的所有尝试过的内容的列表。

  • 更改 xrandr 值:我尝试通过 xrandr 更改显示器的值。我的 xrandr 输出似乎事先很好,但是将它们更改为正确的值(即使 xrandr 已经表明监视器处于正确的值)并没有解决我的问题。
  • 更改 xorg.conf:我修改了 xorg.conf 来尝试明确定义屏幕的功能,但这不起作用。为此,我基本上遵循了 Arch wiki 上的说明。我只在 Arch 上测试过这一点,但从我在网上读到的内容来看,这应该也适用于 Ubuntu。
  • 不同的发行版/全新安装:我最初在 Arch 上遇到了这个问题,所以我更改了那里的内容,然后进行了全新安装,发现问题仍然存在。此后我尝试全新安装 Ubuntu 18.04,但问题仍然存在。
  • 更新驱动程序:我从 AMD 网站下载了最新的 amdgpu 驱动程序并从那里安装。重新启动后它没有破坏任何东西,我的主显示器仍然工作正常,但没有解决我的问题。
  • 驱动程序更改 amdgpu -> radeon:我尝试从 amdgpu 驱动程序更改为 radeon 驱动程序。尽管我按照 Arch Linux Wiki 页面上的说明安装了 radeon 驱动程序,但我无法让我的系统真正使用 radeon 驱动程序。 amdgpu 总是被使用,当我通过 modprobe.d 中的 .conf 文件将其列入黑名单时,我的图形显示甚至无法启动,我被迫返回终端并从那里恢复所有内容,以便它重新启动。
  • 尝试 amdgpu-pro:我只在 Ubuntu 上尝试过这个,但这并没有解决我的问题,尝试这个导致我在尝试从 amdgpu 切换到 amdgpu-pro 时必须进行全新安装,因为它破坏了 Ubuntu 图形界面并且不允许我进行安装轻松进入终端。
  • 降低非功能显示器的分辨率:我尝试将第二台显示器的分辨率降低到非常低的水平(800x600),因为显然如果解决了这个问题,则表明可能存在驱动程序问题。我尝试过的任何分辨率都无法在显示器上获得任何类型的输出。
  • 更改显示器纵横比:我在某处看到使两台显示器具有相同的宽高比可以解决此问题,因此我尝试将辅助显示器更改为 16:9,与主显示器相同,但这并没有解决我的问题。

我的怀疑

显示器设置在 Windows 上运行良好,因此我将此作为没有电线或连接器损坏的证据,并且这不是硬件问题。

这可能也不是 xrandr (或 xorg,或 x server,或其他什么 - 我不太熟悉这些差异)的问题,因为那里的所有输出对我来说似乎都很好且正确。

我相信这可能是我的驱动程序设置的问题,因为它明显已连接并获得某种信号但实际上没有显示任何内容。据我所知,我的显卡受支持,但我认为这可能是 amdgpu 或我的驱动程序设置的问题。我无法让我的系统使用 radeon 而不是 amdgpu,这可能是相关的。

答案1

amdgpu.dc=0通过 GRUB 添加到内核启动参数来修复此问题。

这个线程有关解决方法的一些解释。

答案2

部分答案:

我假设这是用现有的;Xorg.log启动 X 服务器的结果。xorg.conf如果不是,请删除您的xorg.conf并重试。

Xorg.log一开始看起来不错,特别是

[     4.129] (II) AMDGPU(0): Output DVI-D-0 using initial mode 1920x1080 +0+0.
[     4.129] (II) AMDGPU(0): Output DVI-D-1 using initial mode 1280x1024 +1920+0

意味着您有一个帧缓冲区(“桌面”),并且每个输出都显示帧缓冲区的一部分。

然而,事情并不止于此,一切看起来都已正确初始化,我们得到

[     4.702] (II) AMDGPU(0): EDID vendor "SAM", prod id 161
...
[     4.817] (II) AMDGPU(0): Allocate new frame buffer 1920x1080
[     4.817] (II) AMDGPU(0):  => pitch 8192 bytes

所以我们得到“SAM”的 EDID,它位于“DVI-D-1”上,第二时间,它为其分配一个新的帧缓冲区,我怀疑该帧缓冲区与共享的“桌面”帧缓冲区不同。这意味着,如果显示的是该帧缓冲区,您可以根据需要更改“桌面”帧缓冲区上的内容,但在“DVI-D-1”上,它只会显示其他帧缓冲区。这可能是黑色的,这就是你所看到的。

我从来没有见过这样的事情,我不知道会发生什么。

我会向 AMDGPU 维护者提交一份错误报告,看看他们是否有任何想法。包括完整的Xorg.log.

相关内容