xrandr中的“–scale 2×2”会导致显示器无法显示任何内容

我有一个4k外接主显示器,我正在尝试将1680×1050外接显示器连接到它的左边。

我尝试过使用:

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

看起来它应该工作,当我看到计算机认为在nvidia-settings中正在进行的操作时,它正确显示我的4k左侧的3200×2160显示器。

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

我可以解决这个问题的唯一方法是将缩放重置为1×1,此时图像返回(同时保持X服务器的大小。这意味着我必须滚动到死区才能进入我的监视器之间)。

所以我认为问题特别与xrandr中的2×2缩放有关。 我不知道该怎么办?

电脑正在运行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 

只是想补充一点,这是我长期以来一直在争吵的事情,每次我都放弃了 – 直到我决定一劳永逸地解决这个问题。 下面的解决方案适合我,希望它也适合你。

tl; dr:配置ForceFullCompositionPipeline=On

背景

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

我的设置是:

  • ThinkPad P50内置4K显示器,支持3840×2160(主要)
  • 外接显示器作为辅助显示器 – Dell U2412M – 1920×1200

我使用Ubuntu Gnome 16.04 LTS。

当我通过HDMI线缆+ HDMI-to-DVI转换器插入显示器时(因为显示器没有HDMI输入),一切都太大了。 在线各种文章建议使用xrandr在该显示器上配置--scale 2x2 ,这导致它几乎完全是黑色,顶部只有一条细线。

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

经过大量的谷歌搜索,其中大部分产生了问题,没有解决方案,我偶然发现了这个问题: https : //devtalk.nvidia.com/default/topic/891207/-355-11-358-09-viewportin-on-2nd -monitor-成果在-乱码显示换值-过3211×1800

因此,为了测试它,我使用以下命令配置它 – 假设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} 

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

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

谢谢Milos的出色解决方案,对我来说效果很好!

我有一点点补充。 除了使用命令行之外,您还可以在Nvidia-Settings UI中轻松设置ForceFullCompositionPipeline 。 为此,您必须转到“X Server Display Configuration”,单击“Advanced”并激活“强制完整组合管道”选项。 有关示例,请参阅https://imgur.com/a/3jE78 。


PS:我正在使用带有两个外接显示器(1920×1080; 1680×1050)和内置3k显示器(3840×2160)的三头设置。 为此,我应用以下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