Mesa (7.10): linker: Generate link errors when ES shaders are missing stages

Ian Romanick idr at kemper.freedesktop.org
Mon Feb 21 22:41:01 UTC 2011


Module: Mesa
Branch: 7.10
Commit: 6b7b2af43a5d6784a62b6da3f6db52d1190ce55b
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=6b7b2af43a5d6784a62b6da3f6db52d1190ce55b

Author: Ian Romanick <ian.d.romanick at intel.com>
Date:   Thu Feb  3 17:10:14 2011 -0800

linker: Generate link errors when ES shaders are missing stages

ES requires that a vertex shader and a fragment shader be present.

Fixes bugzilla #32214.
(cherry picked from commit ce9171f9d8e0e2c2422fdddb198f8d548381b7ea)

---

 src/glsl/linker.cpp |   14 ++++++++++++++
 1 files changed, 14 insertions(+), 0 deletions(-)

diff --git a/src/glsl/linker.cpp b/src/glsl/linker.cpp
index e296507..61795d0 100644
--- a/src/glsl/linker.cpp
+++ b/src/glsl/linker.cpp
@@ -1655,6 +1655,20 @@ link_shaders(struct gl_context *ctx, struct gl_shader_program *prog)
       demote_shader_inputs_and_outputs(sh, ir_var_in);
    }
 
+   /* OpenGL ES requires that a vertex shader and a fragment shader both be
+    * present in a linked program.  By checking for use of shading language
+    * version 1.00, we also catch the GL_ARB_ES2_compatibility case.
+    */
+   if (ctx->API == API_OPENGLES2 || prog->Version == 100) {
+      if (prog->_LinkedShaders[MESA_SHADER_VERTEX] == NULL) {
+	 linker_error_printf(prog, "program lacks a vertex shader\n");
+	 prog->LinkStatus = false;
+      } else if (prog->_LinkedShaders[MESA_SHADER_FRAGMENT] == NULL) {
+	 linker_error_printf(prog, "program lacks a fragment shader\n");
+	 prog->LinkStatus = false;
+      }
+   }
+
    /* FINISHME: Assign fragment shader output locations. */
 
 done:




More information about the mesa-commit mailing list