summaryrefslogtreecommitdiffstats
path: root/video/out/opengl/video.c
diff options
context:
space:
mode:
authorJames Ross-Gowan <rossymiles@gmail.com>2016-05-27 22:56:56 +1000
committerJames Ross-Gowan <rossymiles@gmail.com>2016-05-27 23:02:26 +1000
commit84fba1df21577280078ab1db339d36019a4e419a (patch)
treeb60617342f99076745142d0b7d2998c3f5e60460 /video/out/opengl/video.c
parentca87e623b5651d5c94274bdede86768a5562dd56 (diff)
downloadmpv-84fba1df21577280078ab1db339d36019a4e419a.tar.bz2
mpv-84fba1df21577280078ab1db339d36019a4e419a.tar.xz
vo_opengl: enable color management on GLES
This requires the GL_EXT_texture_norm16 extension and works in ANGLE. A default precision had to be set for sampler3Ds, otherwise the shaders would fail to compile.
Diffstat (limited to 'video/out/opengl/video.c')
-rw-r--r--video/out/opengl/video.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/video/out/opengl/video.c b/video/out/opengl/video.c
index 8859b34ed8..130f569295 100644
--- a/video/out/opengl/video.c
+++ b/video/out/opengl/video.c
@@ -3027,6 +3027,7 @@ static void check_gl_features(struct gl_video *p)
bool have_3d_tex = gl->mpgl_caps & MPGL_CAP_3D_TEX;
bool have_mglsl = gl->glsl_version >= 130; // modern GLSL (1st class arrays etc.)
bool have_texrg = gl->mpgl_caps & MPGL_CAP_TEX_RG;
+ bool have_tex16 = !gl->es || (gl->mpgl_caps & MPGL_CAP_EXT16);
const GLint auto_fbo_fmts[] = {GL_RGBA16, GL_RGBA16F, GL_RGB10_A2,
GL_RGBA8, 0};
@@ -3106,9 +3107,9 @@ static void check_gl_features(struct gl_video *p)
// GLES3 doesn't provide filtered 16 bit integer textures
// GLES2 doesn't even provide 3D textures
- if (p->use_lut_3d && (!have_3d_tex || gl->es)) {
+ if (p->use_lut_3d && (!have_3d_tex || !have_tex16)) {
p->use_lut_3d = false;
- MP_WARN(p, "Disabling color management (GLES unsupported).\n");
+ MP_WARN(p, "Disabling color management (no RGB16 3D textures).\n");
}
int use_cms = p->opts.target_prim != MP_CSP_PRIM_AUTO ||