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

m4p*_*85r 11 xrandr display nvidia multiple-monitors display-resolution

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

我试过使用:

 xrandr --output HDMI-0 --scale 2x2 --pos 0x0 --fb 7200x2160 --output DP-4 --pos 3360x0
Run Code Online (Sandbox Code Playgroud)

看起来它应该可以工作,当我查看计算机在 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  
Run Code Online (Sandbox Code Playgroud)

Mil*_*cic 5

只是想补充一点,这是我长期以来一直在与之抗争的事情,每次我都放弃了 - 直到我决定一劳永逸地解决它。下面的解决方案对我有用,希望它也适用于你。

TL;博士:配置 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 屏幕下方添加了一个额外的像素,当光标到达屏幕的顶部/底部时,会导致轻微的向上/向下滚动。

经过大量的谷歌搜索,其中大部分都产生了问题并且没有解决方案,我偶然发现了这个: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}
Run Code Online (Sandbox Code Playgroud)

这将显示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}"
Run Code Online (Sandbox Code Playgroud)

在此之后,我跑了:

$ xrandr --output DP-1 --scale=2x2
Run Code Online (Sandbox Code Playgroud)

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

请注意,运行这些命令后,这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}
Run Code Online (Sandbox Code Playgroud)

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