glsl/linker: Defer recording transform feedback locations.
authorPaul Berry <stereotype441@gmail.com>
Tue, 4 Dec 2012 18:34:45 +0000 (10:34 -0800)
committerPaul Berry <stereotype441@gmail.com>
Fri, 14 Dec 2012 18:49:05 +0000 (10:49 -0800)
commit25ed3bef9b84c06cda06c9e77ff733d1ba863bf5
tree0c1974b519685c7860f5f421bc36338dec25f75f
parent3e81c666db6940675eca623044e5b372dc6b7756
glsl/linker: Defer recording transform feedback locations.

This patch subdivides the loop that assigns varying locations into two
phases: one phase to match up varyings between shader stages (and
assign them varying locations), and a second phase to record the
varying assignments for use by transform feedback.

This paves the way for varying packing, which will require us to
further subdivide the first phase.

In addition, it lets us avoid a clumsy O(n^2) algorithm, since we can
now record the locations of all transform feedback varyings in a
single pass through the tfeedback_decls array, rather than have to
iterate through the array after assigning each varying.

Reviewed-by: Eric Anholt <eric@anholt.net>
src/glsl/linker.cpp