From: Tapani Pälli Date: Thu, 3 Sep 2015 11:20:46 +0000 (+0300) Subject: glsl: error on linking if no shaders are attached to program X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=69678953d1740a5d27da4f9dd522f68d5a95d223;p=mesa.git glsl: error on linking if no shaders are attached to program This applies to OpenGL Core >= 4.5 and OpenGL ES >= 3.1. Signed-off-by: Tapani Pälli Reviewed-by: Ilia Mirkin --- diff --git a/src/glsl/linker.cpp b/src/glsl/linker.cpp index 59e3e9c38a6..fb1d955aef5 100644 --- a/src/glsl/linker.cpp +++ b/src/glsl/linker.cpp @@ -3466,6 +3466,25 @@ link_shaders(struct gl_context *ctx, struct gl_shader_program *prog) prog->Version = max_version; prog->IsES = is_es_prog; + /* From OpenGL 4.5 Core specification (7.3 Program Objects): + * "Linking can fail for a variety of reasons as specified in the OpenGL + * Shading Language Specification, as well as any of the following + * reasons: + * + * * No shader objects are attached to program. + * + * ..." + * + * Same rule applies for OpenGL ES >= 3.1. + */ + + if (prog->NumShaders == 0 && + ((ctx->API == API_OPENGL_CORE && ctx->Version >= 45) || + (ctx->API == API_OPENGLES2 && ctx->Version >= 31))) { + linker_error(prog, "No shader objects are attached to program.\n"); + goto done; + } + /* Some shaders have to be linked with some other shaders present. */ if (num_shaders[MESA_SHADER_GEOMETRY] > 0 &&