xrandr 中的“--scale 2x2”导致显示器不显示任何内容

xrandr 中的“--scale 2x2”导致显示器不显示任何内容

我有一个 4k 外接主显示器,并且我正尝试在它的左侧连接一个 1680x1050 外接显示器。

我尝试过使用:

 xrandr --output HDMI-0 --scale 2x2 --pos 0x0 --fb 7200x2160 --output DP-4 --pos 3360x0

这似乎应该可以工作,当我查看计算机认为在 nvidia 设置中发生的事情时,它正确地在我的 4k 显示器左侧显示了一个 3200x2160 显示器。

但是,我的外接显示器只显示黑色,顶部有一条闪烁的线。

我能纠正这个问题的唯一方法是将缩放比例重置为 1x1,此时图像返回(同时保持 X 服务器大小。这意味着我必须滚动才能在显示器之间移动,而没有空间)。

所以我认为问题与 xrandr 中的 2x2 缩放有关。我不确定该怎么办?

该计算机运行的是 14.04 版本,配备 nvidia GTX960 和推荐的驱动程序 (352.63)

这是我的 xrandr 输出:

  Screen 0: minimum 8 x 8, current 7200 x 2160, maximum 16384 x 16384
  DVI-I-0 disconnected (normal left inverted right x axis y axis)
  DVI-I-1 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)
  DP-2 disconnected (normal left inverted right x axis y axis)
  DP-3 disconnected (normal left inverted right x axis y axis)
  HDMI-0 connected 1680x1050+0+0 (normal left inverted right x axis y axis) 474mm x 296mm
     1680x1050      59.9*+   60.0  
     1280x1024      75.0     60.0  
     1280x960       60.0  
     1152x864       75.0  
     1024x768       75.0     70.1     60.0  
     800x600        75.0     72.2     60.3     56.2  
     640x480        75.0     72.8     59.9  
  DP-4 connected primary 3840x2160+3360+0 (normal left inverted right x axis y axis) 527mm x 296mm
     3840x2160      60.0*+   30.0  
     2560x1440      60.0  
     2048x1280      60.0  
     1920x1200      59.9  
     1920x1080      60.0     60.0     59.9     50.0     24.0     60.0     50.0  
     1600x1200      60.0  
     1600x900       60.0  
     1280x1024      75.0     60.0  
     1280x720       60.0     59.9     50.0  
     1152x864       75.0  
     1024x768       75.0     60.0  
     800x600        75.0     60.3  
     720x576        50.0     50.1  
     720x480        59.9     60.1  
     640x480        75.0     59.9     59.9  

答案1

只是想补充一点,这是我长期以来一直在努力解决的问题,每次我都放弃了——直到我决定一劳永逸地解决这个问题。下面的解决方案对我有用,希望对你也一样。

tl;dr:配置ForceFullCompositionPipeline=On

背景

其中一些也希望提供更多的关键字,以便遇到类似问题的人最终寻找解决方案。

我的设置是:

  • ThinkPad P50 内置 4K 显示屏,分辨率为 3840×2160(主)
  • 外接显示器作为辅助显示器 - Dell U2412M - 1920×1200

我使用 Ubuntu Gnome 16.04 LTS。

当我通过 HDMI 电缆 + HDMI 转 DVI 转换器插入显示器时(因为显示器没有 HDMI 输入),所有东西都太大了。网上的各种文章都建议使用该显示器xrandr进行配置--scale 2x2,结果显示器几乎完全变黑,顶部只能看到一条细线。

我碰到了这个问题,虽然2x2.001缩放解决方案使显示器能够实际显示内容,但它还在 X 屏幕下方添加了一个额外的像素,导致当光标到达屏幕顶部/底部时出现轻微的向上/向下滚动。

经过大量的 Google 搜索后,其中大部分都出现了问题而没有解决方案,我偶然发现了这一点:https://devtalk.nvidia.com/default/topic/891207/-355-11-358-09-viewportin-on-2nd-monitor-results-in-garbled-display-for-values-over-3211x1800

因此,为了测试它,我使用以下命令对其进行了配置 - 假设xrandr尚未配置缩放。

$ nvidia-settings -q CurrentMetaMode

  Attribute 'CurrentMetaMode' (lilicorp:1.0): id=50, switchable=no, source=RandR :: DPY-4: nvidia-auto-select @3840x2160 +0+0 {ViewPortIn=3840x2160, ViewPortOut=3840x2160+0+0}, DPY-1: nvidia-auto-select @1920x1200 +3840+0 {ViewPortIn=1920x1200, ViewPortOut=1920x1200+0+0}

这将显示CurrentMetaMode值,这是我ForceFullCompositionPipeline=On为两个显示器添加选项的地方。请注意,这DPY-4是我的内置笔记本电脑显示器,而DPY-1外接显示器。

::实际需要配置的字符串是该命令输出之后的字符串。

$ nvidia-settings --assign CurrentMetaMode="DPY-4: nvidia-auto-select @3840x2160 +0+0 {ViewPortIn=3840x2160, ViewPortOut=3840x2160+0+0, ForceFullCompositionPipeline=On}, DPY-1: nvidia-auto-select @1920x1200 +3840+0 {ViewPortIn=1920x1200, ViewPortOut=1920x1200+0+0, ForceFullCompositionPipeline=On}"

此后,我运行:

$ xrandr --output DP-1 --scale=2x2

最后,外部显示分辨率很好,没有滚动或任何其他问题。

请注意,运行这些命令后,CurrentMetaMode与分配的内容略有不同,可能是由于应用了缩放:

$ nvidia-settings -q CurrentMetaMode

  Attribute 'CurrentMetaMode' (lilicorp:1.0): id=50, switchable=no, source=RandR :: DPY-4: nvidia-auto-select @3840x2160 +0+0 {ViewPortIn=3840x2160, ViewPortOut=3840x2160+0+0, ForceCompositionPipeline=On, ForceFullCompositionPipeline=On}, DPY-1: nvidia-auto-select @3840x2400 +3840+0 {Transform=(2.000000,0.000000,0.000000,0.000000,2.000000,0.000000,0.000000,0.000000,1.000000), ViewPortIn=3840x2400, ViewPortOut=1920x1200+0+0, ResamplingMethod=Bilinear, ForceCompositionPipeline=On, ForceFullCompositionPipeline=On}

希望这也能为其他人解决问题!

答案2

我遇到了完全相同的问题。我用 解决了这个问题--scale 2x2.001。奇怪的是,--scale 2x1.9992x2.0001不起作用,所以一定要尝试 2 左右的几个数字。

答案3

感谢 Milos 提供的出色解决方案,对我来说非常有用!

我有一个小小的补充。除了使用命令行,您还可以ForceFullCompositionPipeline在 Nvidia-Settings UI 中轻松设置。为此,您必须转到“X 服务器显示配置”,单击“高级”,然后激活“强制全合成管道”选项。请参阅https://i.stack.imgur.com/sLsX4.jpg举个例子。


PS:我使用的是三头设置,包括两个外接显示器(1920x1080;1680x1050)和一个内置 3k 显示器(3840x2160)。为了实现此功能,我应用了以下 xrandr-config:

xrandr --output eDP-1-1 --auto --output HDMI-0 --auto --scale 2x2 --above eDP-1-1 --output DP-1 --auto --scale 2x2 --rotate left --right-of eDP-1-1

相关内容