From 5b64e2fc31ede4777343e06087d7b921b28be674 Mon Sep 17 00:00:00 2001 From: Simon Ser Date: Sat, 26 Nov 2022 20:13:31 +0100 Subject: [PATCH] Make GLES2 optional --- meson.build | 33 +++++++++++++++++++-------------- sway/desktop/render.c | 9 +++++++-- 2 files changed, 26 insertions(+), 16 deletions(-) diff --git a/meson.build b/meson.build index 7e26ae2a..5468064f 100644 --- a/meson.build +++ b/meson.build @@ -43,6 +43,24 @@ subproject( required: false, version: wlroots_version, ) +wlroots = dependency('wlroots', version: wlroots_version) +wlroots_features = { + 'xwayland': false, + 'libinput_backend': false, + 'gles2_renderer': false, + 'session': false, +} +foreach name, _ : wlroots_features + var_name = 'have_' + name.underscorify() + have = wlroots.get_variable(pkgconfig: var_name, internal: var_name) == 'true' + wlroots_features += { name: have } +endforeach + +if get_option('xwayland').enabled() and not wlroots_features['xwayland'] + error('Cannot enable Xwayland in sway: wlroots has been built without Xwayland support') +endif + +null_dep = dependency('', required: false) jsonc = dependency('json-c', version: '>=0.13') pcre2 = dependency('libpcre2-8') @@ -50,14 +68,13 @@ wayland_server = dependency('wayland-server', version: '>=1.21.0') wayland_client = dependency('wayland-client') wayland_cursor = dependency('wayland-cursor') wayland_protos = dependency('wayland-protocols', version: '>=1.24') -wlroots = dependency('wlroots', version: wlroots_version) xkbcommon = dependency('xkbcommon') cairo = dependency('cairo') pango = dependency('pango') pangocairo = dependency('pangocairo') gdk_pixbuf = dependency('gdk-pixbuf-2.0', required: get_option('gdk-pixbuf')) pixman = dependency('pixman-1') -glesv2 = dependency('glesv2') +glesv2 = wlroots_features['gles2_renderer'] ? dependency('glesv2') : null_dep libevdev = dependency('libevdev') libinput = dependency('libinput', version: '>=1.21.0') xcb = dependency('xcb', required: get_option('xwayland')) @@ -71,18 +88,6 @@ rt = cc.find_library('rt') xcb_icccm = dependency('xcb-icccm', required: get_option('xwayland')) threads = dependency('threads') # for pthread_setschedparam -wlroots_features = { - 'xwayland': false, -} -foreach name, _ : wlroots_features - var_name = 'have_' + name.underscorify() - have = wlroots.get_variable(pkgconfig: var_name, internal: var_name) == 'true' - wlroots_features += { name: have } -endforeach - -if get_option('xwayland').enabled() and not wlroots_features['xwayland'] - error('Cannot enable Xwayland in sway: wlroots has been built without Xwayland support') -endif have_xwayland = xcb.found() and wlroots_features['xwayland'] if get_option('sd-bus-provider') == 'auto' diff --git a/sway/desktop/render.c b/sway/desktop/render.c index efa3a0d9..ea9c37d9 100644 --- a/sway/desktop/render.c +++ b/sway/desktop/render.c @@ -1,11 +1,10 @@ #define _POSIX_C_SOURCE 200809L #include -#include #include #include #include #include -#include +#include #include #include #include @@ -28,6 +27,10 @@ #include "sway/tree/view.h" #include "sway/tree/workspace.h" +#if WLR_HAS_GLES2_RENDERER +#include +#endif + struct render_data { pixman_region32_t *damage; float alpha; @@ -74,6 +77,7 @@ static void scissor_output(struct wlr_output *wlr_output, static void set_scale_filter(struct wlr_output *wlr_output, struct wlr_texture *texture, enum scale_filter_mode scale_filter) { +#if WLR_HAS_GLES2_RENDERER if (!wlr_texture_is_gles2(texture)) { return; } @@ -94,6 +98,7 @@ static void set_scale_filter(struct wlr_output *wlr_output, case SCALE_FILTER_SMART: assert(false); // unreachable } +#endif } static void render_texture(struct wlr_output *wlr_output,