aboutsummaryrefslogtreecommitdiffhomepage
path: root/video/out/opengl
diff options
context:
space:
mode:
authorGravatar wm4 <wm4@nowhere>2016-09-13 20:16:18 +0200
committerGravatar wm4 <wm4@nowhere>2016-09-13 20:16:45 +0200
commit5819a4e301c3babe94ffe0a9eb80e0a512b9b646 (patch)
tree855b547db7fa77735077dc19aa6846bd418657d7 /video/out/opengl
parent060599ac6a0e451ebdda8cbd15473ad04ad7d310 (diff)
vo_opengl: rpi: use new egl context creation helper function
Only for the "new" vo_opengl backend code.
Diffstat (limited to 'video/out/opengl')
-rw-r--r--video/out/opengl/context_rpi.c39
1 files changed, 13 insertions, 26 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)