From e07be58dc46d2ea79bb27db352366caafec97218 Mon Sep 17 00:00:00 2001 From: Daniel Stone Date: Thu, 2 Feb 2023 21:34:17 +0000 Subject: [PATCH] gl-renderer: Use highest precision for vertex shaders Whilst GLSL requires highp for the vertex shader stage, highp is optional for the fragment shader. Make sure that we work in highp by default during the vertex shader stage, using either highp or mediump for the texcoord varying according to what the fragment shader supports. Signed-off-by: Daniel Stone --- libweston/renderer-gl/fragment.glsl | 2 +- libweston/renderer-gl/vertex.glsl | 13 ++++++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/libweston/renderer-gl/fragment.glsl b/libweston/renderer-gl/fragment.glsl index d431096b9..1ea95b2c1 100644 --- a/libweston/renderer-gl/fragment.glsl +++ b/libweston/renderer-gl/fragment.glsl @@ -119,7 +119,7 @@ uniform samplerExternalOES tex; uniform sampler2D tex; #endif -varying vec2 v_texcoord; +varying HIGHPRECISION vec2 v_texcoord; uniform sampler2D tex1; uniform sampler2D tex2; uniform float view_alpha; diff --git a/libweston/renderer-gl/vertex.glsl b/libweston/renderer-gl/vertex.glsl index 03282e331..8b8019c3c 100644 --- a/libweston/renderer-gl/vertex.glsl +++ b/libweston/renderer-gl/vertex.glsl @@ -25,10 +25,21 @@ * SOFTWARE. */ +/* Always use high-precision for vertex calculations */ +precision highp float; + +#ifdef GL_FRAGMENT_PRECISION_HIGH +#define FRAG_PRECISION highp +#else +#define FRAG_PRECISION mediump +#endif + uniform mat4 proj; attribute vec2 position; attribute vec2 texcoord; -varying vec2 v_texcoord; + +/* Match the varying precision to the fragment shader */ +varying FRAG_PRECISION vec2 v_texcoord; void main() {