summaryrefslogtreecommitdiff
path: root/src/mesa/drivers/dri/i965/brw_vs_emit.c
diff options
context:
space:
mode:
authorBrian Paul <brianp@vmware.com>2009-04-27 10:45:41 -0600
committerBrian Paul <brianp@vmware.com>2009-04-27 10:45:41 -0600
commit777b9ff43e88e456d686208c83712f26aba2dd95 (patch)
tree086a4752a6d5e453b4e0b1f5a9f3b4a0b910eb58 /src/mesa/drivers/dri/i965/brw_vs_emit.c
parentb58b3a786aa38dcc9d72144c2cc691151e46e3d5 (diff)
i965: only upload constant buffer data when we actually need the const buffer
Make the use_const_buffer field per-program and only call the code which updates the constant buffer's data if the flag is set. This should undo the perf regression from 20f3497e4b6756e330f7b3f54e8acaa1d6c92052 (cherry picked from master, commit dc9705d12d162ba6d087eb762e315de9f97bc456)
Diffstat (limited to 'src/mesa/drivers/dri/i965/brw_vs_emit.c')
-rw-r--r--src/mesa/drivers/dri/i965/brw_vs_emit.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_vs_emit.c b/src/mesa/drivers/dri/i965/brw_vs_emit.c
index c2b3702798..b9a338b1cd 100644
--- a/src/mesa/drivers/dri/i965/brw_vs_emit.c
+++ b/src/mesa/drivers/dri/i965/brw_vs_emit.c
@@ -76,9 +76,10 @@ static void brw_vs_alloc_regs( struct brw_vs_compile *c )
*/
if (c->vp->program.Base.Parameters->NumParameters +
c->vp->program.Base.NumTemporaries + 20 > BRW_MAX_GRF)
- c->use_const_buffer = GL_TRUE;
+ c->vp->use_const_buffer = GL_TRUE;
else
- c->use_const_buffer = GL_FALSE;
+ c->vp->use_const_buffer = GL_FALSE;
+
/*printf("use_const_buffer = %d\n", c->use_const_buffer);*/
/* r0 -- reserved as usual
@@ -100,7 +101,7 @@ static void brw_vs_alloc_regs( struct brw_vs_compile *c )
/* Vertex program parameters from curbe:
*/
- if (c->use_const_buffer) {
+ if (c->vp->use_const_buffer) {
/* get constants from a real constant buffer */
c->prog_data.curb_read_length = 0;
c->prog_data.nr_params = 4; /* XXX 0 causes a bug elsewhere... */
@@ -176,7 +177,7 @@ static void brw_vs_alloc_regs( struct brw_vs_compile *c )
reg++;
}
- if (c->use_const_buffer) {
+ if (c->vp->use_const_buffer) {
for (i = 0; i < 3; i++) {
c->current_const[i].index = -1;
c->current_const[i].reg = brw_vec8_grf(reg, 0);
@@ -873,7 +874,7 @@ get_src_reg( struct brw_vs_compile *c,
case PROGRAM_STATE_VAR:
case PROGRAM_CONSTANT:
case PROGRAM_UNIFORM:
- if (c->use_const_buffer) {
+ if (c->vp->use_const_buffer) {
return get_constant(c, inst, argIndex);
}
else if (relAddr) {