From 78c9201a5b57ed635b7161fd638cf6814e103e1b Mon Sep 17 00:00:00 2001 From: Kalyan Kondapally Date: Mon, 8 Sep 2014 11:10:42 +0300 Subject: Linking fails when not writing gl_Position. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit According to GLSL-ES Spec(i.e. 1.0, 3.0), gl_Position value is undefined after the vertex processing stage if we don't write gl_Position. However, GLSL 1.10 Spec mentions that writing to gl_Position is mandatory. In case of GLSL-ES, it's not an error and atleast the linking should pass. Currently, Mesa throws an linker error in case we dont write to gl_position and Version is less then 140(GLSL) and 300(GLSL-ES). This patch changes it so that we don't report an error in case of GLSL-ES. Signed-off-by: Kalyan Kondapally Reviewed-by: Tapani Pälli Reviewed-by: Kenneth Graunke Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=83380 --- src/glsl/linker.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/glsl/linker.cpp b/src/glsl/linker.cpp index 57be4931d78..e9cf5503a27 100644 --- a/src/glsl/linker.cpp +++ b/src/glsl/linker.cpp @@ -559,10 +559,10 @@ validate_vertex_shader_executable(struct gl_shader_program *prog, * vertex processing has occurred. Its value is undefined if * the vertex shader executable does not write gl_Position." * - * GLSL ES 3.00 is similar to GLSL 1.40--failing to write to gl_Position is - * not an error. + * All GLSL ES Versions are similar to GLSL 1.40--failing to write to + * gl_Position is not an error. */ - if (prog->Version < (prog->IsES ? 300 : 140)) { + if (!prog->IsES && prog->Version < 140) { find_assignment_visitor find("gl_Position"); find.run(shader->ir); if (!find.variable_found()) { -- cgit v1.2.3