From 0655cdcf48daecbe10ff8c16c443686a64848d1b Mon Sep 17 00:00:00 2001 From: Ben Skeggs Date: Tue, 20 Nov 2007 22:34:55 +1100 Subject: nv40: force reupload of all consts on vtxprog change --- src/mesa/pipe/nv40/nv40_state_emit.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/mesa/pipe/nv40/nv40_state_emit.c b/src/mesa/pipe/nv40/nv40_state_emit.c index a29c70538f..3224c82999 100644 --- a/src/mesa/pipe/nv40/nv40_state_emit.c +++ b/src/mesa/pipe/nv40/nv40_state_emit.c @@ -42,11 +42,14 @@ nv40_state_update_vertprog(struct nv40_context *nv40) struct pipe_context *pipe = (struct pipe_context *)nv40; struct nv40_vertex_program *vp = nv40->vertprog.vp; float *map; - int i; + int i, force_consts = 0; if (!nv40->vertprog.vp->translated) nv40_vertprog_translate(nv40, nv40->vertprog.vp); + if (nv40->vertprog.vp != nv40->vertprog.active_vp) + force_consts = 1; + if (vp->num_consts) { map = pipe->winsys->buffer_map(pipe->winsys, nv40->vertprog.constant_buf, @@ -55,7 +58,8 @@ nv40_state_update_vertprog(struct nv40_context *nv40) uint pid = vp->consts[i].pipe_id; if (pid >= 0) { - if (!memcmp(vp->consts[i].value, &map[pid*4], + if (!force_consts && + !memcmp(vp->consts[i].value, &map[pid*4], 4 * sizeof(float))) continue; memcpy(vp->consts[i].value, &map[pid*4], -- cgit v1.2.3