summaryrefslogtreecommitdiff
path: root/src/mesa/state_tracker/st_atom_sampler.c
diff options
context:
space:
mode:
authorKeith Whitwell <keith@tungstengraphics.com>2008-03-05 10:50:14 +0100
committerKeith Whitwell <keith@tungstengraphics.com>2008-03-05 10:56:49 +0100
commit4528287e040415c2071012d02f20979ff995c754 (patch)
tree9fbbd0d785c4e9a45ff7c53a8254312bd5ff7bb6 /src/mesa/state_tracker/st_atom_sampler.c
parentb1922de9f3478869c6788ef4e954c06c20e7aa9c (diff)
gallium: michel's patch to rework texture/sampler binding interface
Bind all the samplers/textures at once rather than piecemeal. This is easier for drivers to understand.
Diffstat (limited to 'src/mesa/state_tracker/st_atom_sampler.c')
-rw-r--r--src/mesa/state_tracker/st_atom_sampler.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/src/mesa/state_tracker/st_atom_sampler.c b/src/mesa/state_tracker/st_atom_sampler.c
index 92263cb688..1000f98ffc 100644
--- a/src/mesa/state_tracker/st_atom_sampler.c
+++ b/src/mesa/state_tracker/st_atom_sampler.c
@@ -120,10 +120,11 @@ update_samplers(struct st_context *st)
const struct st_fragment_program *fs = st->fp;
GLuint su;
+ st->state.num_samplers = 0;
+
/* loop over sampler units (aka tex image units) */
for (su = 0; su < st->ctx->Const.MaxTextureImageUnits; su++) {
struct pipe_sampler_state sampler;
- const struct cso_sampler *cso;
memset(&sampler, 0, sizeof(sampler));
@@ -168,17 +169,16 @@ update_samplers(struct st_context *st)
= st_compare_func_to_pipe(texobj->CompareFunc);
}
+ st->state.num_samplers = su + 1;
+
/* XXX more sampler state here */
}
- cso = st_cached_sampler_state(st, &sampler);
-
- if (cso != st->state.sampler[su]) {
- /* state has changed */
- st->state.sampler[su] = cso;
- st->pipe->bind_sampler_state(st->pipe, su, cso->data);
- }
+ st->state.sampler[su] = st_cached_sampler_state(st, &sampler)->data;
}
+
+ st->pipe->bind_sampler_states(st->pipe, st->state.num_samplers,
+ st->state.sampler);
}