summaryrefslogtreecommitdiffstats
path: root/video/out/opengl/hwdec_d3d11egl.c
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2016-05-05 13:38:08 +0200
committerwm4 <wm4@nowhere>2016-05-05 13:38:08 +0200
commitf56555b5144069d0a8ac81d407abfa0c6be30c2e (patch)
tree90724b09871cac425458de4a80f78ea3485366a5 /video/out/opengl/hwdec_d3d11egl.c
parente5e1088c922ab6e767d7731bf9fe6044cb4071c8 (diff)
downloadmpv-f56555b5144069d0a8ac81d407abfa0c6be30c2e.tar.bz2
mpv-f56555b5144069d0a8ac81d407abfa0c6be30c2e.tar.xz
vo_opengl: EGL: fix hwdec probing
If ANGLE was probed before (but rejected), the ANGLE API can remain "initialized", and eglGetCurrentDisplay() will return a non-NULL EGLDisplay. Then if a native GL context is used, the ANGLE/EGL API will then (apparently) keep working alongside native OpenGL API. Since GL objects are just numbers, they'll simply fail to interact, and OpenGL will get invalid textures. For some reason this will result in black textures. With VAAPI-EGL, something similar could happen in theory, but didn't in practice.
Diffstat (limited to 'video/out/opengl/hwdec_d3d11egl.c')
-rw-r--r--video/out/opengl/hwdec_d3d11egl.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/video/out/opengl/hwdec_d3d11egl.c b/video/out/opengl/hwdec_d3d11egl.c
index 32fb42a692..de872d1396 100644
--- a/video/out/opengl/hwdec_d3d11egl.c
+++ b/video/out/opengl/hwdec_d3d11egl.c
@@ -116,6 +116,9 @@ static int create(struct gl_hwdec *hw)
if (!egl_display)
return -1;
+ if (!eglGetCurrentContext())
+ return -1;
+
const char *exts = eglQueryString(egl_display, EGL_EXTENSIONS);
if (!exts || !strstr(exts, "EGL_ANGLE_d3d_share_handle_client_buffer") ||
!strstr(exts, "EGL_EXT_device_query"))