Video hardware aceleration (UVD) on AMD ATI cards using Debian Jessie or Stretch

viernes, octubre 02, 2015 0 Comments


The advantages of video acceleration using GPU are obvious, the GPU makes it faster and better, using less power consumption .
Linux can also take advantage of this, and for this we have two ways, using the proprietary driver or using the OpenSource driver ( Radeon )


Installing require firmware:




Each graphic card needs its own firmware, and not alls are included in Debian repositoires, for this case we need to download it.
Notice that if we haven't all the firmware,  GPU aceleration doesn't work.
Then, thanks to Gentoo Linux, we have a table to indentify it in a simple way:
FamilyChipset nameProduct nameFirmware
R600R600, RV610, RV630, RV620, RV635, RV670HD2400-2900, HD3450-3870radeon/R600_rlc.bin radeon/R600_uvd.bin
RS780, RS880HD3200, HD3300, HD4200radeon/R600_rlc.bin radeon/RS780_uvd.bin
R700RV710HD4300, HD4500radeon/R700_rlc.bin radeon/RV710_smc.bin radeon/RV710_uvd.bin
RV730HD4600, HD5100, HD500Vradeon/R700_rlc.bin radeon/RV730_smc.bin radeon/RV710_uvd.bin
RV740HD4770radeon/R700_rlc.bin radeon/RV740_smc.bin radeon/RV710_uvd.bin
RV790, RV770HD4730, HD4830-HD4890radeon/R700_rlc.bin radeon/RV770_smc.bin radeon/RV770_uvd.bin
EvergreenCEDARHD5450, HD6350, HD7350, R5 220radeon/CEDAR_me.bin radeon/CEDAR_pfp.bin radeon/CEDAR_rlc.bin radeon/CEDAR_smc.bin radeon/CYPRESS_uvd.bin
REDWOODHD5550, HD5570, HD5670radeon/REDWOOD_me.bin radeon/REDWOOD_pfp.bin radeon/REDWOOD_rlc.bin radeon/REDWOOD_smc.bin radeon/CYPRESS_uvd.bin
JUNIPERHD5750, HD5770radeon/JUNIPER_me.bin radeon/JUNIPER_pfp.bin radeon/JUNIPER_rlc.bin radeon/JUNIPER_smc.bin radeon/CYPRESS_uvd.bin
CYPRESSHD5830, HD5850, HD5870, HD5970radeon/CYPRESS_me.bin radeon/CYPRESS_pfp.bin radeon/CYPRESS_rlc.bin radeon/CYPRESS_smc.bin radeon/CYPRESS_uvd.bin
PALM (Wrestler)HD6250, HD6310, HD7310, HD7340radeon/PALM_me.bin radeon/PALM_pfp.bin radeon/SUMO_rlc.bin radeon/SUMO_uvd.bin
SUMOHD6290, HD6320, HD6480Gradeon/SUMO_me.bin radeon/SUMO_pfp.bin radeon/SUMO_rlc.bin radeon/SUMO_uvd.bin
SUMO2HD6370D, HD6410Dradeon/SUMO2_me.bin radeon/SUMO2_pfp.bin radeon/SUMO_rlc.bin radeon/SUMO_uvd.bin
Northern IslandsCAICOSHD6450, HD64xxM, R5 235, R5 235Xradeon/BTC_rlc.bin radeon/CAICOS_mc.bin radeon/CAICOS_me.bin radeon/CAICOS_pfp.bin radeon/CAICOS_smc.bin radeon/SUMO_uvd.bin
TURKSHD6570, HD6670, HD7550M/7570M/7650Mradeon/BTC_rlc.bin radeon/TURKS_mc.bin radeon/TURKS_me.bin radeon/TURKS_pfp.bin radeon/TURKS_smc.bin radeon/SUMO_uvd.bin
BARTSHD6790, HD6850, HD6870, HD67xxMradeon/BTC_rlc.bin radeon/BARTS_mc.bin radeon/BARTS_me.bin radeon/BARTS_pfp.bin radeon/BARTS_smc.bin radeon/SUMO_uvd.bin
CAYMANHD6950, HD6970, HD6990, HD69xxMradeon/CAYMAN_mc.bin radeon/CAYMAN_me.bin radeon/CAYMAN_pfp.bin radeon/CAYMAN_rlc.bin radeon/CAYMAN_smc.bin radeon/SUMO_uvd.bin
ARUBAHD7400D/G, HD7500D/G, HD7600D/G, HD7660D, HD8310G, HD8410G-HD8670Gradeon/ARUBA_me.bin radeon/ARUBA_pfp.bin radeon/ARUBA_rlc.bin radeon/TAHITI_uvd.bin
Southern IslandsCAPE VERDEHD7750, HD7770, R7 250XKernel 3.16 and older: radeon/VERDE_ce.bin radeon/VERDE_mc.bin radeon/VERDE_mc2.bin radeon/VERDE_me.bin radeon/VERDE_pfp.bin radeon/VERDE_rlc.bin radeon/VERDE_smc.bin radeon/TAHITI_uvd.bin
Kernel 3.17 and newer: radeon/verde_ce.bin radeon/verde_mc.bin radeon/verde_me.bin radeon/verde_pfp.bin radeon/verde_rlc.bin radeon/verde_smc.bin radeon/TAHITI_uvd.bin
PITCAIRNHD7800, R9 270XKernel 3.16 and older:radeon/PITCAIRN_ce.bin radeon/PITCAIRN_mc.bin radeon/PITCAIRN_mc2.bin radeon/PITCAIRN_me.bin radeon/PITCAIRN_pfp.bin radeon/PITCAIRN_rlc.bin radeon/PITCAIRN_smc.bin radeon/TAHITI_uvd.bin
Kernel 3.17 and newer:radeon/pitcairn_ce.bin radeon/pitcairn_mc.bin radeon/pitcairn_me.bin radeon/pitcairn_pfp.bin radeon/pitcairn_rlc.bin radeon/pitcairn_smc.bin radeon/TAHITI_uvd.bin
TAHITIHD7870 XT, HD7900, R9 280XKernel 3.16 and older:radeon/TAHITI_ce.bin radeon/TAHITI_mc.bin radeon/TAHITI_mc2.bin radeon/TAHITI_me.bin radeon/TAHITI_pfp.bin radeon/TAHITI_rlc.bin radeon/TAHITI_smc.bin radeon/TAHITI_uvd.bin
Kernel 3.17 and newer:radeon/tahiti_ce.bin radeon/tahiti_mc.bin radeon/tahiti_me.bin radeon/tahiti_pfp.bin radeon/tahiti_rlc.bin radeon/tahiti_smc.bin radeon/TAHITI_uvd.bin
OLANDHD8550M-HD8790M, R7 240, R7 250Kernel 3.16 and older:radeon/OLAND_ce.bin radeon/OLAND_mc.bin radeon/OLAND_mc2.bin radeon/OLAND_me.bin radeon/OLAND_pfp.bin radeon/OLAND_rlc.bin radeon/OLAND_smc.bin radeon/TAHITI_uvd.bin
Kernel 3.17 and newer:radeon/oland_ce.bin radeon/oland_mc.bin radeon/oland_me.bin radeon/oland_pfp.bin radeon/oland_rlc.bin radeon/oland_smc.bin radeon/TAHITI_uvd.bin
HAINANHD8970MKernel 3.16 and older:radeon/HAINAN_ce.bin radeon/HAINAN_mc.bin radeon/HAINAN_mc2.bin radeon/HAINAN_me.bin radeon/HAINAN_pfp.bin radeon/HAINAN_rlc.bin radeon/HAINAN_smc.bin radeon/TAHITI_uvd.bin
Kernel 3.17 and newer:radeon/hainan_ce.bin radeon/hainan_mc.bin radeon/hainan_me.bin radeon/hainan_pfp.bin radeon/hainan_rlc.bin radeon/hainan_smc.bin radeon/TAHITI_uvd.bin
Sea IslandsBONAIREHD7790, R7 260, R7 260XKernel 3.16 and older:radeon/BONAIRE_ce.bin radeon/BONAIRE_mc.bin radeon/BONAIRE_mc2.bin radeon/BONAIRE_me.bin radeon/BONAIRE_mec.bin radeon/BONAIRE_pfp.bin radeon/BONAIRE_rlc.bin radeon/BONAIRE_sdma.bin radeon/BONAIRE_smc.bin radeon/BONAIRE_uvd.bin radeon/BONAIRE_vce.bin
Kernel 3.17 and newer:radeon/bonaire_ce.bin radeon/bonaire_mc.bin radeon/bonaire_me.bin radeon/bonaire_mec.bin radeon/bonaire_pfp.bin radeon/bonaire_rlc.bin radeon/bonaire_sdma.bin radeon/bonaire_smc.bin radeon/BONAIRE_uvd.bin radeon/BONAIRE_vce.bin
KABINIHD8180-HD8400Kernel 3.16 and older:radeon/KABINI_ce.bin radeon/KABINI_me.bin radeon/KABINI_mec.bin radeon/KABINI_pfp.bin radeon/KABINI_rlc.bin radeon/KABINI_sdma.bin radeon/BONAIRE_uvd.bin radeon/BONAIRE_vce.bin
Kernel 3.17 and newer:radeon/kabini_ce.bin radeon/kabini_me.bin radeon/kabini_mec.bin radeon/kabini_pfp.bin radeon/kabini_rlc.bin radeon/kabini_sdma.bin radeon/BONAIRE_uvd.bin radeon/BONAIRE_vce.bin
KAVERIKernel 3.16 and older:radeon/KAVERI_ce.bin radeon/KAVERI_me.bin radeon/KAVERI_mec.bin radeon/KAVERI_pfp.bin radeon/KAVERI_rlc.bin radeon/KAVERI_sdma.bin radeon/BONAIRE_uvd.bin radeon/BONAIRE_vce.bin
Kernel 3.17 and newer:radeon/kaveri_ce.bin radeon/kaveri_me.bin radeon/kaveri_mec2.bin radeon/kaveri_mec.bin radeon/kaveri_pfp.bin radeon/kaveri_rlc.bin radeon/kaveri_sdma.bin radeon/BONAIRE_uvd.bin radeon/BONAIRE_vce.bin
HAWAIIR9 290, R9 290XKernel 3.16 and older:radeon/HAWAII_ce.bin radeon/HAWAII_mc.bin radeon/HAWAII_mc2.bin radeon/HAWAII_me.bin radeon/HAWAII_mec.bin radeon/HAWAII_pfp.bin radeon/HAWAII_rlc.bin radeon/HAWAII_sdma.bin radeon/HAWAII_smc.bin radeon/BONAIRE_uvd.bin radeon/BONAIRE_vce.bin
Kernel 3.17 and newer:radeon/hawaii_ce.bin radeon/hawaii_mc.bin radeon/hawaii_me.bin radeon/hawaii_mec.bin radeon/hawaii_pfp.bin radeon/hawaii_rlc.bin radeon/hawaii_sdma.bin radeon/hawaii_smc.bin radeon/BONAIRE_uvd.bin radeon/BONAIRE_vce.bin
MULLINSKernel 3.16 and older:radeon/MULLINS_ce.bin radeon/MULLINS_me.bin radeon/MULLINS_mec.bin radeon/MULLINS_pfp.bin radeon/MULLINS_rlc.bin radeon/MULLINS_sdma.bin radeon/BONAIRE_uvd.bin radeon/BONAIRE_vce.bin
Kernel 3.17 and newer:radeon/mullins_ce.bin radeon/mullins_me.bin radeon/mullins_mec.bin radeon/mullins_pfp.bin radeon/mullins_rlc.bin radeon/mullins_sdma.bin radeon/BONAIRE_uvd.bin radeon/BONAIRE_vce.bin
Once we have located the name of the files that we need, its time to install the firmware:
apt-get install firmware-linux-nonfree
Now we check that is all right, go this path :
/lib/firmware/radeon
and we check that we have all necessary files , if not we will have to go to the following URL and download the missings files, of course it is that we should copy it into the radeon folder .

