[Mesa-stable] [Mesa-dev] [PATCH 1/5] wayland-egl: allow shipping the library or not
Eric Engestrom
eric.engestrom at intel.com
Tue Jun 5 15:07:21 UTC 2018
On Tuesday, 2018-06-05 15:14:30 +0100, Emil Velikov wrote:
> From: Emil Velikov <emil.velikov at 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.engestrom at intel.com>
> CC: 18.0 18.1 <mesa-stable at freedesktop.org>
> Signed-off-by: Emil Velikov <emil.velikov at 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 at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
More information about the mesa-stable
mailing list