diff options
author | wm4 <wm4@nowhere> | 2016-09-13 20:16:18 +0200 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2016-09-13 20:16:45 +0200 |
commit | 5819a4e301c3babe94ffe0a9eb80e0a512b9b646 (patch) | |
tree | 855b547db7fa77735077dc19aa6846bd418657d7 | |
parent | 060599ac6a0e451ebdda8cbd15473ad04ad7d310 (diff) | |
download | mpv-5819a4e301c3babe94ffe0a9eb80e0a512b9b646.tar.bz2 mpv-5819a4e301c3babe94ffe0a9eb80e0a512b9b646.tar.xz |
vo_opengl: rpi: use new egl context creation helper function
Only for the "new" vo_opengl backend code.
-rw-r--r-- | video/out/opengl/context_rpi.c | 39 | ||||
-rw-r--r-- | wscript | 2 |
2 files changed, 14 insertions, 27 deletions
diff --git a/video/out/opengl/context_rpi.c b/video/out/opengl/context_rpi.c index c51a3f1319..ee2bacb939 100644 --- a/video/out/opengl/context_rpi.c +++ b/video/out/opengl/context_rpi.c @@ -22,6 +22,7 @@ #include "osdep/atomic.h" #include "video/out/win_state.h" #include "context.h" +#include "egl_helpers.h" #include "context_rpi.h" @@ -140,6 +141,15 @@ void mp_egl_rpi_destroy(struct mp_egl_rpi *p) p->gl = NULL; } +static void mp_egl_rpi_destroy_base(struct mp_egl_rpi *p) +{ + if (p->egl_context) + eglDestroyContext(p->egl_display, p->egl_context); + p->egl_context = EGL_NO_CONTEXT; + eglReleaseThread(); + p->egl_display = EGL_NO_DISPLAY; +} + static int mp_egl_rpi_init_base(struct mp_egl_rpi *p) { p->egl_display = eglGetDisplay(EGL_DEFAULT_DISPLAY); @@ -148,40 +158,17 @@ static int mp_egl_rpi_init_base(struct mp_egl_rpi *p) goto fail; } - eglBindAPI(EGL_OPENGL_ES_API); - - p->egl_config = select_fb_config_egl(p); - if (!p->egl_config) - goto fail; - - EGLint context_attributes[] = { - EGL_CONTEXT_CLIENT_VERSION, 2, - EGL_NONE - }; - p->egl_context = eglCreateContext(p->egl_display, p->egl_config, - EGL_NO_CONTEXT, context_attributes); - - if (p->egl_context == EGL_NO_CONTEXT) { - MP_FATAL(p, "Could not create EGL context!\n"); + if (!mpegl_create_context(p->egl_display, p->log, 0, &p->egl_context, + &p->egl_config)) goto fail; - } return 0; fail: - mp_egl_rpi_destroy(p); + mp_egl_rpi_destroy_base(p); return -1; } -static void mp_egl_rpi_destroy_base(struct mp_egl_rpi *p) -{ - if (p->egl_context) - eglDestroyContext(p->egl_display, p->egl_context); - p->egl_context = EGL_NO_CONTEXT; - eglReleaseThread(); - p->egl_display = EGL_NO_DISPLAY; -} - static int mp_egl_rpi_init_window(struct mp_egl_rpi *p, DISPMANX_ELEMENT_HANDLE_T window, int w, int h) @@ -846,7 +846,7 @@ video_output_features = [ }, { 'name': 'egl-helpers', 'desc': 'EGL helper functions', - 'deps_any': [ 'egl-x11', 'mali-fbdev' ], + 'deps_any': [ 'egl-x11', 'mali-fbdev', 'rpi' ], 'func': check_true } ] |