summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2015-11-19 21:21:04 +0100
committerwm4 <wm4@nowhere>2015-11-19 21:21:04 +0100
commit4fd0cd4a732b568bbe1b1ebeea263e79bbe8b5fd (patch)
tree0c0628e5e2504fc3ea627e78b5a0e777602d6e02
parent6df3fa2ec1ee0e8a36bdad4e45107c01681db730 (diff)
downloadmpv-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.
-rw-r--r--video/out/opengl/common.c12
-rw-r--r--video/out/opengl/video.c4
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);