Mesa (master): Linking fails when not writing gl_Position.

Tapani Pälli tpalli at kemper.freedesktop.org
Tue Sep 9 07:40:49 UTC 2014


Module: Mesa
Branch: master
Commit: 78c9201a5b57ed635b7161fd638cf6814e103e1b
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=78c9201a5b57ed635b7161fd638cf6814e103e1b

Author: Kalyan Kondapally <kalyan.kondapally at intel.com>
Date:   Mon Sep  8 11:10:42 2014 +0300

Linking fails when not writing gl_Position.

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 <kalyan.kondapally at intel.com>
Reviewed-by: Tapani Pälli <tapani.palli at intel.com>
Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>
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 57be493..e9cf550 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()) {




More information about the mesa-commit mailing list