diff --git a/libvo/vo_opengl.c b/libvo/vo_opengl.c index 0390955b5b..7b5289838f 100644 --- a/libvo/vo_opengl.c +++ b/libvo/vo_opengl.c @@ -1455,6 +1455,10 @@ static void check_gl_features(struct gl_priv *p) bool have_fbo = gl->mpgl_caps & MPGL_CAP_FB; bool have_srgb = gl->mpgl_caps & MPGL_CAP_SRGB_TEX; + // srgb_compand() not available + if (gl->glsl_version < 130) + have_srgb = false; + char *disabled[10]; int n_disabled = 0; @@ -1488,6 +1492,10 @@ static void check_gl_features(struct gl_priv *p) p->use_lut_3d = false; disabled[n_disabled++] = "color management (FBO)"; } + if (!have_srgb && p->use_lut_3d) { + p->use_lut_3d = false; + disabled[n_disabled++] = "color management (sRGB)"; + } if (!have_fbo) { p->use_scale_sep = false; diff --git a/libvo/vo_opengl_shaders.glsl b/libvo/vo_opengl_shaders.glsl index 5dd67bbd52..1f302889e4 100644 --- a/libvo/vo_opengl_shaders.glsl +++ b/libvo/vo_opengl_shaders.glsl @@ -37,11 +37,14 @@ # define in varying #endif +// Earlier GLSL doesn't support mix() with bvec +#if __VERSION__ >= 130 vec3 srgb_compand(vec3 v) { return mix(1.055 * pow(v, vec3(1.0/2.4)) - vec3(0.055), v * 12.92, lessThanEqual(v, vec3(0.0031308))); } +#endif #!section vertex_all