Mesa (master): linker: Generate link errors when ES shaders are missing stages
Ian Romanick
idr at kemper.freedesktop.org
Fri Feb 4 20:10:09 UTC 2011
Module: Mesa
Branch: master
Commit: ce9171f9d8e0e2c2422fdddb198f8d548381b7ea
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=ce9171f9d8e0e2c2422fdddb198f8d548381b7ea
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.
---
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 c7fb624..46cd195 100644
--- a/src/glsl/linker.cpp
+++ b/src/glsl/linker.cpp
@@ -1682,6 +1682,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