aboutsummaryrefslogtreecommitdiffstats
path: root/src/mesa/drivers/dri/i965/brw_vs.c
diff options
context:
space:
mode:
authorEric Anholt <[email protected]>2011-08-07 10:44:15 -0700
committerEric Anholt <[email protected]>2011-08-16 13:04:42 -0700
commit2b224d66a01f3ce867fb05558b25749705bbfe7a (patch)
tree5e9c44f37cd76ba35660732c698bf87847be1e00 /src/mesa/drivers/dri/i965/brw_vs.c
parente355b179b2bd42a585464f17759764083fa3ef26 (diff)
i965: Set up allocation of a VS scratch space if required.
Diffstat (limited to 'src/mesa/drivers/dri/i965/brw_vs.c')
-rw-r--r--src/mesa/drivers/dri/i965/brw_vs.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_vs.c b/src/mesa/drivers/dri/i965/brw_vs.c
index bd0677db151..d389f602fba 100644
--- a/src/mesa/drivers/dri/i965/brw_vs.c
+++ b/src/mesa/drivers/dri/i965/brw_vs.c
@@ -45,6 +45,7 @@ static void do_vs_prog( struct brw_context *brw,
struct brw_vs_prog_key *key )
{
struct gl_context *ctx = &brw->intel.ctx;
+ struct intel_context *intel = &brw->intel;
GLuint program_size;
const GLuint *program;
struct brw_vs_compile c;
@@ -97,6 +98,14 @@ static void do_vs_prog( struct brw_context *brw,
brw_old_vs_emit(&c);
}
+ /* Scratch space is used for register spilling */
+ if (c.last_scratch) {
+ c.prog_data.total_scratch = brw_get_scratch_size(c.last_scratch);
+
+ brw_get_scratch_bo(intel, &brw->vs.scratch_bo,
+ c.prog_data.total_scratch * brw->vs_max_threads);
+ }
+
/* get the program
*/
program = brw_get_program(&c.func, &program_size);