glsl/gs: add gl_in support to builtin_variables.cpp.
authorPaul Berry <stereotype441@gmail.com>
Sat, 3 Aug 2013 01:12:23 +0000 (18:12 -0700)
committerPaul Berry <stereotype441@gmail.com>
Tue, 8 Oct 2013 19:44:19 +0000 (12:44 -0700)
commitc09adcb21bd2c3993f1e8a4997d718d9fee89e6d
treef2c04a76e46f90583c41fa20c296a7a15bbc2f68
parent378ff1dbac8c01f2524282b5caa81e4296ee296e
glsl/gs: add gl_in support to builtin_variables.cpp.

Previously, builtin_variables.cpp was written assuming that we
supported ARB_geometry_shader4 style geometry shader inputs, meaning
that each built-in varying input to a geometry was supplied via an
array variable whose name ended in "In", e.g. gl_PositionIn or
gl_PointSizeIn.

However, in GLSL 1.50 style geometry shaders, things work
differently--built-in inputs are supplied to geometry shaders via a
built-in interface block called gl_in, which contains all the built-in
inputs using their usual names (e.g. the gl_Position input is supplied
to the geometry shader as gl_in[i].gl_Position).

This patch adds the necessary logic to builtin_variables.cpp to create
the gl_in interface block and populate it accordingly for geometry
shader inputs.  The old ARB_geometry_shader4 style varyings are
removed, though they can easily be added back in the future if we
decide to support ARB_geometry_shader4.

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
src/glsl/builtin_variables.cpp