glsl: clean up and fix bug in varying linking rules
authorTimothy Arceri <timothy.arceri@collabora.com>
Fri, 22 Jan 2016 22:08:23 +0000 (09:08 +1100)
committerTimothy Arceri <timothy.arceri@collabora.com>
Tue, 9 Feb 2016 11:44:22 +0000 (22:44 +1100)
commit9dd6a4ea793dd050cebbacbd5f429d4e8e57ee26
treecbaf7f50b786d68c7e2a90a521b35daccc8bbd42
parentfd0b89ad8d7ba10045683e4768a89811c8633a85
glsl: clean up and fix bug in varying linking rules

The existing code was very hard to follow and has been the source
of at least 3 bugs in the past year.

The existing code also has a bug for SSO where if we have a
multi-stage SSO for example a tes -> gs program, if we try to use
transform feedback with gs the existing code would look for the
transform feedback varyings in the tes stage and fail as it can't
find them.

V2: Add more code comments, always try to remove unused inputs
to the first stage.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
src/compiler/glsl/linker.cpp