summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrice Mandin <pmandin@caramail.com>2008-08-31 11:10:08 +0200
committerPatrice Mandin <pmandin@caramail.com>2008-08-31 11:10:08 +0200
commit0c47bd0374e533f614ca3013f429fc32946e5be7 (patch)
tree38c489c78444948513fdc634207c9dc8344ac77e
parent248831e741602450fa957d7f63b1ff1e1395c412 (diff)
nv30: set fp samplers with fragprog generation
-rw-r--r--src/gallium/drivers/nv30/nv30_fragprog.c4
-rw-r--r--src/gallium/drivers/nv30/nv30_state_emit.c4
2 files changed, 3 insertions, 5 deletions
diff --git a/src/gallium/drivers/nv30/nv30_fragprog.c b/src/gallium/drivers/nv30/nv30_fragprog.c
index 02f30ad9ba..320ba3f4bf 100644
--- a/src/gallium/drivers/nv30/nv30_fragprog.c
+++ b/src/gallium/drivers/nv30/nv30_fragprog.c
@@ -852,7 +852,7 @@ nv30_fragprog_validate(struct nv30_context *nv30)
fp->buffer = ws->buffer_create(ws, 0x100, 0, fp->insn_len * 4);
nv30_fragprog_upload(nv30, fp);
- so = so_new(6, 1);
+ so = so_new(8, 1);
so_method(so, nv30->screen->rankine, NV34TCL_FP_ACTIVE_PROGRAM, 1);
so_reloc (so, fp->buffer, 0, NOUVEAU_BO_VRAM | NOUVEAU_BO_GART |
NOUVEAU_BO_RD | NOUVEAU_BO_LOW | NOUVEAU_BO_OR,
@@ -861,6 +861,8 @@ nv30_fragprog_validate(struct nv30_context *nv30)
so_data (so, fp->fp_control);
so_method(so, nv30->screen->rankine, NV34TCL_FP_REG_CONTROL, 1);
so_data (so, fp->fp_reg_control);
+ so_method(so, nv30->screen->rankine, NV34TCL_TX_UNITS_ENABLE, 1);
+ so_data (so, fp->samplers);
so_ref(so, &fp->so);
update_constants:
diff --git a/src/gallium/drivers/nv30/nv30_state_emit.c b/src/gallium/drivers/nv30/nv30_state_emit.c
index 9c96085408..40fed621b2 100644
--- a/src/gallium/drivers/nv30/nv30_state_emit.c
+++ b/src/gallium/drivers/nv30/nv30_state_emit.c
@@ -71,10 +71,6 @@ nv30_state_emit(struct nv30_context *nv30)
state->dirty = 0;
- /* FIXME/TODO: Try to find a way to reemit only when changed */
- BEGIN_RING(rankine, NV34TCL_TX_UNITS_ENABLE, 1);
- OUT_RING(state->fp_samplers);
-
so_emit_reloc_markers(nv30->nvws, state->hw[NV30_STATE_FB]);
for (i = 0, samplers = state->fp_samplers; i < 16 && samplers; i++) {
if (!(samplers & (1 << i)))