In preparation for follow-on changes to support frame presentation through EGLDevice+EGLOutput, this change includes the following: -Rename gl_renderer_output_create to gl_renderer_output_window_create -Add <platform_attribs> argument to gl_renderer_create -Rename <attribs> argument for gl_renderer_create() and gl_renderer_output_window_create() to <config_attribs> -Accept non-NULL empty <visual_id> arrays (n_ids == 0) both in gl_renderer_create() and gl_renderer_output_window_create()
Signed-off-by: Miguel A Vico Moya <[email protected]> Reviewed-by: Andy Ritger <[email protected]> --- src/compositor-drm.c | 3 ++- src/compositor-fbdev.c | 3 ++- src/compositor-wayland.c | 3 ++- src/compositor-x11.c | 4 ++-- src/gl-renderer.c | 18 +++++++++--------- src/gl-renderer.h | 7 ++++--- 6 files changed, 21 insertions(+), 17 deletions(-) diff --git a/src/compositor-drm.c b/src/compositor-drm.c index 621414c..b87acd5 100644 --- a/src/compositor-drm.c +++ b/src/compositor-drm.c @@ -1588,6 +1588,7 @@ drm_backend_create_gl_renderer(struct drm_backend *b) if (gl_renderer->create(b->compositor, EGL_PLATFORM_GBM_KHR, (void *)b->gbm, + NULL, gl_renderer->opaque_attribs, format, n_formats) < 0) { @@ -1852,7 +1853,7 @@ drm_output_init_egl(struct drm_output *output, struct drm_backend *b) if (format[1]) n_formats = 2; - if (gl_renderer->output_create(&output->base, + if (gl_renderer->output_window_create(&output->base, (EGLNativeWindowType)output->surface, output->surface, gl_renderer->opaque_attribs, diff --git a/src/compositor-fbdev.c b/src/compositor-fbdev.c index 19c5e3b..04ba026 100644 --- a/src/compositor-fbdev.c +++ b/src/compositor-fbdev.c @@ -526,7 +526,7 @@ fbdev_output_create(struct fbdev_backend *backend, goto out_hw_surface; } else { setenv("HYBRIS_EGLPLATFORM", "wayland", 1); - if (gl_renderer->output_create(&output->base, + if (gl_renderer->output_window_create(&output->base, (EGLNativeWindowType)NULL, NULL, gl_renderer->opaque_attribs, NULL, 0) < 0) { @@ -799,6 +799,7 @@ fbdev_backend_create(struct weston_compositor *compositor, int *argc, char *argv if (gl_renderer->create(compositor, NO_EGL_PLATFORM, EGL_DEFAULT_DISPLAY, + NULL, gl_renderer->opaque_attribs, NULL, 0) < 0) { weston_log("gl_renderer_create failed.\n"); diff --git a/src/compositor-wayland.c b/src/compositor-wayland.c index 8a1878c..3845875 100644 --- a/src/compositor-wayland.c +++ b/src/compositor-wayland.c @@ -657,7 +657,7 @@ wayland_output_init_gl_renderer(struct wayland_output *output) return -1; } - if (gl_renderer->output_create(&output->base, + if (gl_renderer->output_window_create(&output->base, output->gl.egl_window, output->gl.egl_window, gl_renderer->alpha_attribs, @@ -2250,6 +2250,7 @@ wayland_backend_create(struct weston_compositor *compositor, int use_pixman, if (gl_renderer->create(compositor, EGL_PLATFORM_WAYLAND_KHR, b->parent.wl_display, + NULL, gl_renderer->alpha_attribs, NULL, 0) < 0) { diff --git a/src/compositor-x11.c b/src/compositor-x11.c index cca6ab7..bede1b7 100644 --- a/src/compositor-x11.c +++ b/src/compositor-x11.c @@ -932,7 +932,7 @@ x11_backend_create_output(struct x11_backend *b, int x, int y, * but eglCreateWindowSurface takes a Window. */ Window xid = (Window) output->window; - ret = gl_renderer->output_create(&output->base, + ret = gl_renderer->output_window_create(&output->base, (EGLNativeWindowType) output->window, &xid, gl_renderer->opaque_attribs, @@ -1562,7 +1562,7 @@ init_gl_renderer(struct x11_backend *b) return -1; ret = gl_renderer->create(b->compositor, EGL_PLATFORM_X11_KHR, (void *) b->dpy, - gl_renderer->opaque_attribs, NULL, 0); + NULL, gl_renderer->opaque_attribs, NULL, 0); return ret; } diff --git a/src/gl-renderer.c b/src/gl-renderer.c index cb08344..0c55e0b 100644 --- a/src/gl-renderer.c +++ b/src/gl-renderer.c @@ -2493,7 +2493,7 @@ egl_choose_config(struct gl_renderer *gr, const EGLint *attribs, goto out; } - if (!visual_id) + if (!visual_id || n_ids == 0) config_index = 0; for (i = 0; config_index == -1 && i < n_ids; i++) @@ -2547,10 +2547,10 @@ static int gl_renderer_setup(struct weston_compositor *ec, EGLSurface egl_surface); static int -gl_renderer_output_create(struct weston_output *output, +gl_renderer_output_window_create(struct weston_output *output, EGLNativeWindowType window_for_legacy, void *window_for_platform, - const EGLint *attribs, + const EGLint *config_attribs, const EGLint *visual_id, int n_ids) { @@ -2560,7 +2560,7 @@ gl_renderer_output_create(struct weston_output *output, EGLConfig egl_config; int i; - if (egl_choose_config(gr, attribs, visual_id, + if (egl_choose_config(gr, config_attribs, visual_id, n_ids, &egl_config) == -1) { weston_log("failed to choose EGL config for output\n"); return -1; @@ -2846,8 +2846,8 @@ platform_to_extension(EGLenum platform) static int gl_renderer_create(struct weston_compositor *ec, EGLenum platform, - void *native_window, const EGLint *attribs, - const EGLint *visual_id, int n_ids) + void *native_window, const EGLint* platform_attribs, + const EGLint *config_attribs, const EGLint *visual_id, int n_ids) { struct gl_renderer *gr; EGLint major, minor; @@ -2889,7 +2889,7 @@ gl_renderer_create(struct weston_compositor *ec, EGLenum platform, if (get_platform_display && platform) { gr->egl_display = get_platform_display(platform, native_window, - NULL); + platform_attribs); } } @@ -2910,7 +2910,7 @@ gl_renderer_create(struct weston_compositor *ec, EGLenum platform, goto fail_with_error; } - if (egl_choose_config(gr, attribs, visual_id, + if (egl_choose_config(gr, config_attribs, visual_id, n_ids, &gr->egl_config) < 0) { weston_log("failed to choose EGL config\n"); goto fail_terminate; @@ -3121,7 +3121,7 @@ WL_EXPORT struct gl_renderer_interface gl_renderer_interface = { .create = gl_renderer_create, .display = gl_renderer_display, - .output_create = gl_renderer_output_create, + .output_window_create = gl_renderer_output_window_create, .output_destroy = gl_renderer_output_destroy, .output_surface = gl_renderer_output_surface, .output_set_border = gl_renderer_output_set_border, diff --git a/src/gl-renderer.h b/src/gl-renderer.h index 71f6b46..af8dd26 100644 --- a/src/gl-renderer.h +++ b/src/gl-renderer.h @@ -78,16 +78,17 @@ struct gl_renderer_interface { int (*create)(struct weston_compositor *ec, EGLenum platform, void *native_window, - const EGLint *attribs, + const EGLint *platform_attribs, + const EGLint *config_attribs, const EGLint *visual_id, const int n_ids); EGLDisplay (*display)(struct weston_compositor *ec); - int (*output_create)(struct weston_output *output, + int (*output_window_create)(struct weston_output *output, EGLNativeWindowType window_for_legacy, void *window_for_platform, - const EGLint *attribs, + const EGLint *config_attribs, const EGLint *visual_id, const int n_ids); -- 2.7.1 _______________________________________________ wayland-devel mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/wayland-devel
