glsl: always compute proper varying type, irrespective of varying packing
authorIlia Mirkin <imirkin@alum.mit.edu>
Thu, 21 Jan 2016 12:17:06 +0000 (07:17 -0500)
committerIlia Mirkin <imirkin@alum.mit.edu>
Fri, 22 Jan 2016 13:48:27 +0000 (08:48 -0500)
commitdac2964f3ebd96d5ac227984ab0cd79c2c3b2a1a
treee1af5997efeb8426e6e5b88f102e0335f9352dcd
parent54702c2fa1a146f45a1f8c35abe2b529e24b2acf
glsl: always compute proper varying type, irrespective of varying packing

Normally there's a producer and consumer, and the producer var gets
picked. In both the vertex->gs and tes->gs cases, that's the un-arrayed
version.

In the SSO case, however, there is no producer. So we picked the arrayed
GS variable, and as a result, used more slots than we should. More
critically, these slots would also no longer line up with the producer's
calculation. To fix this, we need to fix up the type of the variable
based on stage no matter what.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=93650
Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Timothy Arceri <timothy.arceri@collabora.com>
Cc: "11.0 11.1" <mesa-stable@lists.freedesktop.org>
src/glsl/link_varyings.cpp