XKCD - Supported Features |
Today I installed Arch Linux on it. This post was going to cover that, but I discovered hardware acceleration for flash on ATI chipsets works!
Comparison
- With software decoding and rendering flash takes 60-75% of my total cpu time (windowed, scaled as large as smooth playback allows).
- With hardware decoding and (possibly?) rendering it takes 10-25% and plays smoothly full-screen.
Requirements
- A very up-to date system. (Arch hasn't supported it long, most distro's will probably take some time to, but you may find a ppa or can always compile from source)
- kernel 3.10+
- mesa 9.2+
- libvdpau
- ati-dri
- xf86-video-ati
- flashplugin
Optional
- vdpauinfo (print info about VDPAU (and show's it's working)
- vainfo (same as above, but for VA-API)
- libva-vdpau-driver (allows va-api enabled apps to be accelerated)
- libva
Setup
Assuming you have installed all these packages vdpauinfo should spit out a bunch of information on what's supported. If it doesn't you may need to specify the driver. I didn't need to, but you might (shouldn't) need to add something like this to your environment variables:
Flash probably won't work until you edit /etc/adobe/mms.cfg and uncomment the line:
EnableLinuxHWVideoDecode=1
Override software rendering list
Now Flash should have hardware decoding! MythTV can be configured to use vdpau decoding and it works nicely too.
VA-API
(I haven't messed with VA-API much, so this may or may not work.) For VA-API it may be necessary to add the following to your environment variables setup. (you don't need this for flash, it only supports vdpau)
LIBVA_DRIVER_NAME=vdpau
One way to do this is create a file (as root) /etc/profile.d/vaapi_vdpau.sh containing:
One way to do this is create a file (as root) /etc/profile.d/vaapi_vdpau.sh containing:
#!/bin/sh
export LIBVA_DRIVER_NAME=vdpau
Save and add execute permissions (chmod +x vaapi_vdpau.sh . Log off and back on or execute the export command above and vainfo should return the supported codecs.
Notes
- It only works with the open source driver, though there is a way to get it in fglrx. (see https://bbs.archlinux.org/viewtopic.php?id=166593&p=1)
- Before "top" shows flash using 120-150% cpu. After "top" shows 20-50% (dual core = 200% max)
- This works with flashplugin (11.2). I haven't played with it much, but it doesn't seem to work with pepper-flash (11.8). It has lower cpu usage than 11.2 with EnableLinuxHWVideoDecode commented out in /etc/adobe/mms.cfg, but uncommenting it has no effect. Either it's looking somewhere else for that config or it doesn't support it. CPU usage under 11.2 drops way below 11.8 with it enabled.
- Obviously different chipsets support different codecs, some may not support any at all. The VA-API Wiki page linked below has some info to that end.
- The Chrome flag may improve overall performance or it may break things / slow things down. you'll have to try it and see.
- You can check chrome://flash and chrome://gpu before and after to see what changes.
Got it working in Ubuntu 13.10 too. From a fresh Ubuntu 13.10 install, do not install propriety video driver.
ReplyDeleteDo what they say here:
http://askubuntu.com/questions/362496/vdpau-on-ubuntu-13-10-and-mesa-9-2-1
Then here, as /etc/abode/ directory does not exist on Ubuntu so needs to be created.
http://ubuntugenius.wordpress.com/tag/enablelinuxhwvideodecode-1/
Your LIBVA_DRIVER_NAME=vdpau step was necessary for vainfo to report correctly and VLC to be able to access hardware decode as well. That was after installing vdpau-va-driver and libva1 as the vaapi packages are called in Ubuntu.