[Bug 743345] glimagesink: Add support for dmabuf

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Wed Jan 28 20:04:51 PST 2015


https://bugzilla.gnome.org/show_bug.cgi?id=743345
  GStreamer | gst-plugins-bad | unspecified

Julien Isorce <julien.isorce> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |julien.isorce at gmail.com

--- Comment #3 from Julien Isorce <julien.isorce at gmail.com> 2015-01-28 22:21:55 UTC ---
That's great to see some work around this.

Some remarks: (I may have missed something though :) )

I can see you have not added code here:
http://cgit.freedesktop.org/gstreamer/gst-plugins-bad/tree/gst-libs/gst/gl/egl/gsteglimagememory.c,
any reason ?  (Also as a side note I can see about eglimage some duplicated
code added recently in gstglupload since last time I looked)

Anyway, with omx/eglimage_with_context/gltexture, the sink can suggest a pool
of eglimage_with_gl_context_and_texture that are later filled by the upstream
decoder. But I do not see either a pool of eglimage in your case. It seems you
create an eglimage for every buffer. I do not see the egldestroy btw.

In your scenario I do not see any pool of eglimage_no_context_and_with_dmaf_buf
.
Also here I do not see any mention to "dma" here
http://cgit.collabora.com/git/user/lubosz/gst-plugins-bad.git/tree/ext/gl/gstglimagesink.c?id=cc89ca45b172919ccdd9c68e237e6be3abe3ec06#n1206
.

Depending on the allocator selected by the upstream decoder, the downstream
pool will be setup with or without eglimage, see
http://cgit.freedesktop.org/gstreamer/gst-plugins-bad/tree/gst-libs/gst/gl/gstglbufferpool.c#n149
 and  then
http://cgit.freedesktop.org/gstreamer/gst-plugins-bad/tree/gst-libs/gst/gl/gstglbufferpool.c#n245
through gst_egl_image_memory_setup_buffer.

Well here to distinguish either eglimage_with_context_and_texture or
eglimage_no_context_and_with_dmaf_buf  we could make it a bit generic by using
the existing GstAllocationParams/GstMemoryFlags with some improvements or add
gstgl API used by the decoder (see
http://cgit.freedesktop.org/gstreamer/gst-omx/tree/omx/gstomxvideodec.c#n41)
That would avoid to introduce memory:dmabuf and re-use memory:EGLImage

Finally about the multiple plane case, even if the driver supports it, maybe
you need to create one eglimage per plane as done here:
https://github.com/raspberrypi/userland/blob/master/host_applications/linux/apps/raspicam/RaspiTex.h#L162
(or here
http://cgit.freedesktop.org/gstreamer/gst-plugins-bad/tree/gst-libs/gst/gl/egl/gsteglimagememory.c#n480
but not yet tested) . In your code I can see only one call to eglcreateimage,
but again I may have missed something.

Out of curiosity, could you paste cpu perf tool output ? and intel_gpu_top
(http://dri.freedesktop.org/wiki/IntelPerformanceTuning/) ?

-- 
Configure bugmail: https://bugzilla.gnome.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.


More information about the gstreamer-bugs mailing list