Headless mode for GL plugin

Matthew Waters ystreet00 at gmail.com
Mon Mar 26 09:53:23 UTC 2018


Arch may be missing the GBM window system.

Check if

#define GST_GL_HAVE_WINDOW_GBM 1

Is true inside /usr/lib/gstreamer-1.0/gst/gl/gstglconfig.h

Cheers
-Matt

On 26/03/18 19:45, Alexander Yanin wrote:
> Unfortunately, it doesn't work out of the box for me on Arch. Here is
> the output^
>
> glcontext gstglcontext.c:337:gst_gl_context_new: creating a context
> for display <gldisplayegl0>, user choice:(null)
> glwindow gstglwindow.c:251:gst_gl_window_new: creating a window, user
> choice:gbm
> glwindow gstglwindow.c:293:gst_gl_window_new: Could not create window.
> user specified gbm, creating dummy window
> glcontext
> gstglcontext.c:1240:gst_gl_context_create_thread:<glcontextegl23>
> Attempting to create opengl context. user chosen api(s) (any),
> compiled api support (opengl opengl3 gles2) display api (opengl
> opengl3 gles2)
> glcontext
> gstglcontext.c:1244:gst_gl_context_create_thread:<glcontextegl23>
> Failed to create context
> glcontext gstglcontext.c:1046:gst_gl_context_create:<glcontextegl23>
> gl thread created
> glmixer gstglbasemixer.c:176:_get_gl_context:<mixer> error: Failed to
> initialize egl: EGL_NOT_INITIALIZED
>
> Did Arch maintainers miss some compile-time flags or have I done
> something wrong?
>
> 2018-03-23 15:30 GMT+03:00 Alexander Yanin <sashayanin at gmail.com
> <mailto:sashayanin at gmail.com>>:
>
>     Thank you, Matt. I will try, hope this should work with 1.14​
>
>     2018-03-23 15:25 GMT+03:00 Matthew Waters <ystreet00 at gmail.com
>     <mailto:ystreet00 at gmail.com>>:
>
>         It should work out of the box if you don't already have an
>         X11/Wayland display server running.  It's chosen after
>         X11/Wayland connections fail.
>
>         You can also force it by setting the environment variable
>         GST_GL_WINDOW=gbm
>
>         e.g. GST_DEBUG=gl*:4 GST_GL_WINDOW=gbm gst-launch-1.0
>         videotestsrc ! glupload ! gleffects_squeeze ! glcolorconvert !
>         gldownload ! pngenc ! filesink location=test.png
>
>         Cheers
>         -Matt
>
>
>         On 23/03/18 22:57, Alexander Yanin wrote:
>>         ​Thanks! Fine, what I need to do to make it work on Intel
>>         Kabylake with Mesa and without neither xorg nor wayland?
>>         Would it work right out of the box or should I perform some
>>         additional actions to make it run?
>>
>>         2018-03-23 14:50 GMT+03:00 Matthew Waters
>>         <ystreet00 at gmail.com <mailto:ystreet00 at gmail.com>>:
>>
>>             Accessing the GPU without a windowing system is something
>>             that is very specific to every driver/hardware
>>             combination.  We support (with 1.14) one method using kms
>>             and a libgbm compatible driver which are used by all of
>>             the Mesa drivers.  Some other embedded systems (rpi,
>>             imx6) have other ways. That nvidia blog post you've
>>             linked contains references to EGL_EXT_device_query
>>             <https://www.khronos.org/registry/EGL/extensions/EXT/EGL_EXT_device_query.txt>
>>             which I guess is nvidia's way of performing a similar
>>             thing and such a method could be added to the GStreamer
>>             GL library and plugins.
>>
>>             Cheers
>>             -Matt
>>
>>
>>             On 23/03/18 21:10, Alexander Yanin wrote:
>>>             Hi!
>>>
>>>             Is it possible to use GL elements (like glvideomixer,
>>>             glupload, gleffects, etc) without anything like Wayland,
>>>             Xorg, etc? In particular, I want to use glvideomixer
>>>             instead of compositor on a server without any display
>>>             attached. I heard about a possible workaround using
>>>             frame buffer, but I didn't manage to find a way to use
>>>             glvideomixer without xorg or wayland. It crushes on
>>>             context initialization.
>>>
>>>             Here is the output:
>>>
>>>             glmixer gstglbasemixer.c:217:_get_gl_context:<mixer>
>>>             error: Failed to initialize egl: EGL_NOT_INITIALIZED
>>>             glwindow gstglwindow.c:285:gst_gl_window_new: Could not
>>>             create window. user specified (null), creating dummy window
>>>             glcontext
>>>             gstglcontext.c:1235:gst_gl_context_create_thread:<glcontextegl48>
>>>             Failed to create context
>>>
>>>             So, is there a way to bypass this issue without using
>>>             xorg or wayland? I heard that it is possible to
>>>             initialize EGL without xorg [1]. Is it possible to use
>>>             this approach within gl elements?
>>>
>>>             [1]
>>>https://devblogs.nvidia.com/egl-eye-opengl-visualization-without-x-server/
>>>             <https://devblogs.nvidia.com/egl-eye-opengl-visualization-without-x-server/>
>>>
>>>
>>>             _______________________________________________
>>>             gstreamer-devel mailing list
>>>             gstreamer-devel at lists.freedesktop.org
>>>             <mailto:gstreamer-devel at lists.freedesktop.org>
>>>             https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>>>             <https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel>
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20180326/2d88a46a/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 516 bytes
Desc: OpenPGP digital signature
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20180326/2d88a46a/attachment-0001.sig>


More information about the gstreamer-devel mailing list