From ce9171f9d8e0e2c2422fdddb198f8d548381b7ea Mon Sep 17 00:00:00 2001 From: Ian Romanick Date: Thu, 3 Feb 2011 17:10:14 -0800 Subject: [PATCH] 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 file changed, 14 insertions(+) diff --git a/src/glsl/linker.cpp b/src/glsl/linker.cpp index c7fb62437db..46cd1950c86 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: -- 2.30.2