[oi-dev] gstreamer1 and OpenGL/EGL
Till Wegmueller
toasterson at gmail.com
Wed Oct 27 20:42:07 UTC 2021
Ok, then it's a case of compilation Broken.
Please add a note to the makefile to note this finding about QT5 so we
have it for posterity.
On 27.10.21 22:32, Tim Mooney via oi-dev wrote:
> In regard to: Re: [oi-dev] gstreamer1 and OpenGL/EGL, Till Wegmüller
> said...:
>
>> Is there any big change if we let meson decide it itself?
>
> Yes, unfortunately. If I don't specify anything GL-related, it also finds
> Qt5 and qmake, but it gets the ABI wrong (it's using qmake to build 64 bit
> Qt5-related code during the 32 bit build) and linking fails.
>
> There is no option to just disable qt5, at least for these plugins. There
> is for at least one of the later sets of plugins.
>
> Limiting what it could select for OpenGL was the only built-in way I found
> to avoid the Qt5 linking failures.
>
> I could go back and try patch out the Qt5 code, instead, but that's likely
> more work.
>
>> Usually we only disable stuff if compilation is broken, so there is no
>> feature limit on purpose in OI. Just things that are broken or need
>> additional deps nobody had the time for.
>
> I'll keep that in mind for future components.
>
> Thanks!
>
> Tim
>
>
>> On 26.10.21 21:44, Tim Mooney via oi-dev wrote:
>>>
>>> All-
>>>
>>> I'm working my way through updating the gstreamer1 components to the
>>> latest version (1.16.2 -> 1.18.5). They've switched from autoconf to
>>> meson, so the biggest hurdle has been converting the Makefile to use
>>> the new configuration options.
>>>
>>> With the current 1.16.2, gst-plugins-base1 specifies
>>>
>>> CONFIGURE_OPTIONS += --disable-gles2
>>>
>>> but nothing else OpenGL related.
>>>
>>> Unfortunately, gst-plugins-base1 for 1.18.5 with meson doesn't have
>>> the same option meanings, so there's no one-to-one mapping between our
>>> old configuration and the new. The meson_options related to OpenGL are
>>>
>>> # OpenGL integration library options
>>> option('gl_api', type : 'array', choices : ['opengl', 'gles2',
>>> 'auto'],
>>> value : ['auto'],
>>> description : 'A comma separated list of opengl APIs to enable
>>> building against'
>>> )
>>>
>>> option('gl_platform', type : 'array',
>>> choices : ['glx', 'egl', 'cgl', 'wgl', 'eagl', 'auto'],
>>> value : ['auto'],
>>> description : 'A comma separated list of opengl platforms to
>>> enable building against'
>>> )
>>>
>>> option('gl_winsys', type : 'array',
>>> choices : ['x11', 'wayland', 'win32', 'winrt', 'cocoa',
>>> 'dispmanx', 'egl', 'viv-fb', 'gbm', 'android', 'auto'],
>>> value : ['auto'],
>>> description : 'A comma separated list of opengl windows systems
>>> to enable building against. Supported values are x11,
>>> wayland,
>>> win32, winrt, cocoa, dispmanx, egl, viv-fb, gbm, and
>>> android'
>>> )
>>>
>>> option('egl_module_name', type : 'string',
>>> value : '',
>>> description : 'The file to pass to g_module_open to open the
>>> libEGL library (default: libEGL)'
>>> )
>>>
>>> option('opengl_module_name', type : 'string',
>>> value : '',
>>> description : 'The file to pass to g_module_open to open the
>>> libGL library (default: libGL)'
>>> )
>>>
>>> option('gles2_module_name', type : 'string',
>>> value : '',
>>> description : 'The file to pass to g_module_open to open the
>>> libGLESv2 library (default: libGLESv2)'
>>> )
>>>
>>>
>>> #
>>> # Feature option for opengl plugin and integration library
>>> #
>>> option('gl', type : 'feature',
>>> value : 'auto',
>>> description : 'OpenGL integration library and OpenGL plugin'
>>> )
>>>
>>> option('gl-graphene', type : 'feature',
>>> value : 'auto',
>>> description : 'Use Graphene in OpenGL plugin'
>>> )
>>>
>>> option('gl-jpeg', type : 'feature',
>>> value : 'auto',
>>> description : 'Use libjpeg in OpenGL plugin'
>>> )
>>>
>>> option('gl-png', type : 'feature',
>>> value : 'auto',
>>> description : 'Use libpng in OpenGL plugin'
>>> )
>>>
>>>
>>> Now, with the available meson options, what I have (so far) specified
>>> for the
>>> updated build is
>>>
>>> CONFIGURE_OPTIONS += -Dgl_api=opengl
>>> CONFIGURE_OPTIONS += -Dgl_platform=glx,egl
>>> CONFIGURE_OPTIONS += -Dgl_winsys=x11,egl
>>> CONFIGURE_OPTIONS += -Dgl-graphene=disabled
>>>
>>>
>>> With those options specified, the updated manifest isn't missing
>>> anything
>>> that was present in the 1.16.2 component.
>>>
>>> It seems like some new stuff is being added, though:
>>>
>>> file path=usr/lib/pkgconfig/gstreamer-gl-1.0.pc
>>> +file path=usr/lib/pkgconfig/gstreamer-gl-egl-1.0.pc
>>> +file path=usr/lib/pkgconfig/gstreamer-gl-prototypes-1.0.pc
>>> +file path=usr/lib/pkgconfig/gstreamer-gl-x11-1.0.pc
>>>
>>> There are also new GL-related header files and several files related to
>>> introspection (for the 64 bit build; the 32 bit build has introspection
>>> disabled):
>>>
>>> +file path=usr/lib/$(MACH64)/girepository-1.0/GstGLEGL-1.0.typelib
>>> +file path=usr/lib/$(MACH64)/girepository-1.0/GstGLX11-1.0.typelib
>>>
>>> +file path=usr/share/gir-1.0/GstGLEGL-1.0.gir
>>> +file path=usr/share/gir-1.0/GstGLX11-1.0.gir
>>>
>>>
>>> I also note that the existing package has dependency skips for libGL and
>>> libEGL:
>>>
>>> file path=usr/lib/$(MACH64)/libgstgl-1.0.so.0.1602.0 \
>>> pkg.depend.bypass-generate=libGL\.so\.1 \
>>> pkg.depend.bypass-generate=libEGL\.so\.1
>>>
>>>
>>> This leads me to wonder whether the set of meson options I chose are
>>> what we want. Would it be better if I dropped "egl" from gl_platform
>>> and gl_winsys?
>>>
>>> If I include stuff by mistake that we later decide we don't want, it's
>>> going to be more difficult to get rid of it later than it is to get the
>>> right stuff selected now.
>>>
>>> Tim
>>
>> _______________________________________________
>> oi-dev mailing list
>> oi-dev at openindiana.org
>> https://openindiana.org/mailman/listinfo/oi-dev
>>
>>
>
>
> _______________________________________________
> oi-dev mailing list
> oi-dev at openindiana.org
> https://openindiana.org/mailman/listinfo/oi-dev
>
More information about the oi-dev
mailing list