mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-07 13:00:21 +01:00
glsl/linker: Fail to link geometry shader without vertex shader.
From section 2.15 (Geometry Shaders) the OpenGL 3.2 spec:
A program object that includes a geometry shader must also include
a vertex shader; otherwise a link error will occur.
Reviewed-by: Paul Berry <stereotype441@gmail.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
parent
8cdbe8394e
commit
bd85ba08bc
1 changed files with 8 additions and 0 deletions
|
|
@ -1690,6 +1690,14 @@ link_shaders(struct gl_context *ctx, struct gl_shader_program *prog)
|
|||
prog->Version = max_version;
|
||||
prog->IsES = is_es_prog;
|
||||
|
||||
/* Geometry shaders have to be linked with vertex shaders.
|
||||
*/
|
||||
if (num_geom_shaders > 0 && num_vert_shaders == 0) {
|
||||
linker_error(prog, "Geometry shader must be linked with "
|
||||
"vertex shader\n");
|
||||
goto done;
|
||||
}
|
||||
|
||||
for (unsigned int i = 0; i < MESA_SHADER_TYPES; i++) {
|
||||
if (prog->_LinkedShaders[i] != NULL)
|
||||
ctx->Driver.DeleteShader(ctx, prog->_LinkedShaders[i]);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue