From 76ed2255ef8da963b1d4a9a121e24a094dfead20 Mon Sep 17 00:00:00 2001 From: Simon Ser Date: Sat, 9 Jan 2021 11:37:21 +0100 Subject: [PATCH] render/egl: remove support for EGL_NATIVE_VISUAL_ID Nobody uses it anymore. --- examples/idle-inhibit.c | 2 +- examples/input-inhibitor.c | 2 +- examples/keyboard-shortcuts-inhibit.c | 2 +- examples/layer-shell.c | 2 +- examples/pointer-constraints.c | 2 +- examples/relative-pointer-unstable-v1.c | 2 +- examples/text-input.c | 2 +- examples/toplevel-decoration.c | 2 +- include/wlr/render/egl.h | 2 +- render/egl.c | 47 +++++-------------------- render/wlr_renderer.c | 2 +- 11 files changed, 19 insertions(+), 48 deletions(-) diff --git a/examples/idle-inhibit.c b/examples/idle-inhibit.c index 829da851..44a7f5b5 100644 --- a/examples/idle-inhibit.c +++ b/examples/idle-inhibit.c @@ -193,7 +193,7 @@ int main(int argc, char **argv) { } EGLint attribs[] = { EGL_NONE }; - wlr_egl_init(&egl, EGL_PLATFORM_WAYLAND_EXT, display, attribs, 0); + wlr_egl_init(&egl, EGL_PLATFORM_WAYLAND_EXT, display, attribs); struct wl_surface *surface = wl_compositor_create_surface(compositor); struct xdg_surface *xdg_surface = diff --git a/examples/input-inhibitor.c b/examples/input-inhibitor.c index 06aa4142..80be3916 100644 --- a/examples/input-inhibitor.c +++ b/examples/input-inhibitor.c @@ -158,7 +158,7 @@ int main(int argc, char **argv) { assert(input_inhibitor); EGLint attribs[] = { EGL_NONE }; - wlr_egl_init(&egl, EGL_PLATFORM_WAYLAND_EXT, display, attribs, 0); + wlr_egl_init(&egl, EGL_PLATFORM_WAYLAND_EXT, display, attribs); struct wl_surface *surface = wl_compositor_create_surface(compositor); assert(surface); diff --git a/examples/keyboard-shortcuts-inhibit.c b/examples/keyboard-shortcuts-inhibit.c index 8551973c..1b2d7aab 100644 --- a/examples/keyboard-shortcuts-inhibit.c +++ b/examples/keyboard-shortcuts-inhibit.c @@ -225,7 +225,7 @@ int main(int argc, char **argv) { } EGLint attribs[] = { EGL_NONE }; - wlr_egl_init(&egl, EGL_PLATFORM_WAYLAND_EXT, display, attribs, 0); + wlr_egl_init(&egl, EGL_PLATFORM_WAYLAND_EXT, display, attribs); struct wl_surface *surface = wl_compositor_create_surface(compositor); struct xdg_surface *xdg_surface = diff --git a/examples/layer-shell.c b/examples/layer-shell.c index 6975bf41..6d1cb78c 100644 --- a/examples/layer-shell.c +++ b/examples/layer-shell.c @@ -611,7 +611,7 @@ int main(int argc, char **argv) { assert(cursor_surface); EGLint attribs[] = { EGL_ALPHA_SIZE, 8, EGL_NONE }; - wlr_egl_init(&egl, EGL_PLATFORM_WAYLAND_EXT, display, attribs, 0); + wlr_egl_init(&egl, EGL_PLATFORM_WAYLAND_EXT, display, attribs); wl_surface = wl_compositor_create_surface(compositor); assert(wl_surface); diff --git a/examples/pointer-constraints.c b/examples/pointer-constraints.c index 19b28e98..e020c5e7 100644 --- a/examples/pointer-constraints.c +++ b/examples/pointer-constraints.c @@ -212,7 +212,7 @@ int main(int argc, char **argv) { regions[REGION_TYPE_JOINT] = joint_region; EGLint attribs[] = { EGL_NONE }; - wlr_egl_init(&egl, EGL_PLATFORM_WAYLAND_EXT, display, attribs, 0); + wlr_egl_init(&egl, EGL_PLATFORM_WAYLAND_EXT, display, attribs); struct wl_surface *surface = wl_compositor_create_surface(compositor); struct xdg_surface *xdg_surface = diff --git a/examples/relative-pointer-unstable-v1.c b/examples/relative-pointer-unstable-v1.c index b6e56f84..de7919bd 100644 --- a/examples/relative-pointer-unstable-v1.c +++ b/examples/relative-pointer-unstable-v1.c @@ -444,7 +444,7 @@ int main(int argc, char **argv) { e->width = e->height = 512; EGLint attribs[] = { EGL_NONE }; - wlr_egl_init(e->egl, EGL_PLATFORM_WAYLAND_EXT, display, attribs, 0); + wlr_egl_init(e->egl, EGL_PLATFORM_WAYLAND_EXT, display, attribs); /* Create the surface and xdg_toplevels, and set listeners */ diff --git a/examples/text-input.c b/examples/text-input.c index cc89cbf4..8559810f 100644 --- a/examples/text-input.c +++ b/examples/text-input.c @@ -364,7 +364,7 @@ int main(int argc, char **argv) { zwp_text_input_v3_add_listener(text_input, &text_input_listener, NULL); EGLint attribs[] = { EGL_NONE }; - wlr_egl_init(&egl, EGL_PLATFORM_WAYLAND_EXT, display, attribs, 0); + wlr_egl_init(&egl, EGL_PLATFORM_WAYLAND_EXT, display, attribs); struct wl_surface *surface = wl_compositor_create_surface(compositor); struct xdg_surface *xdg_surface = diff --git a/examples/toplevel-decoration.c b/examples/toplevel-decoration.c index 4f309feb..f10ac742 100644 --- a/examples/toplevel-decoration.c +++ b/examples/toplevel-decoration.c @@ -219,7 +219,7 @@ int main(int argc, char **argv) { } EGLint attribs[] = { EGL_NONE }; - wlr_egl_init(&egl, EGL_PLATFORM_WAYLAND_EXT, display, attribs, 0); + wlr_egl_init(&egl, EGL_PLATFORM_WAYLAND_EXT, display, attribs); struct wl_surface *surface = wl_compositor_create_surface(compositor); struct xdg_surface *xdg_surface = diff --git a/include/wlr/render/egl.h b/include/wlr/render/egl.h index cbcf37ab..3fa47cc9 100644 --- a/include/wlr/render/egl.h +++ b/include/wlr/render/egl.h @@ -89,7 +89,7 @@ struct wlr_egl { * If config_attribs is NULL, the EGL config is not created. */ bool wlr_egl_init(struct wlr_egl *egl, EGLenum platform, void *remote_display, - const EGLint *config_attribs, EGLint visual_id); + const EGLint *config_attribs); /** * Frees all related EGL resources, makes the context not-current and diff --git a/render/egl.c b/render/egl.c index 8914801b..22feade3 100644 --- a/render/egl.c +++ b/render/egl.c @@ -10,41 +10,6 @@ #include #include -static bool egl_get_config(EGLDisplay disp, const EGLint *attribs, - EGLConfig *out, EGLint visual_id) { - EGLint count = 0, matched = 0, ret; - - ret = eglGetConfigs(disp, NULL, 0, &count); - if (ret == EGL_FALSE || count == 0) { - wlr_log(WLR_ERROR, "eglGetConfigs returned no configs"); - return false; - } - - EGLConfig configs[count]; - - ret = eglChooseConfig(disp, attribs, configs, count, &matched); - if (ret == EGL_FALSE) { - wlr_log(WLR_ERROR, "eglChooseConfig failed"); - return false; - } - - for (int i = 0; i < matched; ++i) { - EGLint visual; - if (!eglGetConfigAttrib(disp, configs[i], - EGL_NATIVE_VISUAL_ID, &visual)) { - continue; - } - - if (!visual_id || visual == visual_id) { - *out = configs[i]; - return true; - } - } - - wlr_log(WLR_ERROR, "no valid egl config found"); - return false; -} - static enum wlr_log_importance egl_log_importance_to_wlr(EGLint type) { switch (type) { case EGL_DEBUG_MSG_CRITICAL_KHR: return WLR_ERROR; @@ -185,7 +150,7 @@ out: } bool wlr_egl_init(struct wlr_egl *egl, EGLenum platform, void *remote_display, - const EGLint *config_attribs, EGLint visual_id) { + const EGLint *config_attribs) { const char *client_exts_str = eglQueryString(EGL_NO_DISPLAY, EGL_EXTENSIONS); if (client_exts_str == NULL) { if (eglGetError() == EGL_BAD_DISPLAY) { @@ -321,8 +286,14 @@ bool wlr_egl_init(struct wlr_egl *egl, EGLenum platform, void *remote_display, } if (config_attribs != NULL) { - if (!egl_get_config(egl->display, config_attribs, &egl->config, visual_id)) { - wlr_log(WLR_ERROR, "Failed to get EGL config"); + EGLint matched = 0; + if (!eglChooseConfig(egl->display, config_attribs, &egl->config, 1, + &matched)) { + wlr_log(WLR_ERROR, "eglChooseConfig failed"); + goto error; + } + if (matched == 0) { + wlr_log(WLR_ERROR, "Failed to match an EGL config"); goto error; } } else { diff --git a/render/wlr_renderer.c b/render/wlr_renderer.c index 69cc0363..b721036f 100644 --- a/render/wlr_renderer.c +++ b/render/wlr_renderer.c @@ -255,7 +255,7 @@ struct wlr_renderer *wlr_renderer_autocreate(EGLenum platform, return NULL; } - if (!wlr_egl_init(egl, platform, remote_display, NULL, 0)) { + if (!wlr_egl_init(egl, platform, remote_display, NULL)) { wlr_log(WLR_ERROR, "Could not initialize EGL"); return NULL; }