「ハードウェアビデオアクセラレーション」の版間の差分
Kusanaginoturugi (トーク | 投稿記録) 翻訳 |
Kusanaginoturugi (トーク | 投稿記録) == 対応状況 == を末尾に移動(en:Special:PermanentLink/671147 に追従) |
||
| 12行目: | 12行目: | ||
2007年以前のビデオカードについては [[XvMC]] を参照してください。ドライバーとアプリケーションのサポートの包括的な概要については、[[#比較一覧]] を参照してください。 |
2007年以前のビデオカードについては [[XvMC]] を参照してください。ドライバーとアプリケーションのサポートの包括的な概要については、[[#比較一覧]] を参照してください。 |
||
== インストール == |
|||
=== Intel === |
|||
[[Intel Graphics]] オープンソースドライバーは VA-API に対応しています: |
|||
* CannonLake (あるいは Broadwell) 以降の HD Graphics シリーズは {{Pkg|intel-media-driver}} によってサポートされています。 |
|||
* Coffee Lake までの GMA 4500 シリーズ以降の GPU は {{Pkg|libva-intel-driver}} によってサポートされています。 |
|||
* GMA 4500 の H.264 デコードは {{AUR|libva-intel-driver-g45-h264}} によってサポートされています。[[Intel#GMA 4500 での H.264 デコーディング]]を参照。 |
|||
* Haswell から Skylake までのハイブリッド VP8 エンコードと VP9 デコードは {{AUR|intel-hybrid-codec-driver}} によってサポートされています。 |
|||
=== NVIDIA === |
|||
[[Nouveau]] オープンソースドライバーは VA-API と VDPAU に対応しています: |
|||
* GeForce GTX 750 までの GeForce 8 シリーズ以降の GPU は {{Pkg|libva-mesa-driver}} と {{Pkg|mesa-vdpau}} によってサポートされています。 |
|||
* NVIDIA のバイナリドライバーから抽出される {{AUR|nouveau-fw}} ファームウェアパッケージが [https://nouveau.freedesktop.org/wiki/VideoAcceleration/#firmware 必要] です。 |
|||
[[NVIDIA]] プロプライエタリドライバーは VDPAU と NVDECODE/NVENCODE に対応しています: |
|||
* VDPAU は GeForce 8 シリーズ以降で {{Pkg|nvidia-utils}} によってサポートされています。 |
|||
* NVDECODE/NVENCODE は Kepler 以降で {{Pkg|nvidia-utils}} によってサポートされています。 |
|||
=== ATI/AMD === |
|||
[[ATI]] と [[AMDGPU]] オープンソースドライバーは VA-API と VDPAU に対応しています: |
|||
* VDPAU は Radeon R300 以降の GPU で {{Pkg|mesa-vdpau}} によってサポートされています。 |
|||
* VA-API は Radeon HD 2000 以降の GPU で {{Pkg|libva-mesa-driver}} によってサポートされています。 |
|||
[[AMD Catalyst]] プロプライエタリドライバーは [[AMD Catalyst#ビデオアクセラレーション|XvBA]] によって VA-API に対応しています。 |
|||
[[AMDGPU PRO]] プロプライエタリドライバーは AMDGPU ドライバー上で動作し、VA-API と VDPAU に対応しています。 |
|||
=== 互換レイヤー === |
|||
デバイスドライバーが VA-API をサポートしていない場合に VA-API を使うには: |
|||
* {{Pkg|libva-vdpau-driver}} – VDPAU の VA-API バックエンド。 |
|||
* {{AUR|libva-vdpau-driver-chromium}} – Chromium で動作するようにパッチが適用された VDPAU の VA-API バックエンド。 |
|||
デバイスドライバーが VDPAU をサポートしていない場合に VDPAU を使うには: |
|||
* {{Pkg|libvdpau-va-gl}} – VA-API の VDPAU バックエンド ([https://github.com/i-rinat/libvdpau-va-gl/issues/67#issuecomment-318470175 H.264 のみサポート])。 |
|||
== 確認 == |
|||
{{Tip| |
|||
* ハードウェアアクセラレーションをテストするときは [[mpv#ハードウェアデコード|mpv]] が向いています。 |
|||
* [[Radeon]] の場合、以下のコマンドでドライバーの名前を確認できます: |
|||
{{hc|$ grep -iE 'vdpau {{!}} dri driver' ~/.local/share/xorg/Xorg.0.log| |
|||
(II) RADEON(0): [DRI2] DRI driver: radeonsi |
|||
(II) RADEON(0): [DRI2] VDPAU driver: radeonsi |
|||
}} |
|||
上記の場合、VA-API と VDPAU の両方で {{ic|radeonsi}} が使えます。 |
|||
* [[GDM]] を使っている場合は {{ic|journalctl -b {{!}} grep -iE 'vdpau {{!}} dri driver'}} を実行してください。 |
|||
}} |
|||
=== VA-API の確認 === |
|||
VA-API の設定は {{Pkg|libva-utils}} パッケージに含まれている {{ic|vainfo}} を実行することで確認できます: |
|||
{{hc|$ vainfo|<nowiki> |
|||
libva info: VA-API version 0.39.4 |
|||
libva info: va_getDriverName() returns 0 |
|||
libva info: Trying to open /usr/lib/dri/i965_drv_video.so |
|||
libva info: Found init function __vaDriverInit_0_39 |
|||
libva info: va_openDriver() returns 0 |
|||
vainfo: VA-API version: 0.39 (libva 1.7.3) |
|||
vainfo: Driver version: Intel i965 driver for Intel(R) Skylake - 1.7.3 |
|||
vainfo: Supported profile and entrypoints |
|||
VAProfileMPEG2Simple : VAEntrypointVLD |
|||
VAProfileMPEG2Simple : VAEntrypointEncSlice |
|||
VAProfileMPEG2Main : VAEntrypointVLD |
|||
VAProfileMPEG2Main : VAEntrypointEncSlice |
|||
VAProfileH264ConstrainedBaseline: VAEntrypointVLD |
|||
VAProfileH264ConstrainedBaseline: VAEntrypointEncSlice |
|||
VAProfileH264ConstrainedBaseline: VAEntrypointEncSliceLP |
|||
VAProfileH264Main : VAEntrypointVLD |
|||
VAProfileH264Main : VAEntrypointEncSlice |
|||
VAProfileH264Main : VAEntrypointEncSliceLP |
|||
VAProfileH264High : VAEntrypointVLD |
|||
VAProfileH264High : VAEntrypointEncSlice |
|||
VAProfileH264High : VAEntrypointEncSliceLP |
|||
VAProfileH264MultiviewHigh : VAEntrypointVLD |
|||
VAProfileH264MultiviewHigh : VAEntrypointEncSlice |
|||
VAProfileH264StereoHigh : VAEntrypointVLD |
|||
VAProfileH264StereoHigh : VAEntrypointEncSlice |
|||
VAProfileVC1Simple : VAEntrypointVLD |
|||
VAProfileVC1Main : VAEntrypointVLD |
|||
VAProfileVC1Advanced : VAEntrypointVLD |
|||
VAProfileNone : VAEntrypointVideoProc |
|||
VAProfileJPEGBaseline : VAEntrypointVLD |
|||
VAProfileJPEGBaseline : VAEntrypointEncPicturehttp://img.2chan.net/b/futaba.php?mode=cat |
|||
VAProfileVP8Version0_3 : VAEntrypointVLD |
|||
VAProfileVP8Version0_3 : VAEntrypointEncSlice |
|||
VAProfileHEVCMain : VAEntrypointVLD |
|||
VAProfileHEVCMain : VAEntrypointEncSlice</nowiki> |
|||
}} |
|||
あなたのカードを使ってデコードできるフォーマットが {{ic|VAEntrypointVLD}} で、エンコードできるフォーマットが {{ic|VAEntrypointEncSlice}} で示されます。 |
|||
上の例では、以下の行があることから {{ic|i965}} ドライバーが使われていることが確認できます: |
|||
libva info: Trying to open /usr/lib/dri/'''i965'''_drv_video.so |
|||
{{ic|vainfo}} を実行したときに以下のようなエラーが表示される場合: |
|||
libva info: va_openDriver() returns -1 |
|||
vaInitialize failed with error code -1 (unknown libva error),exit |
|||
適切なドライバーを設定する必要があります。[[#VA-API の設定|VA-API の設定]]を見てください。 |
|||
=== VDPAU の確認 === |
|||
{{pkg|vdpauinfo}} をインストールしてから、以下のコマンドを実行してください。VDPAU ドライバーがロードされていることや、現在の設定が確認できます: |
|||
{{hc|$ vdpauinfo|<nowiki> |
|||
display: :0 screen: 0 |
|||
API version: 1 |
|||
Information string: G3DVL VDPAU Driver Shared Library version 1.0 |
|||
Video surface: |
|||
name width height types |
|||
------------------------------------------- |
|||
420 16384 16384 NV12 YV12 |
|||
422 16384 16384 UYVY YUYV |
|||
444 16384 16384 Y8U8V8A8 V8U8Y8A8 |
|||
Decoder capabilities: |
|||
name level macbs width height |
|||
---------------------------------------------------- |
|||
MPEG1 --- not supported --- |
|||
MPEG2_SIMPLE 3 9216 2048 1152 |
|||
MPEG2_MAIN 3 9216 2048 1152 |
|||
H264_BASELINE 41 9216 2048 1152 |
|||
H264_MAIN 41 9216 2048 1152 |
|||
H264_HIGH 41 9216 2048 1152 |
|||
VC1_SIMPLE 1 9216 2048 1152 |
|||
VC1_MAIN 2 9216 2048 1152 |
|||
VC1_ADVANCED 4 9216 2048 1152 |
|||
..</nowiki>}} |
|||
== 設定 == |
|||
{{Note|VA-API と VDPAU のどちらでもビデオドライバーは基本的にハードウェアビデオアクセラレーションを自動的に有効化しますが、場合によっては手動で VA-API/VDPAU を手動で有効にする必要があります。有効化されているかどうか[[#確認|確認]]をしてください。}} |
|||
=== VA-API の設定 === |
|||
VA-API のドライバーは自動で認識されます [https://www.freedesktop.org/wiki/Software/vaapi/#driversback-endsthatimplementva-api]。使用されているドライバーを確認する方法は[[#確認|確認]]を見てください。{{ic|LIBVA_DRIVER_NAME}} [[環境変数]]を設定することで使用するドライバーを上書きできます: |
|||
* [[Intel Graphics]]: |
|||
** {{Pkg|libva-intel-driver}} の場合は {{ic|i965}} を使ってください。 |
|||
** {{Pkg|intel-media-driver}} の場合は {{ic|iHD}} を使ってください。 |
|||
* NVIDIA: |
|||
** [[Nouveau]] の場合は {{ic|nouveau}} を使ってください。 |
|||
** [[NVIDIA]] の場合は {{ic|vdpau}} を使ってください。 |
|||
* ATI/AMD: |
|||
** [[AMDGPU]] の場合は {{ic|radeonsi}} を使ってください。 |
|||
** [[AMD Catalyst]] の場合は {{ic|fglrx}} を使ってください。 |
|||
{{Note| |
|||
* インストールされているドライバーは {{ic|/usr/lib/dri/}} ディレクトリを見ることで確認できます。{{ic|/usr/lib/dri/'''${LIBVA_DRIVER_NAME}'''_drv_video.so}} として使われます。 |
|||
* 一部のドライバーは互換性を保つために異なる名前を使っていることがあります。{{ic|sha1sum /usr/lib/dri/*}} を実行することで確認できます。 |
|||
* {{ic|LIBVA_DRIVERS_PATH}} を使うことで VA-API ドライバーのパスを上書きできます。 |
|||
* バージョン 12.0.1 から {{Pkg|libva-mesa-driver}} は {{ic|gallium}} の代わりとして {{ic|radeonsi}} を提供しています。 |
|||
}} |
|||
=== VDPAU の設定 === |
|||
VDPAU で使用されるドライバーは自動的に認識されますが、{{ic|VDPAU_DRIVER}} [[環境変数]]を使うことで上書きすることができます。 |
|||
使用しているビデオドライバーにあわせて適切なドライバーの名前を指定してください: |
|||
* Intel Graphics や AMD Catalyst の場合 {{ic|va_gl}} に[[#Failed_to_open_VDPAU_backend|設定]]する必要があります。 |
|||
* オープンソースの AMD/ATI ドライバーの場合、使用している GPU にあわせて適切なドライバーを設定してください。[[#確認|確認]]を参照。 |
|||
* オープンソースの Nouveau ドライバーの場合は {{ic|nouveau}} に設定してください。 |
|||
* NVIDIA のプロプライエタリドライバーの場合は {{ic|nvidia}} に設定してください。 |
|||
{{Note| |
|||
* インストールされているドライバーは {{ic|/usr/lib/vdpau/}} ディレクトリを見ることで確認できます。{{ic|/usr/lib/vdpau/libvdpau_'''${VDPAU_DRIVER}'''.so}} として使われます。 |
|||
* 一部のドライバーは互換性を保つために異なる名前を使っていることがあります。{{ic|sha1sum /usr/lib/vdpau/*}} を実行することで確認できます。 |
|||
* ハイブリッド構成 (NVIDIA と AMD の両方のカードが搭載されている) 場合、{{ic|1=DRI_PRIME=1}} を[[環境変数|設定]]する必要があるかもしれません。詳しくは [[PRIME]] を参照。}} |
|||
== トラブルシューティング == |
|||
=== Failed to open VDPAU backend === |
|||
{{pkg|libvdpau-va-gl}} を使用している場合に {{ic|VDPAU_DRIVER}} を上書きしないと発生するエラーです。何らかの理由で VDPAU が使用するドライバーを正しく認識できていません。[[#VDPAU の設定|VDPAU の設定]]を見てください。 |
|||
VA-API を使用するようにメディアプレイヤーを設定することで良い結果を得られる可能性があります。[[#ソフトウェア|ソフトウェア]]を参照。 |
|||
=== VAAPI init failed === |
|||
エラーは {{ic|libva: /usr/lib/dri/i965_drv_video.so init failed}} という行で確認できます。[[Wayland]] が正しく認識されていないことが原因で発生します。{{ic|$DISPLAY}} の設定を解除することで mpv, mplayer, VLC などは X11 であると誤認しないようになります。mpv の場合は {{ic|1=--opengl-backend=wayland}} パラメータを追加することでも解決できます。 |
|||
=== AMDGPU ドライバーを使用したビデオデコード時の破損や歪み === |
|||
[[AMDGPU]] ドライバーでビデオデコードの破損または歪みが発生する場合は、{{ic | 1 = allow_rgb10_configs = false}} を [[環境変数]] または {{ic | driconf}} として設定します。 [https://bugs.freedesktop.org/show_bug.cgi?id=106490] |
|||
== 対応状況 == |
== 対応状況 == |
||
| 269行目: | 469行目: | ||
{{Tip|VP8/VP9 のハードウェアデコードが使えない場合に YouTube を視聴する際に CPU の使用量を減らしたいときは h264ify 拡張を使ってください ([https://addons.mozilla.org/en-US/firefox/addon/h264ify/ Firefox]/[https://chrome.google.com/webstore/detail/h264ify/aleakchihdccplidncghkekgioiakgal Chromium])。}} |
{{Tip|VP8/VP9 のハードウェアデコードが使えない場合に YouTube を視聴する際に CPU の使用量を減らしたいときは h264ify 拡張を使ってください ([https://addons.mozilla.org/en-US/firefox/addon/h264ify/ Firefox]/[https://chrome.google.com/webstore/detail/h264ify/aleakchihdccplidncghkekgioiakgal Chromium])。}} |
||
== インストール == |
|||
=== Intel === |
|||
[[Intel Graphics]] オープンソースドライバーは VA-API に対応しています: |
|||
* CannonLake (あるいは Broadwell) 以降の HD Graphics シリーズは {{Pkg|intel-media-driver}} によってサポートされています。 |
|||
* Coffee Lake までの GMA 4500 シリーズ以降の GPU は {{Pkg|libva-intel-driver}} によってサポートされています。 |
|||
* GMA 4500 の H.264 デコードは {{AUR|libva-intel-driver-g45-h264}} によってサポートされています。[[Intel#GMA 4500 での H.264 デコーディング]]を参照。 |
|||
* Haswell から Skylake までのハイブリッド VP8 エンコードと VP9 デコードは {{AUR|intel-hybrid-codec-driver}} によってサポートされています。 |
|||
=== NVIDIA === |
|||
[[Nouveau]] オープンソースドライバーは VA-API と VDPAU に対応しています: |
|||
* GeForce GTX 750 までの GeForce 8 シリーズ以降の GPU は {{Pkg|libva-mesa-driver}} と {{Pkg|mesa-vdpau}} によってサポートされています。 |
|||
* NVIDIA のバイナリドライバーから抽出される {{AUR|nouveau-fw}} ファームウェアパッケージが [https://nouveau.freedesktop.org/wiki/VideoAcceleration/#firmware 必要] です。 |
|||
[[NVIDIA]] プロプライエタリドライバーは VDPAU と NVDECODE/NVENCODE に対応しています: |
|||
* VDPAU は GeForce 8 シリーズ以降で {{Pkg|nvidia-utils}} によってサポートされています。 |
|||
* NVDECODE/NVENCODE は Kepler 以降で {{Pkg|nvidia-utils}} によってサポートされています。 |
|||
=== ATI/AMD === |
|||
[[ATI]] と [[AMDGPU]] オープンソースドライバーは VA-API と VDPAU に対応しています: |
|||
* VDPAU は Radeon R300 以降の GPU で {{Pkg|mesa-vdpau}} によってサポートされています。 |
|||
* VA-API は Radeon HD 2000 以降の GPU で {{Pkg|libva-mesa-driver}} によってサポートされています。 |
|||
[[AMD Catalyst]] プロプライエタリドライバーは [[AMD Catalyst#ビデオアクセラレーション|XvBA]] によって VA-API に対応しています。 |
|||
[[AMDGPU PRO]] プロプライエタリドライバーは AMDGPU ドライバー上で動作し、VA-API と VDPAU に対応しています。 |
|||
=== 互換レイヤー === |
|||
デバイスドライバーが VA-API をサポートしていない場合に VA-API を使うには: |
|||
* {{Pkg|libva-vdpau-driver}} – VDPAU の VA-API バックエンド。 |
|||
* {{AUR|libva-vdpau-driver-chromium}} – Chromium で動作するようにパッチが適用された VDPAU の VA-API バックエンド。 |
|||
デバイスドライバーが VDPAU をサポートしていない場合に VDPAU を使うには: |
|||
* {{Pkg|libvdpau-va-gl}} – VA-API の VDPAU バックエンド ([https://github.com/i-rinat/libvdpau-va-gl/issues/67#issuecomment-318470175 H.264 のみサポート])。 |
|||
== 確認 == |
|||
{{Tip| |
|||
* ハードウェアアクセラレーションをテストするときは [[mpv#ハードウェアデコード|mpv]] が向いています。 |
|||
* [[Radeon]] の場合、以下のコマンドでドライバーの名前を確認できます: |
|||
{{hc|$ grep -iE 'vdpau {{!}} dri driver' ~/.local/share/xorg/Xorg.0.log| |
|||
(II) RADEON(0): [DRI2] DRI driver: radeonsi |
|||
(II) RADEON(0): [DRI2] VDPAU driver: radeonsi |
|||
}} |
|||
上記の場合、VA-API と VDPAU の両方で {{ic|radeonsi}} が使えます。 |
|||
* [[GDM]] を使っている場合は {{ic|journalctl -b {{!}} grep -iE 'vdpau {{!}} dri driver'}} を実行してください。 |
|||
}} |
|||
=== VA-API の確認 === |
|||
VA-API の設定は {{Pkg|libva-utils}} パッケージに含まれている {{ic|vainfo}} を実行することで確認できます: |
|||
{{hc|$ vainfo|<nowiki> |
|||
libva info: VA-API version 0.39.4 |
|||
libva info: va_getDriverName() returns 0 |
|||
libva info: Trying to open /usr/lib/dri/i965_drv_video.so |
|||
libva info: Found init function __vaDriverInit_0_39 |
|||
libva info: va_openDriver() returns 0 |
|||
vainfo: VA-API version: 0.39 (libva 1.7.3) |
|||
vainfo: Driver version: Intel i965 driver for Intel(R) Skylake - 1.7.3 |
|||
vainfo: Supported profile and entrypoints |
|||
VAProfileMPEG2Simple : VAEntrypointVLD |
|||
VAProfileMPEG2Simple : VAEntrypointEncSlice |
|||
VAProfileMPEG2Main : VAEntrypointVLD |
|||
VAProfileMPEG2Main : VAEntrypointEncSlice |
|||
VAProfileH264ConstrainedBaseline: VAEntrypointVLD |
|||
VAProfileH264ConstrainedBaseline: VAEntrypointEncSlice |
|||
VAProfileH264ConstrainedBaseline: VAEntrypointEncSliceLP |
|||
VAProfileH264Main : VAEntrypointVLD |
|||
VAProfileH264Main : VAEntrypointEncSlice |
|||
VAProfileH264Main : VAEntrypointEncSliceLP |
|||
VAProfileH264High : VAEntrypointVLD |
|||
VAProfileH264High : VAEntrypointEncSlice |
|||
VAProfileH264High : VAEntrypointEncSliceLP |
|||
VAProfileH264MultiviewHigh : VAEntrypointVLD |
|||
VAProfileH264MultiviewHigh : VAEntrypointEncSlice |
|||
VAProfileH264StereoHigh : VAEntrypointVLD |
|||
VAProfileH264StereoHigh : VAEntrypointEncSlice |
|||
VAProfileVC1Simple : VAEntrypointVLD |
|||
VAProfileVC1Main : VAEntrypointVLD |
|||
VAProfileVC1Advanced : VAEntrypointVLD |
|||
VAProfileNone : VAEntrypointVideoProc |
|||
VAProfileJPEGBaseline : VAEntrypointVLD |
|||
VAProfileJPEGBaseline : VAEntrypointEncPicturehttp://img.2chan.net/b/futaba.php?mode=cat |
|||
VAProfileVP8Version0_3 : VAEntrypointVLD |
|||
VAProfileVP8Version0_3 : VAEntrypointEncSlice |
|||
VAProfileHEVCMain : VAEntrypointVLD |
|||
VAProfileHEVCMain : VAEntrypointEncSlice</nowiki> |
|||
}} |
|||
あなたのカードを使ってデコードできるフォーマットが {{ic|VAEntrypointVLD}} で、エンコードできるフォーマットが {{ic|VAEntrypointEncSlice}} で示されます。 |
|||
上の例では、以下の行があることから {{ic|i965}} ドライバーが使われていることが確認できます: |
|||
libva info: Trying to open /usr/lib/dri/'''i965'''_drv_video.so |
|||
{{ic|vainfo}} を実行したときに以下のようなエラーが表示される場合: |
|||
libva info: va_openDriver() returns -1 |
|||
vaInitialize failed with error code -1 (unknown libva error),exit |
|||
適切なドライバーを設定する必要があります。[[#VA-API の設定|VA-API の設定]]を見てください。 |
|||
=== VDPAU の確認 === |
|||
{{pkg|vdpauinfo}} をインストールしてから、以下のコマンドを実行してください。VDPAU ドライバーがロードされていることや、現在の設定が確認できます: |
|||
{{hc|$ vdpauinfo|<nowiki> |
|||
display: :0 screen: 0 |
|||
API version: 1 |
|||
Information string: G3DVL VDPAU Driver Shared Library version 1.0 |
|||
Video surface: |
|||
name width height types |
|||
------------------------------------------- |
|||
420 16384 16384 NV12 YV12 |
|||
422 16384 16384 UYVY YUYV |
|||
444 16384 16384 Y8U8V8A8 V8U8Y8A8 |
|||
Decoder capabilities: |
|||
name level macbs width height |
|||
---------------------------------------------------- |
|||
MPEG1 --- not supported --- |
|||
MPEG2_SIMPLE 3 9216 2048 1152 |
|||
MPEG2_MAIN 3 9216 2048 1152 |
|||
H264_BASELINE 41 9216 2048 1152 |
|||
H264_MAIN 41 9216 2048 1152 |
|||
H264_HIGH 41 9216 2048 1152 |
|||
VC1_SIMPLE 1 9216 2048 1152 |
|||
VC1_MAIN 2 9216 2048 1152 |
|||
VC1_ADVANCED 4 9216 2048 1152 |
|||
..</nowiki>}} |
|||
== 設定 == |
|||
{{Note|VA-API と VDPAU のどちらでもビデオドライバーは基本的にハードウェアビデオアクセラレーションを自動的に有効化しますが、場合によっては手動で VA-API/VDPAU を手動で有効にする必要があります。有効化されているかどうか[[#確認|確認]]をしてください。}} |
|||
=== VA-API の設定 === |
|||
VA-API のドライバーは自動で認識されます [https://www.freedesktop.org/wiki/Software/vaapi/#driversback-endsthatimplementva-api]。使用されているドライバーを確認する方法は[[#確認|確認]]を見てください。{{ic|LIBVA_DRIVER_NAME}} [[環境変数]]を設定することで使用するドライバーを上書きできます: |
|||
* [[Intel Graphics]]: |
|||
** {{Pkg|libva-intel-driver}} の場合は {{ic|i965}} を使ってください。 |
|||
** {{Pkg|intel-media-driver}} の場合は {{ic|iHD}} を使ってください。 |
|||
* NVIDIA: |
|||
** [[Nouveau]] の場合は {{ic|nouveau}} を使ってください。 |
|||
** [[NVIDIA]] の場合は {{ic|vdpau}} を使ってください。 |
|||
* ATI/AMD: |
|||
** [[AMDGPU]] の場合は {{ic|radeonsi}} を使ってください。 |
|||
** [[AMD Catalyst]] の場合は {{ic|fglrx}} を使ってください。 |
|||
{{Note| |
|||
* インストールされているドライバーは {{ic|/usr/lib/dri/}} ディレクトリを見ることで確認できます。{{ic|/usr/lib/dri/'''${LIBVA_DRIVER_NAME}'''_drv_video.so}} として使われます。 |
|||
* 一部のドライバーは互換性を保つために異なる名前を使っていることがあります。{{ic|sha1sum /usr/lib/dri/*}} を実行することで確認できます。 |
|||
* {{ic|LIBVA_DRIVERS_PATH}} を使うことで VA-API ドライバーのパスを上書きできます。 |
|||
* バージョン 12.0.1 から {{Pkg|libva-mesa-driver}} は {{ic|gallium}} の代わりとして {{ic|radeonsi}} を提供しています。 |
|||
}} |
|||
=== VDPAU の設定 === |
|||
VDPAU で使用されるドライバーは自動的に認識されますが、{{ic|VDPAU_DRIVER}} [[環境変数]]を使うことで上書きすることができます。 |
|||
使用しているビデオドライバーにあわせて適切なドライバーの名前を指定してください: |
|||
* Intel Graphics や AMD Catalyst の場合 {{ic|va_gl}} に[[#Failed_to_open_VDPAU_backend|設定]]する必要があります。 |
|||
* オープンソースの AMD/ATI ドライバーの場合、使用している GPU にあわせて適切なドライバーを設定してください。[[#確認|確認]]を参照。 |
|||
* オープンソースの Nouveau ドライバーの場合は {{ic|nouveau}} に設定してください。 |
|||
* NVIDIA のプロプライエタリドライバーの場合は {{ic|nvidia}} に設定してください。 |
|||
{{Note| |
|||
* インストールされているドライバーは {{ic|/usr/lib/vdpau/}} ディレクトリを見ることで確認できます。{{ic|/usr/lib/vdpau/libvdpau_'''${VDPAU_DRIVER}'''.so}} として使われます。 |
|||
* 一部のドライバーは互換性を保つために異なる名前を使っていることがあります。{{ic|sha1sum /usr/lib/vdpau/*}} を実行することで確認できます。 |
|||
* ハイブリッド構成 (NVIDIA と AMD の両方のカードが搭載されている) 場合、{{ic|1=DRI_PRIME=1}} を[[環境変数|設定]]する必要があるかもしれません。詳しくは [[PRIME]] を参照。}} |
|||
== トラブルシューティング == |
|||
=== Failed to open VDPAU backend === |
|||
{{pkg|libvdpau-va-gl}} を使用している場合に {{ic|VDPAU_DRIVER}} を上書きしないと発生するエラーです。何らかの理由で VDPAU が使用するドライバーを正しく認識できていません。[[#VDPAU の設定|VDPAU の設定]]を見てください。 |
|||
VA-API を使用するようにメディアプレイヤーを設定することで良い結果を得られる可能性があります。[[#ソフトウェア|ソフトウェア]]を参照。 |
|||
=== VAAPI init failed === |
|||
エラーは {{ic|libva: /usr/lib/dri/i965_drv_video.so init failed}} という行で確認できます。[[Wayland]] が正しく認識されていないことが原因で発生します。{{ic|$DISPLAY}} の設定を解除することで mpv, mplayer, VLC などは X11 であると誤認しないようになります。mpv の場合は {{ic|1=--opengl-backend=wayland}} パラメータを追加することでも解決できます。 |
|||
=== AMDGPU ドライバーを使用したビデオデコード時の破損や歪み === |
|||
[[AMDGPU]] ドライバーでビデオデコードの破損または歪みが発生する場合は、{{ic | 1 = allow_rgb10_configs = false}} を [[環境変数]] または {{ic | driconf}} として設定します。 [https://bugs.freedesktop.org/show_bug.cgi?id=106490] |
|||
2021年7月2日 (金) 10:08時点における版
ビデオカードで動画をデコード・エンコードするハードウェアビデオアクセラレーションを活用することで、CPU の負担を下げて電力を節約することができます。
Linux でハードウェアアクセラレーションを利用する方法は複数存在します:
- Video Acceleration API (VA-API) はハードウェア支援による動画エンコード・デコードの両方を実現するオープンソースライブラリです。Intel によって開発されました。
- Video Decode and Presentation API for Unix (VDPAU) は GPU ビデオハードウェアに動画のデコードやポストプロセス処理をオフロードするオープンソースのライブラリです。NVIDIA によって開発されました。VDPAU は2015年9月から更新されていません。
- NVDECODE/NVENCODE - NVIDIA Fermi, Kepler, Maxwell, Pascal 世代の GPU によって使われているハードウェアビデオアクセラレーションのためのプロプライエタリ API。
2007年以前のビデオカードについては XvMC を参照してください。ドライバーとアプリケーションのサポートの包括的な概要については、#比較一覧 を参照してください。
インストール
Intel
Intel Graphics オープンソースドライバーは VA-API に対応しています:
- CannonLake (あるいは Broadwell) 以降の HD Graphics シリーズは intel-media-driver によってサポートされています。
- Coffee Lake までの GMA 4500 シリーズ以降の GPU は libva-intel-driver によってサポートされています。
- GMA 4500 の H.264 デコードは libva-intel-driver-g45-h264AUR によってサポートされています。Intel#GMA 4500 での H.264 デコーディングを参照。
- Haswell から Skylake までのハイブリッド VP8 エンコードと VP9 デコードは intel-hybrid-codec-driverAUR によってサポートされています。
NVIDIA
Nouveau オープンソースドライバーは VA-API と VDPAU に対応しています:
- GeForce GTX 750 までの GeForce 8 シリーズ以降の GPU は libva-mesa-driver と mesa-vdpau によってサポートされています。
- NVIDIA のバイナリドライバーから抽出される nouveau-fwAUR ファームウェアパッケージが 必要 です。
NVIDIA プロプライエタリドライバーは VDPAU と NVDECODE/NVENCODE に対応しています:
- VDPAU は GeForce 8 シリーズ以降で nvidia-utils によってサポートされています。
- NVDECODE/NVENCODE は Kepler 以降で nvidia-utils によってサポートされています。
ATI/AMD
ATI と AMDGPU オープンソースドライバーは VA-API と VDPAU に対応しています:
- VDPAU は Radeon R300 以降の GPU で mesa-vdpau によってサポートされています。
- VA-API は Radeon HD 2000 以降の GPU で libva-mesa-driver によってサポートされています。
AMD Catalyst プロプライエタリドライバーは XvBA によって VA-API に対応しています。
AMDGPU PRO プロプライエタリドライバーは AMDGPU ドライバー上で動作し、VA-API と VDPAU に対応しています。
互換レイヤー
デバイスドライバーが VA-API をサポートしていない場合に VA-API を使うには:
- libva-vdpau-driver – VDPAU の VA-API バックエンド。
- libva-vdpau-driver-chromiumAUR – Chromium で動作するようにパッチが適用された VDPAU の VA-API バックエンド。
デバイスドライバーが VDPAU をサポートしていない場合に VDPAU を使うには:
- libvdpau-va-gl – VA-API の VDPAU バックエンド (H.264 のみサポート)。
確認
$ grep -iE 'vdpau | dri driver' ~/.local/share/xorg/Xorg.0.log
(II) RADEON(0): [DRI2] DRI driver: radeonsi (II) RADEON(0): [DRI2] VDPAU driver: radeonsi
上記の場合、VA-API と VDPAU の両方で radeonsi が使えます。
- GDM を使っている場合は
journalctl -b | grep -iE 'vdpau | dri driver'を実行してください。
VA-API の確認
VA-API の設定は libva-utils パッケージに含まれている vainfo を実行することで確認できます:
$ vainfo
libva info: VA-API version 0.39.4
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib/dri/i965_drv_video.so
libva info: Found init function __vaDriverInit_0_39
libva info: va_openDriver() returns 0
vainfo: VA-API version: 0.39 (libva 1.7.3)
vainfo: Driver version: Intel i965 driver for Intel(R) Skylake - 1.7.3
vainfo: Supported profile and entrypoints
VAProfileMPEG2Simple : VAEntrypointVLD
VAProfileMPEG2Simple : VAEntrypointEncSlice
VAProfileMPEG2Main : VAEntrypointVLD
VAProfileMPEG2Main : VAEntrypointEncSlice
VAProfileH264ConstrainedBaseline: VAEntrypointVLD
VAProfileH264ConstrainedBaseline: VAEntrypointEncSlice
VAProfileH264ConstrainedBaseline: VAEntrypointEncSliceLP
VAProfileH264Main : VAEntrypointVLD
VAProfileH264Main : VAEntrypointEncSlice
VAProfileH264Main : VAEntrypointEncSliceLP
VAProfileH264High : VAEntrypointVLD
VAProfileH264High : VAEntrypointEncSlice
VAProfileH264High : VAEntrypointEncSliceLP
VAProfileH264MultiviewHigh : VAEntrypointVLD
VAProfileH264MultiviewHigh : VAEntrypointEncSlice
VAProfileH264StereoHigh : VAEntrypointVLD
VAProfileH264StereoHigh : VAEntrypointEncSlice
VAProfileVC1Simple : VAEntrypointVLD
VAProfileVC1Main : VAEntrypointVLD
VAProfileVC1Advanced : VAEntrypointVLD
VAProfileNone : VAEntrypointVideoProc
VAProfileJPEGBaseline : VAEntrypointVLD
VAProfileJPEGBaseline : VAEntrypointEncPicturehttp://img.2chan.net/b/futaba.php?mode=cat
VAProfileVP8Version0_3 : VAEntrypointVLD
VAProfileVP8Version0_3 : VAEntrypointEncSlice
VAProfileHEVCMain : VAEntrypointVLD
VAProfileHEVCMain : VAEntrypointEncSlice
あなたのカードを使ってデコードできるフォーマットが VAEntrypointVLD で、エンコードできるフォーマットが VAEntrypointEncSlice で示されます。
上の例では、以下の行があることから i965 ドライバーが使われていることが確認できます:
libva info: Trying to open /usr/lib/dri/i965_drv_video.so
vainfo を実行したときに以下のようなエラーが表示される場合:
libva info: va_openDriver() returns -1 vaInitialize failed with error code -1 (unknown libva error),exit
適切なドライバーを設定する必要があります。VA-API の設定を見てください。
VDPAU の確認
vdpauinfo をインストールしてから、以下のコマンドを実行してください。VDPAU ドライバーがロードされていることや、現在の設定が確認できます:
$ vdpauinfo
display: :0 screen: 0 API version: 1 Information string: G3DVL VDPAU Driver Shared Library version 1.0 Video surface: name width height types ------------------------------------------- 420 16384 16384 NV12 YV12 422 16384 16384 UYVY YUYV 444 16384 16384 Y8U8V8A8 V8U8Y8A8 Decoder capabilities: name level macbs width height ---------------------------------------------------- MPEG1 --- not supported --- MPEG2_SIMPLE 3 9216 2048 1152 MPEG2_MAIN 3 9216 2048 1152 H264_BASELINE 41 9216 2048 1152 H264_MAIN 41 9216 2048 1152 H264_HIGH 41 9216 2048 1152 VC1_SIMPLE 1 9216 2048 1152 VC1_MAIN 2 9216 2048 1152 VC1_ADVANCED 4 9216 2048 1152 ..
設定
VA-API の設定
VA-API のドライバーは自動で認識されます [1]。使用されているドライバーを確認する方法は確認を見てください。LIBVA_DRIVER_NAME 環境変数を設定することで使用するドライバーを上書きできます:
- Intel Graphics:
- libva-intel-driver の場合は
i965を使ってください。 - intel-media-driver の場合は
iHDを使ってください。
- libva-intel-driver の場合は
- NVIDIA:
- ATI/AMD:
- AMDGPU の場合は
radeonsiを使ってください。 - AMD Catalyst の場合は
fglrxを使ってください。
- AMDGPU の場合は
- インストールされているドライバーは
/usr/lib/dri/ディレクトリを見ることで確認できます。/usr/lib/dri/${LIBVA_DRIVER_NAME}_drv_video.soとして使われます。 - 一部のドライバーは互換性を保つために異なる名前を使っていることがあります。
sha1sum /usr/lib/dri/*を実行することで確認できます。 LIBVA_DRIVERS_PATHを使うことで VA-API ドライバーのパスを上書きできます。- バージョン 12.0.1 から libva-mesa-driver は
galliumの代わりとしてradeonsiを提供しています。
VDPAU の設定
VDPAU で使用されるドライバーは自動的に認識されますが、VDPAU_DRIVER 環境変数を使うことで上書きすることができます。
使用しているビデオドライバーにあわせて適切なドライバーの名前を指定してください:
- Intel Graphics や AMD Catalyst の場合
va_glに設定する必要があります。 - オープンソースの AMD/ATI ドライバーの場合、使用している GPU にあわせて適切なドライバーを設定してください。確認を参照。
- オープンソースの Nouveau ドライバーの場合は
nouveauに設定してください。 - NVIDIA のプロプライエタリドライバーの場合は
nvidiaに設定してください。
トラブルシューティング
Failed to open VDPAU backend
libvdpau-va-gl を使用している場合に VDPAU_DRIVER を上書きしないと発生するエラーです。何らかの理由で VDPAU が使用するドライバーを正しく認識できていません。VDPAU の設定を見てください。
VA-API を使用するようにメディアプレイヤーを設定することで良い結果を得られる可能性があります。ソフトウェアを参照。
VAAPI init failed
エラーは libva: /usr/lib/dri/i965_drv_video.so init failed という行で確認できます。Wayland が正しく認識されていないことが原因で発生します。$DISPLAY の設定を解除することで mpv, mplayer, VLC などは X11 であると誤認しないようになります。mpv の場合は --opengl-backend=wayland パラメータを追加することでも解決できます。
AMDGPU ドライバーを使用したビデオデコード時の破損や歪み
AMDGPU ドライバーでビデオデコードの破損または歪みが発生する場合は、allow_rgb10_configs = false を 環境変数 または driconf として設定します。 [2]
対応状況
ハードウェア
VA-API
| コーデック | libva-intel-driver [3] | intel-media-driver [4] | libva-mesa-driver [5] [6] | Catalyst XvBA | libva-vdpau-driver
(VDPAU アダプタ) |
|---|---|---|---|---|---|
| デコード | |||||
| MPEG2 | GMA 4500 以降 | Broadwell 以降 | Radeon HD 6000 以降 GeForce 8 以降1 |
Radeon HD 4000 以降 | #VDPAU を参照 |
| MPEG4 | No | No | Radeon HD 6000 以降 | Radeon HD 6000 以降 | |
| AVC (H.264) | GMA 45002, Ironlake 以降 | Broadwell 以降 | Radeon HD 2000 以降 GeForce 8 以降1 |
Radeon HD 4000 以降 | |
| HEVC (H.265) 8bit | Cherryview/Braswell 以降 | Skylake 以降 | Radeon R9 Fury 以降 | No | |
| HEVC (H.265) 10bit | Broxton 以降 | Broxton/Apollo Lake 以降 | Radeon 400 以降 | ||
| VC1 | Sandy Bridge 以降 | Broadwell 以降 | Radeon HD 2000 以降 GeForce 9300 以降1 |
Radeon HD 4000 以降 | |
| VP8 | Broadwell 以降 | No | No | No | |
| VP9 8bit | Broxton 以降 Hybrid: Haswell から Skylake3 |
Broxton/Apollo Lake 以降 | Raven Ridge 以降 | ||
| VP9 10bit | Kaby Lake 以降 | Kaby Lake 以降 | |||
| エンコード | |||||
| MPEG2 | Ivy Bridge 以降 | Broadwell 以降 Broxton/Apollo Lake は除く |
No | No | No |
| AVC (H.264) | Sandy Bridge 以降 | Broadwell 以降 | Radeon HD 7000 以降 | ||
| HEVC (H.265) 8bit | Skylake 以降 | Skylake 以降 | Raven Ridge 以降 | ||
| HEVC (H.265) 10bit | Kaby Lake 以降 | Cannonlake 以降 | |||
| VP8 | Cherryview/Braswell 以降 Hybrid: Haswell から Skylake3 |
No | |||
| VP9 8bit | Kaby Lake 以降 | Icelake 以降 | |||
| VP9 10bit | No | ||||
- 1 GeForce GTX 750 まで対応。
- 2 libva-intel-driver-g45-h264AUR パッケージによってサポートされています。
- 3 Hybrid VP8 エンコーダ・VP9 デコーダは intel-hybrid-codec-driverAUR によってサポートされています [7]。
VDPAU
| コーデック | mesa-vdpau [9] [10] | nvidia-utils [11] | libvdpau-va-gl (VA-API アダプタ) | |
|---|---|---|---|---|
| デコード | ||||
| MPEG2 | Radeon R300 以降 GeForce 8 以降1 |
GeForce 8 以降 | No | |
| MPEG4 | Radeon HD 6000 以降 GeForce 200 以降1 |
GeForce 200 以降 | ||
| AVC (H.264) | Radeon HD 2000 以降 GeForce 8 以降1 |
GeForce 8 以降 | #VA-API を参照 | |
| HEVC (H.265) 8bit | Radeon R9 Fury 以降 | GeForce 900 以降2 | No | |
| HEVC (H.265) 10bit | Radeon 400 以降 | No3 | ||
| VC1 | Radeon HD 2000 以降 GeForce 9300 以降1 |
GeForce 8 以降4 | ||
- 1 GeForce GTX 750 まで対応。
- 2 GeForce GTX 970 と GTX 980 は除く。
- 3 NVIDIA の実装は8ビットストリームまでに制限されています [12] [13]。
- 4 GeForce 8800 Ultra, 8800 GTX, 8800 GTS (320/640 MB) は除く。
NVDECODE/NVENCODE
| コーデック | nvidia-utils | |
|---|---|---|
| デコード | エンコード | |
| MPEG-2 | Kepler 以降1 | No |
| VC-1 | ||
| AVC (H.264) | Kepler 以降2 | |
| HEVC (H.265) 8bit | Maxwell (GM206) 以降 | Maxwell (2nd Gen) 以降 |
| HEVC (H.265) 10bit | Pascal 以降 | |
| VP8 | Maxwell (2nd Gen) 以降 | No |
| VP9 8bit | Maxwell (GM206) 以降 | |
| VP9 10bit | Pascal 以降 | |
- 1 GM108 は除く (未サポート)
- 2 GM108 と GP108 は除く (未サポート)
ソフトウェア
| VA-API | VDPAU | NVDECODE | ドキュメント | |
|---|---|---|---|---|
| FFmpeg | Yes | Yes | Yes | FFmpeg#ハードウェアアクセラレーション |
| GStreamer | Yes (gstreamer-vaapi) | Yes (gst-plugins-bad) | Yes (gst-plugins-bad) | GStreamer#ハードウェアアクセラレーション |
| Kodi | Yes | Yes | Yes | Kodi#ヒントとテクニック |
| mpv | Yes | Yes | Yes | mpv#ハードウェアデコード |
| VLC media player | Yes | Yes | No | VLC media player#ハードウェアアクセラレーションのサポート |
| MPlayer | mplayer-vaapiAUR | Yes | No | MPlayer#ハードウェアアクセラレーション |
| Flash | NPAPI のみ: freshplayerpluginAUR |
NPAPI のみ: flashplugin または freshplayerpluginAUR |
No | ブラウザプラグイン#Adobe Flash Player |
| Chromium | chromium-vaapiAUR | No | No | Chromium#設定 |
| Firefox | Yes | No | No | バグレポート |