diff options
author | wm4 <wm4@nowhere> | 2015-11-19 21:21:04 +0100 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2015-11-19 21:21:04 +0100 |
commit | 4fd0cd4a732b568bbe1b1ebeea263e79bbe8b5fd (patch) | |
tree | 0c0628e5e2504fc3ea627e78b5a0e777602d6e02 /video/out | |
parent | 6df3fa2ec1ee0e8a36bdad4e45107c01681db730 (diff) | |
download | mpv-4fd0cd4a732b568bbe1b1ebeea263e79bbe8b5fd.tar.bz2 mpv-4fd0cd4a732b568bbe1b1ebeea263e79bbe8b5fd.tar.xz |
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.
Diffstat (limited to 'video/out')
-rw-r--r-- | video/out/opengl/common.c | 12 | ||||
-rw-r--r-- | 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); |