diff options
author | Julien Olivain <juju@cotds.org> | 2020-05-11 08:58:30 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-05-11 08:58:30 +0200 |
commit | c2288a7b88240e4377bfc1c67b44efb58f704a42 (patch) | |
tree | afe501cf5ed4d0f028d250bac30bb7dffa188e49 | |
parent | 1139234117f045e6e37ac585f8026b3c125d2ceb (diff) |
render/egl: include EGL/eglmesaext.h only if present
This patch will make the EGL renderer work on any EGL/GLESv2 driver
providing the EGL_WL_bind_wayland_display extensions.
Mesa used to declare provisional EGL_WL_bind_wayland_display directly
in <EGL/eglext.h>. Then, all unofficial extensions were moved to
<EGL/eglmesaext.h>, to have a cleaner implementation. See:
https://gitlab.freedesktop.org/mesa/mesa/-/commit/ab7bb10a2af711086319ce35815acd797b86fe27
The extension was then approved at Khronos Group, and reached the
official <EGL/eglext.h>. See:
https://www.khronos.org/registry/EGL/extensions/WL/EGL_WL_bind_wayland_display.txt
https://github.com/KhronosGroup/EGL-Registry/commit/aa9b63f3ab18aee92c95786a2478156430f809e4
In order to make sure the renderer will work on any version of any
implementation providing the extension, only include the mesa-specific
header if it's present.
Signed-off-by: Julien Olivain <juju@cotds.org>
-rw-r--r-- | include/wlr/config.h.in | 2 | ||||
-rw-r--r-- | include/wlr/render/egl.h | 4 | ||||
-rw-r--r-- | meson.build | 5 |
3 files changed, 11 insertions, 0 deletions
diff --git a/include/wlr/config.h.in b/include/wlr/config.h.in index 94273fac..a7691ff9 100644 --- a/include/wlr/config.h.in +++ b/include/wlr/config.h.in @@ -1,6 +1,8 @@ #ifndef WLR_CONFIG_H #define WLR_CONFIG_H +#mesondefine WLR_HAS_EGLMESAEXT_H + #mesondefine WLR_HAS_LIBCAP #mesondefine WLR_HAS_SYSTEMD diff --git a/include/wlr/render/egl.h b/include/wlr/render/egl.h index 50432887..c810b08e 100644 --- a/include/wlr/render/egl.h +++ b/include/wlr/render/egl.h @@ -16,10 +16,14 @@ #define EGL_NO_X11 #endif +#include <wlr/config.h> + #include <EGL/egl.h> #include <EGL/eglext.h> +#if WLR_HAS_EGLMESAEXT_H // TODO: remove eglmesaext.h #include <EGL/eglmesaext.h> +#endif #include <pixman.h> #include <stdbool.h> #include <wayland-server-core.h> diff --git a/meson.build b/meson.build index 1a160208..a6dad5d6 100644 --- a/meson.build +++ b/meson.build @@ -86,6 +86,7 @@ conf_data.set10('WLR_HAS_X11_BACKEND', false) conf_data.set10('WLR_HAS_XWAYLAND', false) conf_data.set10('WLR_HAS_XCB_ERRORS', false) conf_data.set10('WLR_HAS_XCB_ICCCM', false) +conf_data.set10('WLR_HAS_EGLMESAEXT_H', false) # Clang complains about some zeroed initializer lists (= {0}), even though they # are valid @@ -109,6 +110,10 @@ pixman = dependency('pixman-1') math = cc.find_library('m') rt = cc.find_library('rt') +if cc.has_header('EGL/eglmesaext.h', dependencies: egl) + conf_data.set10('WLR_HAS_EGLMESAEXT_H', true) +endif + wlr_files = [] wlr_deps = [ wayland_server, |