[Mesa-dev] [PATCH v5 00/10] st/va: add support for VPP, headless and dmabuf

Julien Isorce j.isorce at samsung.com
Fri Oct 30 04:42:43 PDT 2015

All these patches have been already reviewed by Emil Velikov.
And are now under review by Christian Koenig.

This patch serie adds initial support for Video Post Processing.
It also implements VaCreateSurfaces2 for common purpose and
also to import a dmabuf. It also adds support for headless mode,
i.e. using DRM instead of X11.

This 2 last patches allow to derive a va surface as a va image.
Which one can be exported as dmabuf by calling VaAcquireBufferHandle.

I have tested these patches with gstreamer-vaapi and nouveau driver.
The pipeline looks like:

gstvaapidecode:(vasurface, NV12) -> gstvaapipostproc:(dmabuf, RGBA) -> glimagesink(EGL_EXT_image_dma_buf_import)

I even went further by doing export and import in separate processes,
i.e. exporting the surface in a process A, and importing in an EGLImage in a process B.

The concrete use case is the GStreamer backend for the Chromium browser:

The VA surface is exported as dmabuf in the new Media Process.
Then this dmabuf is imported into an EGLImage in the GPU Process.

Julien Isorce (10):
  st/va: properly defines VAImageFormat formats and improve
  st/va: do not destroy old buffer when new one failed
  st/va: implement VaCreateSurfaces2 and VaQuerySurfaceAttributes
  st/va: implement dmabuf import for VaCreateSurfaces2
  st/va: add colospace conversion through Video Post Processing
  st/va: handle Video Post Processing for configs
  st/va: add headless support, i.e. VA_DISPLAY_DRM
  st/va: add more errors checks in vlVaBufferSetNumElements and
  st/va: implement VaDeriveImage
  st/va: add support to export a surface as dmabuf

 src/gallium/include/pipe/p_format.h        |   3 +-
 src/gallium/state_trackers/va/Makefile.am  |   9 +
 src/gallium/state_trackers/va/buffer.c     | 183 ++++++++++-
 src/gallium/state_trackers/va/config.c     |  20 ++
 src/gallium/state_trackers/va/context.c    | 201 ++++++++----
 src/gallium/state_trackers/va/image.c      | 138 ++++++++-
 src/gallium/state_trackers/va/picture.c    |  81 ++++-
 src/gallium/state_trackers/va/surface.c    | 481 ++++++++++++++++++++++++++---
 src/gallium/state_trackers/va/va_private.h |  71 ++++-
 9 files changed, 1055 insertions(+), 132 deletions(-)


More information about the mesa-dev mailing list