glsl: Disallow transform feedback varyings with compute shaders.

If the only stage is MESA_SHADER_COMPUTE, we should complain that
there's nothing coming out of the geometry shader stage just as
we would if the first stage were MESA_SHADER_FRAGMENT.

Also, it's valid for tessellation shaders to be the stage producing
transform feedback varyings, so mention those in the compiler error.

Found by inspection.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Timothy Arceri <timothy.arceri@collabora.com>
This commit is contained in:
Kenneth Graunke
2016-02-09 02:12:07 -08:00
parent 329181ae33
commit 8b0f6de73d

View File

@@ -4446,9 +4446,10 @@ link_shaders(struct gl_context *ctx, struct gl_shader_program *prog)
* non-zero, but the program object has no vertex or geometry * non-zero, but the program object has no vertex or geometry
* shader; * shader;
*/ */
if (first == MESA_SHADER_FRAGMENT) { if (first >= MESA_SHADER_FRAGMENT) {
linker_error(prog, "Transform feedback varyings specified, but " linker_error(prog, "Transform feedback varyings specified, but "
"no vertex or geometry shader is present.\n"); "no vertex, tessellation, or geometry shader is "
"present.\n");
goto done; goto done;
} }