web-dev-qa-db-ja.com

NVIDIAを使用してUbuntu 18.04で画面のティアリングを解決するにはどうすればよいですか?

Nvidiaドライバー-「フルコンポジションパイプラインを強制する」をチェックできない の答えは、ラップトップが外部モニターを検出できないようにすることです。ソリューションを元に戻すと、2番目のモニターを検出する機能が復元されます。どのようなタイプのビデオ再生でも、引き裂かれたままです。 Youtube、ビデオプレーヤーなど.

Ubuntu 18.04とi7-8750HおよびRTX 2070(nvidia-driver-430)を使用しています。

編集:

inxiの出力:

Graphics:  Card-1: Intel Device 3e9b
           Card-2: NVIDIA Device 1f10
           Display Server: x11 (X.Org 1.20.4 )
           drivers: modesetting,nvidia (unloaded: fbdev,vesa,nouveau)
           Resolution: [email protected], [email protected]
           OpenGL: renderer: GeForce RTX 2070/PCIe/SSE2
           version: 4.6.0 NVIDIA 430.26

Nvidia設定のスクリーンショット:

nvidia settings

3
gord0

更新08/09/2019:

gord (OP)が彼の comment に正しいようです。以前に説明したすべての手順を実行する必要はありません(誰かが役立つと思った場合に備えて、私はそれらを削除しません)。

あなたがしなければならないのは:

  1. NVIDIA Xサーバー設定を開きます。

  2. X Server Display Configurationに移動します。

  3. 必要な画面を選択します。

  4. Advancedボタンをクリックします。

  5. Force Composition PipelineまたはForce Full Composition Pipelineを有効にします(両方を試して、最良の結果が得られるパイプラインを有効にします)。

または、ターミナルで次のコマンドを実行して、Force Composition PipelineまたはForce Full Composition Pipelineを有効にできます。

  • フォース構成パイプラインの場合:

    nvidia-settings --assign CurrentMetaMode="$(xrandr | sed -nr '/(\S+) connected (primary )?([0-9]+x[0-9]+)(\+\S+).*/{ s//\1: \3 \4 { ForceCompositionPipeline = On }, /; H}; ${ g; s/\n//g; s/, $//; p }')"
    
  • Force Full Composition Pipelineの場合:

    nvidia-settings --assign CurrentMetaMode="$(xrandr | sed -nr '/(\S+) connected (primary )?([0-9]+x[0-9]+)(\+\S+).*/{ s//\1: \3 \4 { ForceFullCompositionPipeline = On }, /; H}; ${ g; s/\n//g; s/, $//; p }')"
    

これらのコマンドは、xrandrおよびsedをいくつかの 正規表現 とともに使用して、現在のモニター設定を適切な形式で取得し、それをnvidia=settings --assignコマンドへの入力として使用して、目的の設定を有効にします。

これで画面のちらつきはなくなります。

ただし、私の場合、上記のオプションは両方とも再起動後に無効になります。

再起動後にForce Composition PipelineまたはForce Full Composition Pipelineを有効にするには、次の手順を実行します。

  • 上記のコマンドから適切なコマンドを実行し、正しく機能することを確認します。つまり、モニターに画面のちらつきがないことを確認します。

  • 起動アプリケーションに次のコマンドのいずれかを追加します(最適な方法に応じて異なります)。

    • フォース構成パイプラインの場合:

      bash -c "sleep 10 && nvidia-settings --assign CurrentMetaMode=\"$(xrandr | sed -nr '/(\S+) connected (primary )?([0-9]+x[0-9]+)(\+\S+).*/{ s//\1: \3 \4 { ForceCompositionPipeline = On }, /; H}; ${ g; s/\n//g; s/, $//; p }')\""
      
    • Force Full Composition Pipelineの場合:

      bash -c "sleep 10 && nvidia-settings --assign CurrentMetaMode=\"$(xrandr | sed -nr '/(\S+) connected (primary )?([0-9]+x[0-9]+)(\+\S+).*/{ s//\1: \3 \4 { ForceFullCompositionPipeline = On }, /; H}; ${ g; s/\n//g; s/, $//; p }')\""
      

    sleep 10コマンドを実行する前に、nvidia=settings --assignコマンドは10秒の遅延を追加して、デスクトップが完全にロードされたことを確認します。デスクトップが完全にロードされるまでに時間がかかる場合は、さらに大きな遅延を追加する必要がある場合があります。


古い答え。上記の方法がうまくいかない場合は、これらを試してください。

あなたが投稿した回答で示唆されていることは、Ubuntu 16.04にとって正しいものです。

Ubuntu 18.04以降のバージョンでは、options nvidia_387_drm modeset=1options nvidia-drm modeset=1に変更する必要があります(Nvidiaドライバーのバージョンは不要になりました)。

したがって、Ubuntu 18.04以降のバージョンでは、次のことを行う必要があります。

  • /etc/modprobe.dというファイルをzz-nvidia-modeset.confディレクトリに作成します。

  • 次の行を追加します。

    #enable prime-sync
    options nvidia-drm modeset=1
    
  • ターミナルから:

    Sudo update-initramfs -u
    
  • リブート。

Nvidiaアダプタを有効にするには、再起動後、次を実行する必要があります

Sudo prime-select nvidia

次に、ログアウトして再度ログインします。

編集:Gnomeを使用している場合、lightdmでは外部モニターがnomodeset=1を使用できないため、gdmなどの別のディスプレイマネージャーを使用する必要があります。 。

lightdmをインストールするには:

Sudo apt install lightdm

lightdmをインストールした後

Sudo dpkg-reconfigure lightdm

表示されるターミナルウィンドウでディスプレイマネージャーとして選択します。

4
user3140225