i965/vs: Implement register spilling.
authorKenneth Graunke <kenneth@whitecape.org>
Mon, 1 Oct 2012 22:28:56 +0000 (15:28 -0700)
committerAndreas Boll <andreas.boll.dev@gmail.com>
Sun, 20 Jan 2013 14:08:26 +0000 (15:08 +0100)
commitb22de71c1bc2530e139d75d934e203f4eee89f41
tree6e7a6a3e2a8bdc2c365f48df944de3452e5bb0a9
parentcb415d4df644a8caffe861626dec5f7aa4cefa49
i965/vs: Implement register spilling.

To validate this code, I ran piglit -t vs quick.tests with the "go spill
everything" debugging code enabled.  There was only one regression:
glsl-vs-unroll-explosion simply ran out of registers.  This should be
fine in the real world, since no one actually spills every single
register.

NOTE: This is a candidate for the 9.0 branch. Even if it proves to have
bugs, it's likely better than simply failing to compile.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
(cherry picked from commit 9237f0ea8d176fb5dcd41868dcc723fe34f6b1f3)
src/mesa/drivers/dri/i965/brw_vec4.h
src/mesa/drivers/dri/i965/brw_vec4_emit.cpp
src/mesa/drivers/dri/i965/brw_vec4_reg_allocate.cpp