web-dev-qa-db-ja.com

xrandrの「--scale 2x2」により、モニターには何も表示されません

4kの外部メインモニターがあり、その左側に1680x1050の外部モニターを接続しようとしています。

私は使用してみました:

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

これは動作するはずのようで、nvidia-settingsでコンピューターが何をしていると思うかを見ると、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  
10
m4p85r

これは私が長い間戦ってきたものであり、それをあきらめるたびに-それを一度だけ理解することにしたまで、付け加えたかっただけです。以下の解決策は私にとってはうまくいきますが、あなたにとってもうまくいくことを願っています。

tl; dr:設定ForceFullCompositionPipeline=On

バックグラウンド

これのいくつかは、同様の問題を持つ誰かが解決策を探すことになった場合により多くのキーワードを提供することも期待しています。

私のセットアップは次のとおりです。

  • 3840×2160(プライマリ)の4Kディスプレイを内蔵したThinkPad P50
  • セカンダリディスプレイとしての外部モニタ-Dell U2412M-1920×1200

Ubuntu Gnome 16.04 LTSを使用します。

(モニターにHDMI入力がないため)HDMIケーブル+ HDMIからDVIコンバーター経​​由でモニターを接続すると、すべてが大きすぎます。さまざまなオンライン記事で、そのディスプレイで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-3211x18

それをテストするために、次のコマンドを使用してこれを構成しました-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}

これが他の誰かの問題も解決することを願っています!

5
Milos Levacic

私はまったく同じ問題を抱えていました。 --scale 2x2.001で解決しました。奇妙なことに、--scale 2x1.999または2x2.0001は機能しませんでしたので、2前後の数を試してください。

4
igogo

素晴らしいソリューションをありがとう、Milosに感謝します。

私は少し追加しました。コマンドラインを使用する以外に、Nvidia-Settings UIでForceFullCompositionPipelineを快適に設定することもできます。このためには、「X Server Display Configuration」に進み、「Advanced」をクリックして、「Force Full Composition Pipeline」オプションを有効にします。例については https://imgur.com/a/3jE78 をご覧ください。


PS:2台の外部モニター(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
2