From c56f5f06813e568337c35a3bc04ea05786ea82ca Mon Sep 17 00:00:00 2001 From: wm4 Date: Wed, 14 Sep 2016 10:46:52 +0200 Subject: vo_opengl: wayland: use new EGL context creation code --- video/out/opengl/context_wayland.c | 57 ++++++-------------------------------- wscript | 2 +- 2 files changed, 9 insertions(+), 50 deletions(-) diff --git a/video/out/opengl/context_wayland.c b/video/out/opengl/context_wayland.c index efb6128b92..3864e2887f 100644 --- a/video/out/opengl/context_wayland.c +++ b/video/out/opengl/context_wayland.c @@ -18,6 +18,7 @@ #include "video/out/wayland_common.h" #include "context.h" +#include "egl_helpers.h" static void egl_resize(struct vo_wayland_state *wl) { @@ -62,65 +63,23 @@ static void egl_resize(struct vo_wayland_state *wl) wl->vo->want_redraw = true; } -static int egl_create_context(struct vo_wayland_state *wl, - MPGLContext *ctx, - bool enable_alpha) +static int egl_create_context(struct vo_wayland_state *wl, MPGLContext *ctx, + int flags) { - EGLint major, minor, n; - GL *gl = ctx->gl; const char *eglstr = ""; if (!(wl->egl_context.egl.dpy = eglGetDisplay(wl->display.display))) return -1; - EGLint config_attribs[] = { - EGL_SURFACE_TYPE, EGL_WINDOW_BIT, - EGL_RED_SIZE, 1, - EGL_GREEN_SIZE, 1, - EGL_BLUE_SIZE, 1, - EGL_ALPHA_SIZE, enable_alpha, - EGL_DEPTH_SIZE, 1, - EGL_RENDERABLE_TYPE, EGL_OPENGL_BIT, - EGL_NONE - }; - - /* major and minor here returns the supported EGL version (e.g.: 1.4) */ - if (eglInitialize(wl->egl_context.egl.dpy, &major, &minor) != EGL_TRUE) + if (eglInitialize(wl->egl_context.egl.dpy, NULL, NULL) != EGL_TRUE) return -1; - MP_VERBOSE(wl, "EGL version %d.%d\n", major, minor); - - EGLint context_attribs[] = { - // aka EGL_CONTEXT_MAJOR_VERSION_KHR - EGL_CONTEXT_CLIENT_VERSION, 3, - EGL_NONE - }; - - if (eglBindAPI(EGL_OPENGL_API) != EGL_TRUE) + if (!mpegl_create_context(wl->egl_context.egl.dpy, wl->log, flags, + &wl->egl_context.egl.ctx, + &wl->egl_context.egl.conf)) return -1; - eglChooseConfig(wl->egl_context.egl.dpy, config_attribs, - &wl->egl_context.egl.conf, 1, &n); - - wl->egl_context.egl.ctx = eglCreateContext(wl->egl_context.egl.dpy, - wl->egl_context.egl.conf, - EGL_NO_CONTEXT, - context_attribs); - if (!wl->egl_context.egl.ctx) { - /* fallback to any GL version */ - MP_WARN(wl, "can't create context for requested OpenGL version: " - "fall back to any version available\n"); - context_attribs[0] = EGL_NONE; - wl->egl_context.egl.ctx = eglCreateContext(wl->egl_context.egl.dpy, - wl->egl_context.egl.conf, - EGL_NO_CONTEXT, - context_attribs); - - if (!wl->egl_context.egl.ctx) - return -1; - } - eglMakeCurrent(wl->egl_context.egl.dpy, NULL, NULL, wl->egl_context.egl.ctx); eglstr = eglQueryString(wl->egl_context.egl.dpy, EGL_EXTENSIONS); @@ -237,7 +196,7 @@ static int waylandgl_init(struct MPGLContext *ctx, int flags) if (!vo_wayland_init(ctx->vo)) return -1; - return egl_create_context(ctx->vo->wayland, ctx, !!(flags & VOFLAG_ALPHA)); + return egl_create_context(ctx->vo->wayland, ctx, flags); } const struct mpgl_driver mpgl_driver_wayland = { diff --git a/wscript b/wscript index 00371c7da7..1e97e89980 100644 --- a/wscript +++ b/wscript @@ -846,7 +846,7 @@ video_output_features = [ }, { 'name': 'egl-helpers', 'desc': 'EGL helper functions', - 'deps_any': [ 'egl-x11', 'mali-fbdev', 'rpi' ], + 'deps_any': [ 'egl-x11', 'mali-fbdev', 'rpi', 'gl-wayland' ], 'func': check_true } ] -- cgit v1.2.3