Linux 3.10からオープンソースドライバでもRadeonのH264の再生支援(UVD)が使えます




以前 RadeonのドライバをFglrx(プロプライエタリ)からオープンソースドライバに変えたという記事を投稿しました Catalyst(Fglrx)ドライバーをやめてradeonドライバーにしたお話

記事にH264のハードウェアアクセラレーション以外プロプライエタリにする必要ない気がするみたいなことを書いてた気がするのですが、
そうえいば今年の4月ぐらいに既にオープンソースドライバでUVDをサポートするパッチが出てたらしいです。[リンク先はPhoronixの記事]

それをつかいたいが為にカーネルアップデートをした話です

まずUbuntuな人はこの記事は参考ぐらいにしておいて、
How-To Use Open-Source Radeon UVD On Ubuntu
を見たほうが良いです

ということでUVDのためにLinuxカーネルを3.10-rc7にアップデートしたのですが、
Archの場合AURのlinux-mainlineというパッケージを使いましょう。
UVDを使うには新しいファームウェアも必要なので、カーネルをビルドする前にAURからlinux-firmware-gitもインストールしておきましょう。


radeon/CYPRESS_uvd.bin
radeon/RV710_uvd.bin
radeon/SUMO_uvd.bin
radeon/TAHITI_uvd.bin
が増えてるはず。 カーネルにファームウェアを組み込んでる人はカーネルコンフィグにこれらの追加を忘れないように。

具体的には、
CONFIG_EXTRA_FIRMWARE_DIR="/usr/lib/firmware"
CONFIG_EXTRA_FIRMWARE="radeon/PALM_me.bin radeon/PALM_pfp.bin radeon/SUMO2_me.bin radeon/SUMO2_pfp.bin radeon/SUMO_me.bin radeon/SUMO_pfp.bin radeon/SUMO_rlc.bin"
のCONFIG_EXTRA_FIRMWAREにradeon/SUMO_uvd.binを追加するなど。
(Radeon HD6310の場合)

それとmesaも9.2か10.0が必要らしいのでAURのmesa-gitからアップデートしておきましょう。


結果:
MPEG1-2の再生支援しかなかったのが(Linux3.9.4)

                                            ↓              ↓               ↓

H264、VC1、MPEG1-2の再生支援が使えるように(Linux3.10-rc7)
vainfoを使って表示していますが、これはVA-APIのためのvdpauバックエンドをインストールしてるだけですので実際はvdpauを使ってます。なのでmplayerはmplayer-vaapiをインストールしなくてもvdpauの設定だけで再生支援つかえます。


mesaをアップデートしたら何故かAssertionが出るようになってしまいましたが一応動画再生は普通にできます。1920x1080のH264の動画の再生で引っかかったり音がズレたりするのがなくなりましたとさ。