Added support of wayland-egl-backend for old Ubuntus. Building of mesa with parameter "--with-egl-platforms=x11,wayland" fails: "configure: error: Package requirements (wayland-egl-backend >= 3) were not met: No package 'wayland-egl-backend' found"
Ubuntu's releases less than 18.10 don't have package libwayland-egl-backend-dev. To fix that issue used mesa-platfrom-header wayland-egl-backend.h. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=106897 Signed-off-by: Sergii Romantsov <sergii.romant...@globallogic.com> --- configure.ac | 20 ++++++- src/egl/Makefile.am | 5 ++ src/egl/wayland/wayland-egl/wayland-egl-backend.h | 67 +++++++++++++++++++++++ 3 files changed, 91 insertions(+), 1 deletion(-) create mode 100644 src/egl/wayland/wayland-egl/wayland-egl-backend.h diff --git a/configure.ac b/configure.ac index 75ee1a7..32b3c53 100644 --- a/configure.ac +++ b/configure.ac @@ -91,6 +91,7 @@ LIBVA_REQUIRED=0.39.0 VDPAU_REQUIRED=1.1 WAYLAND_REQUIRED=1.11 WAYLAND_EGL_BACKEND_REQUIRED=3 +UBUNTU_WAYLAND_EGL_BACKEND_REQUIRED=18.10 WAYLAND_PROTOCOLS_REQUIRED=1.8 XCB_REQUIRED=1.9.3 XCBDRI2_REQUIRED=1.8 @@ -1810,7 +1811,24 @@ for plat in $platforms; do PKG_CHECK_MODULES([WAYLAND_SERVER], [wayland-server >= $WAYLAND_REQUIRED]) PKG_CHECK_MODULES([WAYLAND_PROTOCOLS], [wayland-protocols >= $WAYLAND_PROTOCOLS_REQUIRED]) if test "x$enable_egl" = xyes; then - PKG_CHECK_MODULES([WAYLAND_EGL], [wayland-egl-backend >= $WAYLAND_EGL_BACKEND_REQUIRED]) + case "$host_os" in + linux*) + AC_SUBST([DISTRIBUTOR_ID],[$( lsb_release -is )]) + AC_SUBST([RELEASE_VERSION],[$( lsb_release -rs )]) + ;; + *) + AC_SUBST([DISTRIBUTOR_ID]) + AC_SUBST([RELEASE_VERSION]) + ;; + esac + + if test "$DISTRIBUTOR_ID" = "Ubuntu" -a $RELEASE_VERSION \< $UBUNTU_WAYLAND_EGL_BACKEND_REQUIRED ; then + DEFINES="$DEFINES -DHAVE_PLATFORM_WAYLAND_BACKEND" + AM_CONDITIONAL([HAVE_PLATFORM_WAYLAND_BACKEND], [test "xyes" = xyes]) + else + PKG_CHECK_MODULES([WAYLAND_EGL], [wayland-egl-backend >= $WAYLAND_EGL_BACKEND_REQUIRED]) + AM_CONDITIONAL([HAVE_PLATFORM_WAYLAND_BACKEND], [test "xyes" != xyes]) + fi fi WAYLAND_PROTOCOLS_DATADIR=`$PKG_CONFIG --variable=pkgdatadir wayland-protocols` diff --git a/src/egl/Makefile.am b/src/egl/Makefile.am index be3547d..0ef0a42 100644 --- a/src/egl/Makefile.am +++ b/src/egl/Makefile.am @@ -121,6 +121,11 @@ AM_CFLAGS += \ -DDEFAULT_DRIVER_DIR=\"$(DRI_DRIVER_SEARCH_DIR)\" \ -D_EGL_BUILT_IN_DRIVER_DRI2 +if HAVE_PLATFORM_WAYLAND_BACKEND +AM_CFLAGS += \ + -I$(top_srcdir)/src/egl/wayland/wayland-egl +endif + nodist_libEGL_common_la_SOURCES = \ $(dri2_backend_GENERATED_FILES) diff --git a/src/egl/wayland/wayland-egl/wayland-egl-backend.h b/src/egl/wayland/wayland-egl/wayland-egl-backend.h new file mode 100644 index 0000000..869c86f --- /dev/null +++ b/src/egl/wayland/wayland-egl/wayland-egl-backend.h @@ -0,0 +1,67 @@ +/* + * Copyright © 2011 Benjamin Franzke + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Authors: + * Benjamin Franzke <benjaminfran...@googlemail.com> + */ + +#ifndef _WAYLAND_EGL_PRIV_H +#define _WAYLAND_EGL_PRIV_H + +#include <stdint.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * NOTE: This version must be kept in sync with the Version field in the + * wayland-egl-backend.pc.in file. + */ +#define WL_EGL_WINDOW_VERSION 3 + +struct wl_surface; + +struct wl_egl_window { + const intptr_t version; + + int width; + int height; + int dx; + int dy; + + int attached_width; + int attached_height; + + void *driver_private; + void (*resize_callback)(struct wl_egl_window *, void *); + void (*destroy_window_callback)(void *); + + struct wl_surface *surface; +}; + +#ifdef __cplusplus +} +#endif + +#endif -- 2.7.4 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev