glsl: Assign transform feedback varying slots in linker.
authorPaul Berry <stereotype441@gmail.com>
Sat, 5 Nov 2011 18:17:32 +0000 (11:17 -0700)
committerPaul Berry <stereotype441@gmail.com>
Wed, 9 Nov 2011 19:12:47 +0000 (11:12 -0800)
commit871ddb919b424293894a23a8f83200fed572d6a9
treecef7a86fd7e1387f89223ac6bde1dafa6c341557
parent6f5c73797087c6e7842665f84e41caedea59bb65
glsl: Assign transform feedback varying slots in linker.

This patch modifies the GLSL linker to assign additional slots for
varying variables used by transform feedback, and record the varying
slots used by transform feedback for use by the driver back-end.

This required modifying assign_varying_locations() so that it assigns
a varying location if either (a) the varying is used by the next stage
of the GL pipeline, or (b) the varying is required by transform
feedback.  In order to avoid duplicating the code to assign a single
varying location, I moved it into its own function,
assign_varying_location().

In addition, to support transform feedback in the case where there is
no fragment shader, it is now possible to call
assign_varying_locations() with a consumer of NULL.

Reviewed-by: Marek Olšák <maraeo@gmail.com>
Tested-by: Marek Olšák <maraeo@gmail.com>
src/glsl/linker.cpp
src/mesa/main/mtypes.h