This 2 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:
https://github.com/Samsung/ChromiumGStreamerBackend

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 (2):
  st/va: implement VaDeriveImage
  st/va: add support to export a surface as dmabuf

 src/gallium/state_trackers/va/buffer.c     | 181 ++++++++++++++++++++++++++++-
 src/gallium/state_trackers/va/context.c    |   4 +-
 src/gallium/state_trackers/va/image.c      |  92 ++++++++++++++-
 src/gallium/state_trackers/va/va_private.h |  11 ++
 4 files changed, 281 insertions(+), 7 deletions(-)

-- 
1.9.1

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to