summaryrefslogtreecommitdiff
path: root/src/gallium/drivers/nv40/nv40_state_emit.c
diff options
context:
space:
mode:
authorBen Skeggs <skeggsb@gmail.com>2008-02-18 17:07:59 +1100
committerBen Skeggs <skeggsb@gmail.com>2008-02-18 17:07:59 +1100
commit4a9cb97bbf6961cc4106c4c54e59296a74e889e9 (patch)
tree775f75a56b93a79b2d1cef33f1b9b098d8e8288f /src/gallium/drivers/nv40/nv40_state_emit.c
parent56045da083d6530a56a2a7585e3121df0b07bac4 (diff)
nv40: get fragprog onto new state mechanism
Diffstat (limited to 'src/gallium/drivers/nv40/nv40_state_emit.c')
-rw-r--r--src/gallium/drivers/nv40/nv40_state_emit.c26
1 files changed, 13 insertions, 13 deletions
diff --git a/src/gallium/drivers/nv40/nv40_state_emit.c b/src/gallium/drivers/nv40/nv40_state_emit.c
index b5d0d68d6b..e10e178432 100644
--- a/src/gallium/drivers/nv40/nv40_state_emit.c
+++ b/src/gallium/drivers/nv40/nv40_state_emit.c
@@ -19,21 +19,14 @@ nv40_state_emit_dummy_relocs(struct nv40_context *nv40)
continue;
so_emit_reloc_markers(nv40->nvws, nv40->so_fragtex[i]);
}
- so_emit_reloc_markers(nv40->nvws, nv40->fragprog.active->so);
-}
-
-static boolean
-nv40_state_clip_validate(struct nv40_context *nv40)
-{
- if (nv40->pipe_state.clip.nr)
- nv40->fallback |= NV40_FALLBACK_TNL;
- return FALSE;
+ so_emit_reloc_markers(nv40->nvws, nv40->state.fragprog);
}
static struct nv40_state_entry *render_states[] = {
&nv40_state_clip,
&nv40_state_scissor,
&nv40_state_stipple,
+ &nv40_state_fragprog,
NULL
};
@@ -65,6 +58,15 @@ nv40_state_validate(struct nv40_context *nv40)
!(nv40->fallback & NV40_FALLBACK_TNL)) {
NOUVEAU_ERR("XXX: swtnl->hwtnl\n");
}
+
+ if (nv40->fallback & NV40_FALLBACK_RAST &&
+ !(last_fallback & NV40_FALLBACK_RAST)) {
+ NOUVEAU_ERR("XXX: hwrast->swrast\n");
+ } else
+ if (last_fallback & NV40_FALLBACK_RAST &&
+ !(nv40->fallback & NV40_FALLBACK_RAST)) {
+ NOUVEAU_ERR("XXX: swrast->hwrast\n");
+ }
}
void
@@ -100,10 +102,8 @@ nv40_emit_hw_state(struct nv40_context *nv40)
nv40->hw_dirty &= ~NV40_NEW_STIPPLE;
}
- if (nv40->dirty & NV40_NEW_FRAGPROG) {
- nv40_fragprog_bind(nv40, nv40->fragprog.current);
- /*XXX: clear NV40_NEW_FRAGPROG if no new program uploaded */
- }
+ if (nv40->hw_dirty & NV40_NEW_FRAGPROG)
+ so_emit(nv40->nvws, nv40->state.fragprog);
if (nv40->dirty_samplers || (nv40->dirty & NV40_NEW_FRAGPROG)) {
nv40_fragtex_bind(nv40);