Does 'glimagesink' used Qualcomm MDP for layer compose?


#1

Hi All,

According to the manual of 410C Dragonboard MIPI-CSI on netpage:
gst-launch-1.0 v4l2src ! glimagesink
I want to know whether glimagesink used MDP HW composer or not,
Anybody know some informations?
Thanks so much for any help.

Best Regards
Amy


#2

hey,

no it does not use MDP hw composition, instead it uses the GPU (gl/gles calls) to create an RGB surface out of the YUV buffer, which will then be presented to the X server for rendering.

under X11 it is not possible (e.g. there is no pluin) to do that. X11 has very limited capabilities to make use of h/w overlays.

in recent gstreamer release, a new plugin called kmssink was merged that would use KMS APIs to render buffer, in which case it would use the MDP, not the GPU. But this plugin cannot work in X11, it is for systems with graphics, and without X11.

if you use a wayland based compositor (like weston) it would make use of h/w overlays as well.


#3

Hi ndec,

Thanks so much for your help.
You mean Linaro Debian version for Dragonboard 410C do not support MDP composition
and if I want to use MDP on 410C platform I should porting wayland based compositor first?
Can I still use ‘gst-launch-1.0 v4l2src ! glimagesink’ to debug MIPI-CSI source after porting wayland?
Is there any reference document or netpage for porting wayland to Linaro Debian?
I’m a newbies for Linaro Debian and wayland.

Best Regards
Amy


#4

hi,

Debian has support for Wayland/Weston too. By default the desktop which is started is using X11, but you can also use Weston based ‘desktop’. In order to use MDP composition you need to have a software component that makes use of it, and as i said, in X11 there is nothing available. It is not a Dragonboard/QCOM specific issue, there is just no user space component that uses KMS overlays in X11 (which has been designed to work with 1 framebuffer). On the other hand with wayland/weston there is support for overlays through KMS APIs (which exposes MDP overlays).

glimagesink requires X11 (i believe), so you can’t use it without X11. But there is waylandsink in Gst which you might be able to use. Note that we haven’t worked a lot in this configuration, so you might find some rough edges…

for more info about wayland/weston

https://jan.newmarch.name/Wayland/RunningWayland/


#5

Hi ndec and all,

Thanks for you information.
I install weston on Dragonboard, and used command:
gst-launch-1.0 v4l2src ! waylandsink
to test MIPI-CSI source and I got the error as follows:

WARNING: from element /GstPipeline:pipeline0/GstWaylandSink:waylandsink0: Could not initialise Wayland output
Additional debug info:
gstwaylandsink.c(295): gst_wayland_sink_find_display (): /GstPipeline:pipeline0/GstWaylandSink:waylandsink0:
Failed to create GstWlDisplay: ‘Failed to connect to the wayland display ‘(default)’’

maybe this is the first rough edge?

Best Regards
Amy


#6

glimagesink does support Wayland, but you you need to explicitly set the windowing through an environment variable.

GST_GL_WINDOW=wayland gst-launch-1.0 v4l2src ! glimagesink

In general, I use gtkglsink, as GTK window will provide window decoration, and will figure-out the windowing automatically (same pipeline then works on X11 and Wayland).

gst-launch-1.0 v4l2src ! glsinkbin sink=“gtkglsink”

Also note that zero copy is not enabled by default. You have to tell v4l2src to export DMABuf. Note that on X11, you have to force the platform to EGL rather then GLX (the default). Use GST_GL_PLATFORM=egl in order to gain zero-copy (DMABuf importation in GL is a EGL extension).

gst-launch-1.0 v4l2src io-mode=dmabuf ! glsinkbin sink=“gtkglsink”

For waylandsink, I think you will have to wait for GStreamer 1.12, with DMABuf support. It also contains a lot of fixes around YUV formats handling. Obviously, you have to be running a Wayland compositor to use it, which does not seem to be the case in your test.

Final note, kmssink should have worked, but unfortunately fails to find a usable plane. I’ll see if I can find out why, no timeline though.