← Back to team overview

desktop-packages team mailing list archive

[Bug 1481832] Re: VA-API implementation for gallium missing

 

> In reaction to Robert Hooker about performance. 
> Did some benchmarks with "mpv" and 1080i h264 transport stream footage trying all three possible acc. 
> backends on [Radeon HD 6320].
>
> *vdpau (native)
> *Splitte d-Desktop Systems VDPAU backend for VA-API
> *mesa gallium vaapi

> All of them seem to perform equally maybe some 1-5% difference. 
> Maybe because there isn't real 'vdpau' on AMD so its implementation of vdpau 
> is like the other VAAPI ones using the same optimize tricks 
> (combination of hardwaredecoder/shaders/etc/gpu offload)?

Does the mesa gallium vaapi also supports the UVD video decoding in
hardware as the vdpau driver does?

I just tested the vdpau and vaapi->vdpau against CPU only decoding
(AMD64 dualcore) on a  Radeon HD 3200 (RS780) playing a 1080i h264
sample.

I got a huge difference of less than 10% cpu load for vdpau to more than
100% load for CPU only decoding (didn't find vaapi option for mpv).

Also the vaapi->vdpau backend helped to reduce the cpu load for vlc
2.1.x using --avcodec-hw=vaapi from 100% to 35%. (only vlc from 2.2.x
has native vdpau support).

I guess I will also have a look at the mesa gallium vaapi.

-- 
You received this bug notification because you are a member of Desktop
Packages, which is subscribed to mesa in Ubuntu.
https://bugs.launchpad.net/bugs/1481832

Title:
  VA-API implementation for gallium missing

Status in mesa package in Ubuntu:
  Confirmed

Bug description:
  [needs-packaging] mesa
  Please include "gallium_drv_video.so" which is a native va-api state tracker for mesa(gallium).

  URL: http://mesa3d.sourceforge.net/
  URL: http://freedesktop.org/wiki/Software/vaapi/ #intel/vdpau
  License: http://www.mesa3d.org/license.html

  Notes:
  Currently (as of today) in ubuntu 15.10 nightly amd64, va-api(vaapi) on AMD/Ati radeon opensource display hardware is using a vdpau backend  0.7.4 by Splitted-Desktop Systems (wrapper) on gallium r600. Although its possible and probably preferred (better performance less copying) to use a native implementation which mesa(gallium) 10.4 and higher delivers in a form of a va-api state tracker.

  vainfo #current default setup vdpau backend
  libva info: VA-API version 0.38.0
  libva info: va_getDriverName() returns 0
  libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/r600_drv_video.so
  libva info: Found init function __vaDriverInit_0_37
  libva info: va_openDriver() returns 0
  vainfo: VA-API version: 0.38 (libva 1.6.0)
  vainfo: Driver version: Splitted-Desktop Systems VDPAU backend for VA-API - 0.7.4
  vainfo: Supported profile and entrypoints
        VAProfileMPEG2Simple            :	VAEntrypointVLD
        VAProfileMPEG2Main              :	VAEntrypointVLD
        VAProfileMPEG4Simple            :	VAEntrypointVLD
        VAProfileMPEG4AdvancedSimple    :	VAEntrypointVLD
        VAProfileH264Baseline           :	VAEntrypointVLD
        VAProfileH264Main               :	VAEntrypointVLD
        VAProfileH264High               :	VAEntrypointVLD
        VAProfileVC1Advanced            :	VAEntrypointVLD

  The preferred setup needs that "gallium_drv_video.so" binary which is
  currently unavailable in ubuntu and debian. As an example I added a
  package/binary from archlinux. Copying the gallium_drv_video.so to
  /usr/lib/x86_64-linux-gnu/dri/ and symlinking(correcting) the
  libLLVM-3.6.so to arch-linux default /usr/lib/ location and exporting
  a variable was enough to make it work!
  https://www.archlinux.org/packages/extra/x86_64/libva-mesa-driver/
  #example by archlinux

  export LIBVA_DRIVER_NAME=gallium
  vainfo #preferred setup using gallium va-api from arch-linux (symlinked libLLVM-3.6.so to /usr/lib)
  libva info: VA-API version 0.38.0
  libva info: va_getDriverName() returns 0
  libva info: User requested driver 'gallium'
  libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/gallium_drv_video.so
  libva info: Found init function __vaDriverInit_0_38
  libva info: va_openDriver() returns 0
  vainfo: VA-API version: 0.38 (libva 1.6.0)
  vainfo: Driver version: mesa gallium vaapi
  vainfo: Supported profile and entrypoints
        VAProfileMPEG2Simple            :	VAEntrypointVLD
        VAProfileMPEG2Main              :	VAEntrypointVLD
        VAProfileMPEG4Simple            :	VAEntrypointVLD
        VAProfileMPEG4AdvancedSimple    :	VAEntrypointVLD
        VAProfileVC1Advanced            :	VAEntrypointVLD
        VAProfileH264Baseline           :	VAEntrypointVLD
        VAProfileH264Main               :	VAEntrypointVLD
        VAProfileH264High               :	VAEntrypointVLD

  I guess this binary "gallium_drv_video.so" might be available as a
  compile flag in the current mesa implementation... intel and vdpau has
  their own current implementation in a separate libva branch
  http://cgit.freedesktop.org/vaapi/libva/ ?

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/mesa/+bug/1481832/+subscriptions