From 4fd0cd4a732b568bbe1b1ebeea263e79bbe8b5fd Mon Sep 17 00:00:00 2001 From: wm4 Date: Thu, 19 Nov 2015 21:21:04 +0100 Subject: vo_opengl: support 3D textures on ANGLE Unfortunately, color management can still not work, because no GLES version specified so far support fixed-point 16 bit textures. Maybe we could use integer textures, but these don't support filtering. Using float textures would be another possibility. --- video/out/opengl/common.c | 12 ++++++++++-- video/out/opengl/video.c | 4 +++- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/video/out/opengl/common.c b/video/out/opengl/common.c index 09d47d5e1c..21e749b9f3 100644 --- a/video/out/opengl/common.c +++ b/video/out/opengl/common.c @@ -154,14 +154,13 @@ static const struct gl_functions gl_functions[] = { // GL 2.1+ desktop only (and GLSL 120 shaders) { .ver_core = 210, - .provides = MPGL_CAP_ROW_LENGTH | MPGL_CAP_1D_TEX | MPGL_CAP_3D_TEX, + .provides = MPGL_CAP_ROW_LENGTH | MPGL_CAP_1D_TEX, .functions = (const struct gl_function[]) { DEF_FN(DrawBuffer), DEF_FN(GetTexLevelParameteriv), DEF_FN(MapBuffer), DEF_FN(ReadBuffer), DEF_FN(TexImage1D), - DEF_FN(TexImage3D), DEF_FN(UnmapBuffer), {0} }, @@ -188,6 +187,15 @@ static const struct gl_functions gl_functions[] = { {0} }, }, + { + .ver_core = 210, + .ver_es_core = 300, + .provides = MPGL_CAP_3D_TEX, + .functions = (const struct gl_function[]) { + DEF_FN(TexImage3D), + {0} + }, + }, // Useful for ES 2.0 { .ver_core = 110, diff --git a/video/out/opengl/video.c b/video/out/opengl/video.c index b7a4764c72..c7b945612e 100644 --- a/video/out/opengl/video.c +++ b/video/out/opengl/video.c @@ -644,8 +644,10 @@ void gl_video_set_lut3d(struct gl_video *p, struct lut3d *lut3d) return; } - if (!(gl->mpgl_caps & MPGL_CAP_3D_TEX)) + if (!(gl->mpgl_caps & MPGL_CAP_3D_TEX) || gl->es) { + MP_ERR(p, "16 bit fixed point 3D textures not available.\n"); return; + } if (!p->lut_3d_texture) gl->GenTextures(1, &p->lut_3d_texture); -- cgit v1.2.3