summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Skeggs <skeggsb@gmail.com>2008-03-31 05:13:06 +1000
committerBen Skeggs <skeggsb@gmail.com>2008-03-31 05:13:06 +1000
commit833b1fb152851ba0d4fa2a5ba4702ee98d9bc217 (patch)
treec274df79bcbe83b0d40828e1754baa7263fd8444
parentbbefb541ad94382debb0f7a8daa636729799a31a (diff)
nv40: mark fp dirty even when only consts updated
Fixes arbfplight "sticking".
-rw-r--r--src/gallium/drivers/nv40/nv40_fragprog.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/gallium/drivers/nv40/nv40_fragprog.c b/src/gallium/drivers/nv40/nv40_fragprog.c
index 87bca41cf6..4b7667e038 100644
--- a/src/gallium/drivers/nv40/nv40_fragprog.c
+++ b/src/gallium/drivers/nv40/nv40_fragprog.c
@@ -919,6 +919,7 @@ nv40_fragprog_validate(struct nv40_context *nv40)
nv40->constbuf[PIPE_SHADER_FRAGMENT];
struct pipe_winsys *ws = nv40->pipe.winsys;
struct nouveau_stateobj *so;
+ boolean new_consts = FALSE;
int i;
if (fp->translated)
@@ -945,7 +946,6 @@ nv40_fragprog_validate(struct nv40_context *nv40)
update_constants:
if (fp->nr_consts) {
- boolean new_consts = FALSE;
float *map;
map = ws->buffer_map(ws, constbuf, PIPE_BUFFER_USAGE_CPU_READ);
@@ -965,7 +965,7 @@ update_constants:
nv40_fragprog_upload(nv40, fp);
}
- if (fp->so != nv40->state.hw[NV40_STATE_FRAGPROG]) {
+ if (new_consts || fp->so != nv40->state.hw[NV40_STATE_FRAGPROG]) {
so_ref(fp->so, &nv40->state.hw[NV40_STATE_FRAGPROG]);
return TRUE;
}