web-dev-qa-db-ja.com

Linuxでビデオがこのような問題を引き裂くのはなぜですか?

私は10年以上の間、多くのLinuxのバリアント(主にDebianの派生物)を使用してきました。私が十分に解決したとは思えない問題の1つは、水平方向のティアリング、またはVsyncが適切に実装されていないという問題です。

私がこれを言ったのは、さまざまなモニターとNvidia/AMD/ATI/Intelグラフィックスカードを備えた4つの異なるコンピューターで5つの異なるディストリビューションを使用したためです。毎回、わずかな動きでもビデオがちぎれる問題がありました。

これは大きな問題です。特に、Windows XPには最新のハードウェアではこれらの問題がないためです。Linuxを何かに使用する場合、なぜ次のような場合に常に不具合が発生するのでしょうか。 CLI以外のことをしていますか?

この問題について知っている開発者はほとんどいないか、それを修正するのに十分注意していると思います。私はそこにあるほぼすべてのコンポジターを試してみましたが、通常、コンポジターにできる最善のことは問題を最小限に抑えることですが、排除することはしません。モニタのリフレッシュレートと同期するほど簡単ではないでしょうか。 OSSコミュニティーの中で、これを修正するコードをだれもがコミットできないようにしている政治はありますか?

私が過去にこの問題について助けを求めたときはいつでも、それはEdgeケースとして扱われる(私が問題を再現した回数が与えられているとは思えない)または、最大で引き裂きを最小限に抑えます。

109
Ravenstine

これはすべて、Xサーバーが古く、今日のグラフィックスハードウェアには不適切であり、基本的にすべての直接ビデオカード通信が古代の肥大化したコアの拡張(「パッチ」)として行われているためです。 Xサーバーは、ユーザーがウィンドウをレンダリングすることと、ウィンドウを表示する画面との間で同期をとるための組み込みの手段を提供しないため、レンダリングの途中でコンテンツが変更されます。これは、Xサーバーのよく知られている問題の1つです(Xサーバーの機能のモデル全体が古く、古くなっています-サブウィンドウでのイベント処理、ウィンドウに関するメタデータ、直接描画用のグラフィックプリミティブ...)。ウィジェットツールキットは、主にこれらすべてを検証したいのですが、それを処理するメカニズムがないため、ティアリングは依然として問題です。異なるドライバーを必要とする複数のカードがある場合、さらに問題が発生します。これに加えて、openglライブラリはxlibにハードワイヤードで依存しているため、Xを経由せずに独立して使用することはできません。

Waylandは、Xに置き換わろうとしていますが、熱心にVsync同期をサポートしており、すべてのフレームが完全に完璧になるように宣伝されています。

「ウェイランドビデオティアリング」をすぐにググると、すべての詳細情報が表示されます。

94
orion

Nvidiaドライバー> = 365.20を使用している場合は、nvidia-settingsで[フルコンポジションパイプラインを強制]オプションを有効にしてみてください。

enter image description here

19
FuzzyTree

画面のティアリングは、主に2つの理由で発生します-まだ存在しないドライバーと、特定のウィンドウマネージャーでのvsyncの欠如。

ドライバーに関しては、フリーとプロプライエタリの両方のドライバーがフリーティア合成をサポートしています(nvidiaとAMDの両方)。たとえば、 Catalyst(fglrx)でティアフリーデスクトップを有効にすると、フレームのドロップとラグが発生する可能性があるため、通常はデフォルトで無効になっています。オープンドライバーについては、vsyncがデフォルトで有効になっている必要があります。したがって、画面のティアリングの問題は、さまざまなドライバを試して構成することで解決できる場合があります。

ウィンドウマネージャーについては、Openbox、Awesomeなどの軽量wmがティアフリーをサポートしていないことがわかっています。 XFCE(具体的にはxfwm)は最近のリリースでそれを修正し、4.11/12はVsyncを備えています。 GNOME、KDE、Unity、Cinnamonなどの主要なデスクトップ環境でもティアリングに問題はありません。