Checking kernel:




We need to check the version of the kernel from which UVD is supported for our card model . To cite an example , for the RV770 chip , RS780 / 880, R6xx require at least use a kernel 3.18 , if the kernel version is older won't work.
To fix this, go to the official website of the driver and check it on the table here.


Installing software:



At this point you should have configured the kernel and firmware. Now is the turn of the software dependences. UVD uses VDPAU API , which will need to install if you did not have yet :

apt-get install xserver-xorg-video-radeon vdpauinfo mesa-vdpau-drivers libvdpau-dev libvdpau1 vdpau-va-driver 
Also we need a video player that supports VDPAU , I use MPV and is the one I recommend for testing . I don't recommend mplayer or mplayer2 Debian stables versions, will give you troubles with LibVA library.
apt-get install mpv
Note that we have to restart  system for get it work,  firmware will be loaded at startup.

Testing vdpauinfo:


First of all we will launch the command vdpauinfo which we should return something like this :


If you pay atention, it shows differents video formats and the maximum resolution that is able to display.

Configurando MPV:


Now we try to play a video using  GPU:
mpv -vo vdpau --hwdec=vdpau nombre-del-fichero-de-video.mkv
it would be show something like this:
Trying to use hardware decoding.
AO: [pulse] 48000Hz stereo 2ch float
VO: [vdpau] 1920x800 => 1920x800 vdpau
It meants that we are using GPU aceleration, and CPU load may be decrease significantly.
But if we want to open the video making double click with the mouse, we must add a couple of lines to the MPV configuration file.

In our home user folder ~/:
nano -w .config/mpv/mpv.conf
add this couple of lines:
vo=vdpau 
hwdec=vdpau
Also we can edit using a graphic editor like gedit maybe it make the things easier
If you need more information about mpv configuration files try this link here.

BUGS:

Bug is already resolve in RV620, RV630, RS780, RS880 cards --> here

0 comentarios: