「ハードウェアビデオアクセラレーション」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(翻訳)
(== 対応状況 == を末尾に移動(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 に対応しています:

NVIDIA

Nouveau オープンソースドライバーは VA-API と VDPAU に対応しています:

  • GeForce GTX 750 までの GeForce 8 シリーズ以降の GPU は libva-mesa-drivermesa-vdpau によってサポートされています。
  • NVIDIA のバイナリドライバーから抽出される nouveau-fwAUR ファームウェアパッケージが 必要 です。

NVIDIA プロプライエタリドライバーは VDPAU と NVDECODE/NVENCODE に対応しています:

  • VDPAU は GeForce 8 シリーズ以降で nvidia-utils によってサポートされています。
  • NVDECODE/NVENCODE は Kepler 以降で nvidia-utils によってサポートされています。

ATI/AMD

ATIAMDGPU オープンソースドライバーは 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 を使うには:

デバイスドライバーが VDPAU をサポートしていない場合に VDPAU を使うには:

確認

ヒント:
  • ハードウェアアクセラレーションをテストするときは mpv が向いています。
  • Radeon の場合、以下のコマンドでドライバーの名前を確認できます:
$ 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 と VDPAU のどちらでもビデオドライバーは基本的にハードウェアビデオアクセラレーションを自動的に有効化しますが、場合によっては手動で VA-API/VDPAU を手動で有効にする必要があります。有効化されているかどうか確認をしてください。

VA-API の設定

VA-API のドライバーは自動で認識されます [1]。使用されているドライバーを確認する方法は確認を見てください。LIBVA_DRIVER_NAME 環境変数を設定することで使用するドライバーを上書きできます:

ノート:
  • インストールされているドライバーは /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-drivergallium の代わりとして radeonsi を提供しています。

VDPAU の設定

VDPAU で使用されるドライバーは自動的に認識されますが、VDPAU_DRIVER 環境変数を使うことで上書きすることができます。

使用しているビデオドライバーにあわせて適切なドライバーの名前を指定してください:

  • Intel Graphics や AMD Catalyst の場合 va_gl設定する必要があります。
  • オープンソースの AMD/ATI ドライバーの場合、使用している GPU にあわせて適切なドライバーを設定してください。確認を参照。
  • オープンソースの Nouveau ドライバーの場合は nouveau に設定してください。
  • NVIDIA のプロプライエタリドライバーの場合は nvidia に設定してください。
ノート:
  • インストールされているドライバーは /usr/lib/vdpau/ ディレクトリを見ることで確認できます。/usr/lib/vdpau/libvdpau_${VDPAU_DRIVER}.so として使われます。
  • 一部のドライバーは互換性を保つために異なる名前を使っていることがあります。sha1sum /usr/lib/vdpau/* を実行することで確認できます。
  • ハイブリッド構成 (NVIDIA と AMD の両方のカードが搭載されている) 場合、DRI_PRIME=1設定する必要があるかもしれません。詳しくは PRIME を参照。

トラブルシューティング

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

VDPAU

ノート: VDPAU は2015年9月から更新されておらず VP8 と VP9 をサポートしていません [8]
コーデック 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 バグレポート
ヒント: VP8/VP9 のハードウェアデコードが使えない場合に YouTube を視聴する際に CPU の使用量を減らしたいときは h264ify 拡張を使ってください (Firefox/Chromium)。