ElementaryOS Luna: OSS Radeon + VDPAU на примере R600

Некоторое время назад (если быть точным, до этого момента) пользоваться аппаратным ускорением на видеочипах Radeon можно было только с проприетарным драйвером AMD Catalyst. Драйвер этот был палкой о двух концах: с одной стороны, он давал отличную производительность OpenGL, поддерживал аппаратное декодирование видео (vaapi) и управление питанием GPU, но с другой — не умел KMS, медленно запускал X.org, зависел от собранного модуля ядра (блоба), имел проблемы с Flash-роликами и вообще в системе смотрелся как классический костыль.

К счастью, в последнее время открытый драйвер Radeon приблизился к Катаклизму по производительности и полностью догнал его в плане функциональности. Организовать аппаратное ускорение стало возможно и с открытым драйвером, и называется это VDPAU. У этой функции есть 2 основных применения:

  • снижение нагрузки на CPU при просмотре Flash-контента в браузере (пример, как это сделано для чипов Intel)
  • снижение нагрузки на CPU при декодировании видеофайла, за счёт использования аппаратного декодера (кино должно быть сжато кодеком, который поддерживается декодером, например H264)

В последних версиях Ubuntu (13.04, 13.10 и 14.04) наладить VDPAU сравнительно просто, нужно лишь подключить готовый PPA и установить из него libg3dvl-mesa. Особенность ElementaryOS в данном случае заключается в относительно «возрастной» платформе 12.04, для которой уже не получится поставить самую свежую Mesa 10.x. Однако, я выяснил, что организовать связку OSS Radeon+VDPAU в ElementaryOS Luna всё же можно. Мы будем использовать библиотеку libvdpau_r600.so, взятую из Арча, а сама Mesa останется в исходной версии 8.0. Да, у нас не будет последних оптимизаций из Mesa 10.0, но для наших задач это некритично: основная цель будет достигнута.

Основное исходное требование перед началом работы — ядро версии 3.10+, подхватившее прошивку (firmware) для вашего чипа Radeon. Подробно о том, как это сделать, я описал в своём мега-обзоре Прокачиваем ElementaryOS Luna.

Итак, поехали:

sudo apt-get install vdpauinfo vainfo
mkdir vdpau && cd vdpau
wget http://mirror.hatcolorsoft.com/testing/os/x86_64/ati-dri-8.99.git_20121006-1-x86_64.pkg.tar.xz
tar -xvf ati-dri-8.99.git_20121006-1-x86_64.pkg.tar.xz
sudo cp usr/lib/vdpau/libvdpau_r600* /usr/lib/x86_64-linux-gnu/
mkdir ~/libllvm && cd ~/libllvm
wget ftp://ftp.naist.jp/pub/Linux/archlinux/pool/packages/llvm-amdgpu-lib-snapshot-20130403-3-x86_64.pkg.tar.xz
tar -xvf llvm-amdgpu-lib-snapshot-20130403-3-x86_64.pkg.tar.xz
sudo cp usr/lib/libLLVM-3.2svn.so /usr/lib/x86_64-linux-gnu/

export LIBVA_DRIVER_NAME=vdpau

Проверьте вывод команд vainfo и vdpauinfo. Первая сообщит о работоспособности драйвера, вторая расскажет подробно о поддерживаемых функциях. Далее нужно указать под-драйвер для самого VDPAU. Как узнать, какой именно под-драйвер VDPAU вам нужен? Вот так:

cat /var/log/Xorg.0.log | grep -i vdpau

У меня это r600, у вас может быть любой (поддерживаются почти все радеоны)

Запустим браузер с целью комфортного просмотра Flash-контента:

VDPAU_DRIVER=r600 firefox

Запустим кино:

mplayer -vc ffh264vdpau кино.mp4

Примечание. Если запускать mplayer c параметром -vo vdpau, то это только включит вывод через VDPAU, декодирование будет выполняться по-прежнему программно. Нужно явно указывать кодек.

Далее нужно озаботиться тем, чтобы команда export LIBVA_DRIVER_NAME=vdpau была в автозагрузке, т.к. речь идёт о глобальной переменной. Без этой команды vainfo будет сообщать об ошибке.

 

5 комментариев на «ElementaryOS Luna: OSS Radeon + VDPAU на примере R600»

  1. Олег:

    То есть можно использовать одновременно и VAAPI, и VDPAU ?

  2. Это разные технологии.
    VDPAU — Video Decode and Presentation API for Unix),
    VAAPI — Video Acceleration API).
    Если в двух словах, это 2 разных способа аппаратно ускоренного декодирования видео, с независимыми (и разными) наборами кодеков. Текущая ситуация с VAAPI и VDPAU в Linux далека от идеала, поэтому если что-то из этого вообще работает — это уже вин.

  3. Олег:

    Мне непонятно, в системе обе технологии одновременно могут находиться и работать ( если установить драйвера обеих) ? Или одна другую исключает ?

  4. Обе одновременно могут находиться, никакого противоречия тут нет. А вот что будет работать — зависит от вашей видеокарты.

  5. bash elementary-dropbox/install.sh
    пропущено /tmp/

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: