glsl: Allow varying structs in GLSL ES 3.00 and GLSL 1.50.
authorPaul Berry <stereotype441@gmail.com>
Fri, 4 Jan 2013 18:43:01 +0000 (10:43 -0800)
committerPaul Berry <stereotype441@gmail.com>
Fri, 25 Jan 2013 00:30:49 +0000 (16:30 -0800)
commitc6a50ddfcb736e8a33b65fe8a72f2b6b9f70073b
tree337a82ef58729546cfbb3baeba99b62432bc1d41
parentcd53457ffad322813ddf2f78f43e9fc1a154a004
glsl: Allow varying structs in GLSL ES 3.00 and GLSL 1.50.

Previously I thought that varying structs had been added to GLSL ES
3.00 by mistake, because chapter 11 of the GLSL ES 3.00 spec
("Counting of Inputs and Outputs") failed to mention how structs
should be handled.  Khronos has clarified
(https://cvs.khronos.org/bugzilla/show_bug.cgi?id=9828) that varying
structs are indeed required, and that chapter 11 will be modified to
indicate that the minimal reference packing algorithm flattens varying
structs to their individual components.

Mesa doesn't flatten varying structs to their individual components,
but this is ok, since it packs varyings of all kinds with no wasted
space at all (except where this is impossible due to differing
interpolation modes), so it will outperform the minimal reference
packing algorithm in all but the most pathological cases.

Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
src/glsl/ast_to_hir.cpp