Linuxでビデオが破れるのはなぜですか?


101

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

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

特にWindows XPでも最新のハードウェアではこれらの問題がないため、これは大きな問題です。誰かが何かにLinuxを使用する場合、CLI以外の操作を実行するときに絶え間ない欠陥が現れるのはなぜですか?

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

過去にこの問題について助けを求めるたびに、それはエッジケースとして扱われます(問題を再現した回数が与えられていると信じることは難しいと思います)、または潜在的な解決策が得られますせいぜい引き裂きを最小限にします。


2
使用するDEについては言及しません。KDEは1年ほど前から引き裂かれていました。
-Sparhawk

1
どうすれば簡単に問題を再現できますか?Debian / Ubuntu / Mintコンピューターですか?
Xen2050

50
このXKCDはここに非常にうまく収まっているようです...-
アンジェ

引き裂きの私の経験は完全に異なっています。Linuxでゲームや映画を見るのはとてもうれしいです。Steamは実際、Linuxを素晴らしいゲームの実行可能なプラットフォームにしています。私は最近ウィッチャー2とタロスの原理をプレイしてきましたが、ゲームプレイの約50時間で引き裂きは見られませんでした。これは、Archの専用ドライバーを備えたNvidiaカードを使用する場合です。ビルドに正確な仕様が指定されている場合、この質問はより役立つとXen2050に同意します。私は問題があることを否定していません、私はちょうど非常に良い経験をしました。
ラビリンス

Nvidiaの合成により、2007年にNvidiaを使用していたときの問題が解決しました。フルスクリーンではありませんが、フルスクリーンウィンドウがコンポジターをオフにするため、OpenGLゲームを実行することを想定しています。Intelでは、Xでセクション「デバイス」オプション「TearFree」「true」を設定しようとしましたか?ビデオRAMの使用量は2倍になりますが、うまくいくと思います。
ザンリンクス

回答:


92

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

Waylandは、Xをやや熱心に置き換えようとしていますが、そのコアで意的なvsync同期をサポートし、すべてのフレームが正確に完璧になるように宣伝されています。

「wayland video tearing」をすばやくグーグルで検索すると、すべての詳細情報が見つかります。


38
+1「Xが問題だから、Waylandを見てください」。
HalosGhost

2
外出先で@HalosGhostウェイランド伝道:)まだネットワークセッションのサポートはありませんか?
カガリさん

3
@ kagali-sanウェイランドが完璧だとは言いませんでした(そうではありません)。しかし、それは間違いなくXよりも優れています。:)
HalosGhost

8
@ kagali-san:WestonがRDPバックエンドを 1年前にマージしたのは、ビデオのティアリングに関する質問に何らかの関連があることがわかった場合です。
-grawity

3
@orion:ありがとうございます。このページはwayland video tearing:P
トビアテサン

16

画面の破損は、主に2つの理由で発生します。まだ存在しないドライバーと、特定のウィンドウマネージャーとのvsyncの不足です。

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

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

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

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


5
あんまり。KDE(Kwinまたは他の作曲家と)は、NVidiaまたはIntelでまだ地獄のように涙を流しています。
イヴァン

1
Openboxなどは涙なしで動作します-コンプトンが素晴らしく動作するなど、単純に別のコンポジターを実行する必要があります。
wingedsubmariner

1
@wingedsubmariner、皆さんがopenboxについて言及するとき、fluxboxも意味しますか?
ナス

また、異なるウィンドウ環境でのWMの状態をメモしておくと非常に役立ちます。
ナス

@nass絶対に。ウィンドウマネージャは決して制限要因ではありません。
wingedsubmariner

14

nvidiaドライバー> = 365.20を使用している場合は、で「Force Composition Composition Line」オプションを有効にしてみてくださいnvidia-settings

ここに画像の説明を入力してください


レノボW520上のnVidia Quadro、Fedora 25、およびこれが機能しました:)
ジャーサー

4
また、そのようなオプションがない場合は、ウィンドウの下部にある[詳細設定]をクリックすると表示されます。なぜ、この「完全な組成パイプライン」はデフォルトでは有効になっていません..?
ラスト

1
@Rastかつてパフォーマンスの問題があったため。
ルスラン

ところで、少なくともIntelドライバーTearFreeには、対応するDeviceセクションに配置できるオプションもあるようです。試したところ、nvidiaのFull Composition Pipelineと非常によく似た結果が得られました。
ルスラン

再起動時に保存する設定を取得できないようです〜/ .xinitrcファイルを作成し、「nvidia-settings --load-config-only&。/ etc / X11 / xinit / xinitrc」を入れてみましたが、動作していないようでした
FragmentalStew

9

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

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

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

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

私の場合、KDE4では合成が無効になっています。有効にすると、ティアリングはなくなりました。編集:また、このkwin固有のバグレポートで説明されているように、ティアリングを取り除くために、KWinオプションでVSync戦略を[ 自動]から[ 再利用]画面コンテンツに変更する必要がありました。

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

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

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

1
XFCE(Xubuntu 16.04)では、合成はデフォルトで有効になっていますが、垂直ブランクへの同期は無効です。xfwm4-tweaks-settingsコマンドを使用して調整アプリケーションを表示し、[コンポジター]タブに上記のオプションがあります。オンにすることは大きな違いをもたらし、ここで確認できます:vsynctester.com/index.html(アニメーションの表示中に機能をオン/オフにします)。それは完璧ではありませんが、いくつかのフレームが欠落していますが、オフにしたときよりもはるかに優れています。
空手犬

1

ソリューションはこちらです: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。何らかの理由で起動に失敗する可能性があります。


0

Peppermint Linuxでは、[設定]> [Peppermint Control Center]に移動し、[デスクトップ効果]を選択して、[デスクトップ効果を有効にする]および[垂直ブランクに描画を同期する]を有効にします。


0

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

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

[すべての設定] / [ウィンドウマネージャーの微調整/コンポジター]に移動し、すべてを無効にします。

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.