On Tuesday, 2018-06-05 15:14:30 +0100, Emil Velikov wrote: > From: Emil Velikov <emil.veli...@collabora.com> > > Recently the wayland-egl library and pkg-config file were moved to the > Wayland repository. With that a strange conflict came to be - which one > should be used and when. > > The long term goal is to remove the Mesa copies, but with this patch we > allow builders to explicitly select if they want it. > > Note: since the header (wayland-egl-backend.h) is now used by C++ > people, s/private/driver_private/ was applied. > > Cc: Eric Engestrom <eric.engest...@intel.com> > CC: 18.0 18.1 <mesa-sta...@freedesktop.org> > Signed-off-by: Emil Velikov <emil.veli...@collabora.com> > --- > configure.ac | 17 +++++++++++++++++ > meson.build | 12 ++++++++++++ > meson_options.txt | 6 ++++++ > src/Makefile.am | 2 ++ > src/egl/Makefile.am | 1 + > src/egl/drivers/dri2/platform_wayland.c | 12 ++++++++++++ > src/egl/meson.build | 2 +- > src/meson.build | 2 +- > 8 files changed, 52 insertions(+), 2 deletions(-) > > diff --git a/configure.ac b/configure.ac > index 02dca4547c8..5ea52242bd1 100644 > --- a/configure.ac > +++ b/configure.ac > @@ -89,6 +89,7 @@ LIBOMXIL_BELLAGIO_REQUIRED=0.0 > LIBOMXIL_TIZONIA_REQUIRED=0.10.0 > LIBVA_REQUIRED=0.39.0 > VDPAU_REQUIRED=1.1 > +# TODO: Bump to 1.15 -> the first version that ships wayland-egl-backend > WAYLAND_REQUIRED=1.11 > WAYLAND_PROTOCOLS_REQUIRED=1.8 > XCB_REQUIRED=1.9.3 > @@ -1766,6 +1767,18 @@ if test "x$enable_glx_read_only_text" = xyes; then > DEFINES="$DEFINES -DGLX_X86_READONLY_TEXT" > fi > > +dnl > +dnl TEMPORARY: mostly for stable releases > +dnl > +dnl It will allow easier management as the wayland-egl library was > +dnl moved to the Wayland project > +dnl > +AC_ARG_ENABLE(bundled-wayland-egl, > + [AS_HELP_STRING([--disable-bundled-wayland-egl], > + [disable shipping of the wayland-egl library and pkg-config > file @<:@default=enabled@:>@])], > + [enable_wayland_egl=$enableval], [enable_wayland_egl=yes]) > +AM_CONDITIONAL(BUILD_WAYLAND_EGL, test "x$enable_wayland_egl" = xyes)
I'm not sure I see the benefit of your variant of adding all the complexity of a new option and immediately making it an error to use it. Could you explain your logic? > + > dnl > dnl DEPRECATED: EGL Platforms configuration > dnl > @@ -1807,6 +1820,10 @@ for plat in $platforms; do > > PKG_CHECK_MODULES([WAYLAND_CLIENT], [wayland-client >= > $WAYLAND_REQUIRED]) > PKG_CHECK_MODULES([WAYLAND_SERVER], [wayland-server >= > $WAYLAND_REQUIRED]) > + if test "x$enable_egl" = xyes -a "x$enable_wayland_egl" != xyes; then > + PKG_CHECK_MODULES([WAYLAND_EGL], [wayland-egl-backend >= 3]) > + DEFINES="$DEFINES -DUSE_EXTERNAL_WAYLAND_EGL" > + fi > PKG_CHECK_MODULES([WAYLAND_PROTOCOLS], [wayland-protocols >= > $WAYLAND_PROTOCOLS_REQUIRED]) > WAYLAND_PROTOCOLS_DATADIR=`$PKG_CONFIG --variable=pkgdatadir > wayland-protocols` > > diff --git a/meson.build b/meson.build > index 4aafba802a5..a4c72dad41a 100644 > --- a/meson.build > +++ b/meson.build > @@ -1229,8 +1229,19 @@ endif > if with_platform_wayland > prog_wl_scanner = find_program('wayland-scanner') > dep_wl_protocols = dependency('wayland-protocols', version : '>= 1.8') > + # TODO: Bump to 1.15 -> the first version that ships wayland-egl-backend > dep_wayland_client = dependency('wayland-client', version : '>=1.11') > dep_wayland_server = dependency('wayland-server', version : '>=1.11') > + build_wayland_egl = get_option('bundled-wayland-egl') > + if with_egl and not build_wayland_egl > + dep_wayland_egl = dependency('wayland-egl-backend', version : '>= 3') > + dep_wayland_egl_headers = declare_dependency( > + compile_args : run_command(prog_pkgconfig, ['wayland-egl-backend', > '--cflags']).stdout().split() > + ) > + pre_args += ['-DUSE_EXTERNAL_WAYLAND_EGL'] > + else > + dep_wayland_egl_headers = null_dep > + endif > wayland_dmabuf_xml = join_paths( > dep_wl_protocols.get_pkgconfig_variable('pkgdatadir'), 'unstable', > 'linux-dmabuf', 'linux-dmabuf-unstable-v1.xml' > @@ -1241,6 +1252,7 @@ else > dep_wl_protocols = null_dep > dep_wayland_client = null_dep > dep_wayland_server = null_dep > + dep_wayland_egl_headers = null_dep > wayland_dmabuf_xml = '' > endif > > diff --git a/meson_options.txt b/meson_options.txt > index 2c1f514debe..77d7c283fc9 100644 > --- a/meson_options.txt > +++ b/meson_options.txt > @@ -212,6 +212,12 @@ option( > choices : ['auto', 'true', 'false'], > description : 'Build support for EGL platform' > ) > +option( > + 'bundled-wayland-egl', > + type : 'boolean', > + value : true, > + description : 'Build/ship the wayland-egl library and pkg-config file' > +) > option( > 'glvnd', > type : 'boolean', > diff --git a/src/Makefile.am b/src/Makefile.am > index fd5ae445502..d91ecb3e239 100644 > --- a/src/Makefile.am > +++ b/src/Makefile.am > @@ -97,8 +97,10 @@ endif > > ## Optionally required by EGL > if HAVE_PLATFORM_WAYLAND > +if BUILD_WAYLAND_EGL > SUBDIRS += egl/wayland/wayland-egl > endif > +endif > > if HAVE_EGL > SUBDIRS += egl > diff --git a/src/egl/Makefile.am b/src/egl/Makefile.am > index 086a4a1e630..bde400bb47f 100644 > --- a/src/egl/Makefile.am > +++ b/src/egl/Makefile.am > @@ -87,6 +87,7 @@ libEGL_common_la_LIBADD += $(LIBDRM_LIBS) > AM_CFLAGS += $(WAYLAND_SERVER_CFLAGS) > libEGL_common_la_LIBADD += > $(top_builddir)/src/egl/wayland/wayland-drm/libwayland-drm.la > libEGL_common_la_LIBADD += $(WAYLAND_SERVER_LIBS) > +AM_CFLAGS += $(WAYLAND_EGL_CFLAGS) > dri2_backend_FILES += \ > drivers/dri2/platform_wayland.c > dri2_backend_GENERATED_FILES += \ > diff --git a/src/egl/drivers/dri2/platform_wayland.c > b/src/egl/drivers/dri2/platform_wayland.c > index 63da21cdf55..c49041f1174 100644 > --- a/src/egl/drivers/dri2/platform_wayland.c > +++ b/src/egl/drivers/dri2/platform_wayland.c > @@ -49,7 +49,11 @@ > #include "wayland-drm-client-protocol.h" > #include "linux-dmabuf-unstable-v1-client-protocol.h" > > +#ifdef USE_EXTERNAL_WAYLAND_EGL > +#include <wayland-egl-backend.h> > +#else > #include "wayland/wayland-egl/wayland-egl-backend.h" > +#endif > > #ifndef DRM_FORMAT_MOD_INVALID > #define DRM_FORMAT_MOD_INVALID ((1ULL << 56) - 1) > @@ -298,7 +302,11 @@ dri2_wl_create_window_surface(_EGLDriver *drv, > _EGLDisplay *disp, > dri2_surf->wl_queue); > > dri2_surf->wl_win = window; > +#ifdef USE_EXTERNAL_WAYLAND_EGL > + dri2_surf->wl_win->driver_private = dri2_surf; > +#else > dri2_surf->wl_win->private = dri2_surf; > +#endif > dri2_surf->wl_win->destroy_window_callback = destroy_window_callback; > if (dri2_dpy->flush) > dri2_surf->wl_win->resize_callback = resize_callback; > @@ -384,7 +392,11 @@ dri2_wl_destroy_surface(_EGLDriver *drv, _EGLDisplay > *disp, _EGLSurface *surf) > wl_callback_destroy(dri2_surf->throttle_callback); > > if (dri2_surf->wl_win) { > +#ifdef USE_EXTERNAL_WAYLAND_EGL > + dri2_surf->wl_win->driver_private = NULL; > +#else > dri2_surf->wl_win->private = NULL; > +#endif > dri2_surf->wl_win->resize_callback = NULL; > dri2_surf->wl_win->destroy_window_callback = NULL; > } > diff --git a/src/egl/meson.build b/src/egl/meson.build > index 9050d763a6c..be5a09106c6 100644 > --- a/src/egl/meson.build > +++ b/src/egl/meson.build > @@ -116,7 +116,7 @@ if with_platform_surfaceless > files_egl += files('drivers/dri2/platform_surfaceless.c') > endif > if with_platform_wayland > - deps_for_egl += [dep_wayland_client, dep_wayland_server] > + deps_for_egl += [dep_wayland_client, dep_wayland_server, > dep_wayland_egl_headers] > link_for_egl += libwayland_drm > files_egl += files('drivers/dri2/platform_wayland.c') > files_egl += [ > diff --git a/src/meson.build b/src/meson.build > index c2566b7a687..50af466c2ad 100644 > --- a/src/meson.build > +++ b/src/meson.build > @@ -75,7 +75,7 @@ if with_gbm > else > inc_gbm = [] > endif > -if with_egl > +if with_egl and build_wayland_egl > subdir('egl') > endif > if with_gallium > -- > 2.16.0 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev