From 09550032b7e897755be30c6339f97489b07570ff Mon Sep 17 00:00:00 2001 From: emersion Date: Sun, 4 Nov 2018 09:23:57 +0100 Subject: render: correctly set EGL_RENDERABLE_TYPE This should be set to EGL_OPENGL_ES2_BIT. Also fixes EGL config attributes in the headless and X11 backends. --- render/wlr_renderer.c | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) (limited to 'render/wlr_renderer.c') diff --git a/render/wlr_renderer.c b/render/wlr_renderer.c index 10dc6db2..ca1a337d 100644 --- a/render/wlr_renderer.c +++ b/render/wlr_renderer.c @@ -198,7 +198,30 @@ void wlr_renderer_init_wl_display(struct wlr_renderer *r, struct wlr_renderer *wlr_renderer_autocreate(struct wlr_egl *egl, EGLenum platform, void *remote_display, EGLint *config_attribs, EGLint visual_id) { - if (!wlr_egl_init(egl, platform, remote_display, config_attribs, visual_id)) { + // Append GLES2-specific bits to the provided EGL config attributes + EGLint gles2_config_attribs[] = { + EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT, + EGL_NONE, + }; + + size_t config_attribs_len = 0; // not including terminating EGL_NONE + while (config_attribs != NULL && + config_attribs[config_attribs_len] != EGL_NONE) { + ++config_attribs_len; + } + + size_t all_config_attribs_len = config_attribs_len + + sizeof(gles2_config_attribs) / sizeof(gles2_config_attribs[0]); + EGLint all_config_attribs[all_config_attribs_len]; + if (config_attribs_len > 0) { + memcpy(all_config_attribs, config_attribs, + config_attribs_len * sizeof(EGLint)); + } + memcpy(&all_config_attribs[config_attribs_len], gles2_config_attribs, + sizeof(gles2_config_attribs)); + + if (!wlr_egl_init(egl, platform, remote_display, all_config_attribs, + visual_id)) { wlr_log(WLR_ERROR, "Could not initialize EGL"); return NULL; } -- cgit v1.2.3