From 514166242763699633147e7aead31fc7ae16372e Mon Sep 17 00:00:00 2001 From: Stephen Salerno Date: Tue, 2 Jun 2020 11:27:32 -0500 Subject: vo_gpu: use highp float if available for GLES Using mediump float on GLES causes problems with kernel resampling, PQ HDR, and possibly others. The issues are fixed by using highp, which is available when GL_FRAGMENT_PRECISION_HIGH is defined. --- video/out/gpu/shader_cache.c | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'video') diff --git a/video/out/gpu/shader_cache.c b/video/out/gpu/shader_cache.c index fb80e1bbff..5e96de9c99 100644 --- a/video/out/gpu/shader_cache.c +++ b/video/out/gpu/shader_cache.c @@ -761,7 +761,12 @@ static void gl_sc_generate(struct gl_shader_cache *sc, for (int n = 0; n < sc->num_exts; n++) ADD(header, "#extension %s : enable\n", sc->exts[n]); if (glsl_es) { + ADD(header, "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"); + ADD(header, "precision highp float;\n"); + ADD(header, "#else\n"); ADD(header, "precision mediump float;\n"); + ADD(header, "#endif\n"); + ADD(header, "precision mediump sampler2D;\n"); if (sc->ra->caps & RA_CAP_TEX_3D) ADD(header, "precision mediump sampler3D;\n"); -- cgit v1.2.3