それでも画面がティアリングする場合は、ComptonやKwinなどの別の合成マネージャーを試してみてください。 KwinはKDEのウィンドウマネージャーであり、vsyncをサポートしておらず、非常にうまく機能していたときに、XFCEでkwinを使用した経験があります。

したがって、ここでの解決策は実験であり、driver/wmの1つの組み合わせで壊れているものは別の組み合わせでも機能します。オープンソースのドライバーがより高度になり、waylandに切り替えることでXorgの古い問題が解消される可能性があるため、状況はすぐに改善すると思います。

17
kirill-a

ここで強い引き裂きがありましたが、解決しました。

Xorgサーバーの動作に関するこの( すばらしい説明 )を読んだ後、合成が有効なウィンドウマネージャーを使用しない限り、Xサーバーがウィンドウの更新をランダムなタイミングでメモリカードに直接ペイントすることに気付きました。

合成が有効な場合、ウィンドウマネージャーは異なるウィンドウメモリバッファーからのすべての変更をまとめ、画面全体の結果の画像を作成し、それを一度にディスプレイカードにダンプします。

最近のほとんどのディストリビューションには、合成ウィンドウマネージャーがあります。 KDEのKWin、GnomeのMutter、CinnamonのMuffin、MateのMarco、XFCEのxfwmなど。ただし、リソースを節約するために合成を無効にすることもできます。

私の場合、KDE4では合成が無効になっています。有効にすると、引き裂きは消えました。 [〜#〜] edit [〜#〜]:VSync戦略をKWinオプションでAutomaticから変更する必要もありましたから画面の内容を再利用してティアリングを取り除くために、この kwin固有のバグレポート で説明したように。

ドライバーのオプションも要因となります。私の場合、デフォルトのオプションは問題なく動作します。 Arch Wikiには、 IntelカードNVIDIAカード など、さまざまなディスプレイカードのオプションに関する優れたドキュメントがあります。

現在のxorg設定でオプションが有効になっているかどうかを確認するには、ログを確認できます。たとえば、DRIが有効かどうかを確認するには:

cat /var/log/Xorg.0.log | grep DRI
11
David

解決策はここにあります: Linux Mint 17.3 MATEはComptonに付属

Desktop Settings-> Windows-> Window Managerに移動し、Metacity + Comptonを選択するだけです。それでおしまい。

私はAMDビデオカードを持っていますが、オープンソースドライバーをそのまま使用できます。

独自仕様のAMDドライバーの場合、HTML5ビデオをフルスクリーンで最大化すると、画面全体を覆う青色が表示される場合があります。これを修正するには、以下のスクリプトを作成してchmod +xしてください:

#!/bin/bash
killall compton 2> /dev/null
compton -b --unredir-if-possible

システムを再起動するたびに実行しますが、Startup Applicationsに追加しようとしないでください。何らかの理由で起動が中断する可能性があります。

2
Constantine

Peppermint Linuxで、[環境設定]> [Peppermintコントロールセンター]に移動し、[デスクトップ効果]を選択して、[デスクトップ効果を有効にする]と[垂直ブランクに描画を同期する]を有効にします。

0
Stefan Reich

Mate 1.20.1を搭載したUbuntu 18.04では、設定後の https://www.vsynctester.com/ でvsyncの問題はほとんど発生しませんでした:

コントロールパネル> Mate Tweak>ウィンドウ>ウィンドウ管理:Marco(コンポジットなし)

(AMD Radeon HD 6450)

0
cweiske

私はLinux Mint XFCEを使用していますが、この問題はしばらくの間私を苛立たせました。 Intel統合グラフィックカードを搭載したラップトップの解決策を見つけました 解決されたティアリングの問題 。 NVIDIAカードを搭載した私のデスクトップでは、そのトリックは機能しません。しかし、私は犯人を見つけたばかりです。

ウィンドウ合成を無効にすると、すぐにパフォーマンスが向上します。方法は次のとおりです。

All Settings/Window Manager Tweaks/Compositorに移動して、全体を無効にします。

これはディストリビューション固有のものであり、私はXFCEを使用したMintであることを覚えておいてください。他のディストリビューションで同様のものを見つける方法はわかりません。

0
Dejan Petrovic