Re: [Mesa-dev] [PATCH v4 11/13] meson: build gallium omx state tracker
Quoting Emil Velikov (2017-11-17 04:19:22) > Hi Dylan, > > On 17 November 2017 at 00:27, Dylan Bakerwrote: > > > + elif not (with_gallium_r600 or with_gallium_radeonsi or > > with_gallium_nouveau) > > > > + elif not (with_gallium_r600 or with_gallium_radeonsi or > > with_gallium_nouveau) > > +error('OMX state tracker requires at least one of the following > > gallium drivers: r600, radeonsi, nouveau.') > > We had this type of dual tracking (once in configure and second in the > makefile) in the past for the autotools setup. > Sadly it was getting out of sync fairly often so Matt removed it. Now that I've had some more time ot think about it it, one of the things we can do (Eric Anholt suggested it as well), is move some of this logic out of $top/meson.build and down into the lower meson.build scripts, maybe src/gallium/targets/*/meson.build, which would make it harder for people to miss them since the two pieces of logic would be together. > > In the odd case where an empty* target is build we'll effectively nuke > it as part of the hardlink generation process. > > If you agreed, I won't bother respinning the series for that. One can > relax things as follow-up. > > * A target where no driver is actually present, only the state-tracker > bits are there. > > > --- a/src/gallium/meson.build > > +++ b/src/gallium/meson.build > > @@ -105,6 +105,9 @@ endif > > if with_gallium_xvmc > >subdir('state_trackers/xvmc') > > endif > > +if with_gallium_omx > > + subdir('state_trackers/omx_bellagio') > > +endif > > > -# TODO: OMX > > +if with_gallium_omx > > + subdir('targets/omx-bellagio') > > +endif > Grouping the state-tracker and target within the same if block will > make things easier to read. > Admittedly it's minor polish, so we can do that at later stage. > > Last but not least: thanks for removing the overlinking for va/vdpau. > > Emil signature.asc Description: signature ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH v4 11/13] meson: build gallium omx state tracker
Quoting Emil Velikov (2017-11-17 04:19:22) > Hi Dylan, > > On 17 November 2017 at 00:27, Dylan Bakerwrote: > > > + elif not (with_gallium_r600 or with_gallium_radeonsi or > > with_gallium_nouveau) > > > > + elif not (with_gallium_r600 or with_gallium_radeonsi or > > with_gallium_nouveau) > > +error('OMX state tracker requires at least one of the following > > gallium drivers: r600, radeonsi, nouveau.') > > We had this type of dual tracking (once in configure and second in the > makefile) in the past for the autotools setup. > Sadly it was getting out of sync fairly often so Matt removed it. How often do new drivers get added to media state trackers (real question)? It seems like the kind of thing that doesn't happen all that often and good review should catch. > > In the odd case where an empty* target is build we'll effectively nuke > it as part of the hardlink generation process. That seems... ugly. And it builds more than we need to since we wouldn't actually end up installing the state tracker. It would also confuse the heck out of me if I had turned OMX on and then didn't get an OMX driver or an error. > > If you agreed, I won't bother respinning the series for that. One can > relax things as follow-up. > > * A target where no driver is actually present, only the state-tracker > bits are there. > > > --- a/src/gallium/meson.build > > +++ b/src/gallium/meson.build > > @@ -105,6 +105,9 @@ endif > > if with_gallium_xvmc > >subdir('state_trackers/xvmc') > > endif > > +if with_gallium_omx > > + subdir('state_trackers/omx_bellagio') > > +endif > > > -# TODO: OMX > > +if with_gallium_omx > > + subdir('targets/omx-bellagio') > > +endif > Grouping the state-tracker and target within the same if block will > make things easier to read. > Admittedly it's minor polish, so we can do that at later stage. I have some patches built on top of this that do that grouping, as well as some other cleanups that I'm pretty happy with the result of for handling linking drivers into state trackers. > > Last but not least: thanks for removing the overlinking for va/vdpau. > > Emil signature.asc Description: signature ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH v4 11/13] meson: build gallium omx state tracker
Hi Dylan, On 17 November 2017 at 00:27, Dylan Bakerwrote: > + elif not (with_gallium_r600 or with_gallium_radeonsi or > with_gallium_nouveau) > + elif not (with_gallium_r600 or with_gallium_radeonsi or > with_gallium_nouveau) > +error('OMX state tracker requires at least one of the following gallium > drivers: r600, radeonsi, nouveau.') We had this type of dual tracking (once in configure and second in the makefile) in the past for the autotools setup. Sadly it was getting out of sync fairly often so Matt removed it. In the odd case where an empty* target is build we'll effectively nuke it as part of the hardlink generation process. If you agreed, I won't bother respinning the series for that. One can relax things as follow-up. * A target where no driver is actually present, only the state-tracker bits are there. > --- a/src/gallium/meson.build > +++ b/src/gallium/meson.build > @@ -105,6 +105,9 @@ endif > if with_gallium_xvmc >subdir('state_trackers/xvmc') > endif > +if with_gallium_omx > + subdir('state_trackers/omx_bellagio') > +endif > -# TODO: OMX > +if with_gallium_omx > + subdir('targets/omx-bellagio') > +endif Grouping the state-tracker and target within the same if block will make things easier to read. Admittedly it's minor polish, so we can do that at later stage. Last but not least: thanks for removing the overlinking for va/vdpau. Emil ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
[Mesa-dev] [PATCH v4 11/13] meson: build gallium omx state tracker
v2: - set with_gallium_omx when -Dgallium-omx=true - Fix detection of omx plugins dir - only use cflags from pkg-config, don't add linker flags. Signed-off-by: Dylan Baker--- meson.build| 60 - meson_options.txt | 13 src/gallium/meson.build| 7 +- .../state_trackers/omx_bellagio/meson.build| 30 + src/gallium/targets/omx-bellagio/meson.build | 77 ++ 5 files changed, 185 insertions(+), 2 deletions(-) create mode 100644 src/gallium/state_trackers/omx_bellagio/meson.build create mode 100644 src/gallium/targets/omx-bellagio/meson.build diff --git a/meson.build b/meson.build index 9e4460e15c5..2fffd66861d 100644 --- a/meson.build +++ b/meson.build @@ -429,6 +429,64 @@ if xvmc_drivers_path == '' xvmc_drivers_path = get_option('libdir') endif +dep_omx = [] +_omx = get_option('gallium-omx') +if _omx == 'auto' + if not ['linux', 'bsd'].contains(host_machine.system()) +with_gallium_omx = false + elif not with_platform_x11 +with_gallium_omx = false + elif not (with_gallium_r600 or with_gallium_radeonsi or with_gallium_nouveau) +with_gallium_omx = false + else +dep_omx = dependency('libomxil-bellagio', required : false) +with_gallium_omx = dep_omx.found() + endif +elif _omx == 'true' + if not ['linux', 'bsd'].contains(host_machine.system()) +error('OMX state tracker can only be built on unix-like OSes.') + elif not (with_platform_x11 or with_platform_drm) +error('OMX state tracker requires X11 or drm platform support.') +with_gallium_omx = false + elif not (with_gallium_r600 or with_gallium_radeonsi or with_gallium_nouveau) +error('OMX state tracker requires at least one of the following gallium drivers: r600, radeonsi, nouveau.') + endif + dep_omx = dependency('libomxil-bellagio') + with_gallium_omx = true +else + with_gallium_omx = false +endif + +omx_drivers_path = get_option('omx-libs-path') +if with_gallium_omx + # Figure out where to put the omx driver. + # FIXME: this could all be vastly simplified by adding a 'defined_variable' + # argument to meson's get_pkgconfig_variable method. + if omx_drivers_path == '' +_omx_libdir = dep_omx.get_pkgconfig_variable('libdir') +_omx_drivers_dir = dep_omx.get_pkgconfig_variable('pluginsdir') +if _omx_libdir == get_option('libdir') + omx_drivers_path = _omx_drivers_dir +else + _omx_base_dir = [] + # This will fail on windows. Does OMX run on windows? + _omx_libdir = _omx_libdir.split('/') + _omx_drivers_dir = _omx_drivers_dir.split('/') + foreach o : _omx_drivers_dir +if not _omx_libdir.contains(o) + _omx_base_dir += o +endif + endforeach + omx_drivers_path = join_paths(get_option('libdir'), _omx_base_dir) +endif + endif +endif +if with_gallium_omx + dep_omx = declare_dependency( +compile_args : dep_omx.get_pkgconfig_variable('cflags').split() + ) +endif + gl_pkgconfig_c_flags = [] if with_platform_x11 if with_any_vk or (with_glx == 'dri' and with_dri_platform == 'drm') @@ -936,7 +994,7 @@ if with_platform_x11 dep_xxf86vm = dependency('xxf86vm', required : false) endif if (with_any_vk or (with_glx == 'dri' and with_dri_platform == 'drm') or - (with_gallium_vdpau or with_gallium_xvmc)) + (with_gallium_vdpau or with_gallium_xvmc or with_gallium_omx)) dep_xcb = dependency('xcb') dep_x11_xcb = dependency('x11-xcb') dep_xcb_dri2 = dependency('xcb-dri2', version : '>= 1.8') diff --git a/meson_options.txt b/meson_options.txt index f0de44e751b..8ee216d5b8a 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -75,6 +75,19 @@ option( value : '', description : 'path to put xvmc libraries. defaults to $libdir.' ) +option( + 'gallium-omx', + type : 'combo', + value : 'auto', + choices : ['auto', 'true', 'false'], + description : 'enable gallium omx bellagio state tracker.', +) +option( + 'omx-libs-path', + type : 'string', + value : '', + description : 'path to put omx libraries. defaults to omx-bellagio pkg-config pluginsdir.' +) option( 'vulkan-drivers', type : 'string', diff --git a/src/gallium/meson.build b/src/gallium/meson.build index a8317a53552..c17dba51ff2 100644 --- a/src/gallium/meson.build +++ b/src/gallium/meson.build @@ -105,6 +105,9 @@ endif if with_gallium_xvmc subdir('state_trackers/xvmc') endif +if with_gallium_omx + subdir('state_trackers/omx_bellagio') +endif # TODO: SWR # TODO: clover if with_dri and with_gallium @@ -122,7 +125,9 @@ endif if with_gallium_xvmc subdir('targets/xvmc') endif -# TODO: OMX +if with_gallium_omx + subdir('targets/omx-bellagio') +endif # TODO: VA # TODO: xa # TODO: nine diff --git a/src/gallium/state_trackers/omx_bellagio/meson.build b/src/gallium/state_trackers/omx_bellagio/meson.build new file mode