summaryrefslogtreecommitdiff
path: root/src/mesa/state_tracker/st_atom_alphatest.c
diff options
context:
space:
mode:
authorZack Rusin <zack@tungstengraphics.com>2007-09-21 07:00:20 -0400
committerZack Rusin <zack@tungstengraphics.com>2007-09-21 07:00:20 -0400
commit6cb87cf26f904b891faa42268f373864fa33541d (patch)
tree3af84bdc648094b7515ed924bd5d3b2f4e03c407 /src/mesa/state_tracker/st_atom_alphatest.c
parentb0fa489eba9170c4b102bf0feb1b1c3f02a34e4e (diff)
Make the alpha test state a cso.
Diffstat (limited to 'src/mesa/state_tracker/st_atom_alphatest.c')
-rw-r--r--src/mesa/state_tracker/st_atom_alphatest.c15
1 files changed, 6 insertions, 9 deletions
diff --git a/src/mesa/state_tracker/st_atom_alphatest.c b/src/mesa/state_tracker/st_atom_alphatest.c
index 4378154053..873520ab02 100644
--- a/src/mesa/state_tracker/st_atom_alphatest.c
+++ b/src/mesa/state_tracker/st_atom_alphatest.c
@@ -33,6 +33,7 @@
#include "st_context.h"
+#include "st_cache.h"
#include "st_atom.h"
#include "pipe/p_context.h"
#include "pipe/p_defines.h"
@@ -63,6 +64,7 @@ static void
update_alpha_test( struct st_context *st )
{
struct pipe_alpha_test_state alpha;
+ const struct cso_alpha_test *cso;
memset(&alpha, 0, sizeof(alpha));
@@ -71,11 +73,11 @@ update_alpha_test( struct st_context *st )
alpha.func = gl_alpha_func_to_sp(st->ctx->Color.AlphaFunc);
alpha.ref = st->ctx->Color.AlphaRef;
}
-
- if (memcmp(&alpha, &st->state.alpha_test, sizeof(alpha)) != 0) {
+ cso = st_cached_alpha_test_state(st, &alpha);
+ if (st->state.alpha_test != cso) {
/* state has changed */
- st->state.alpha_test = alpha; /* struct copy */
- st->pipe->set_alpha_test_state(st->pipe, &alpha); /* set new state */
+ st->state.alpha_test = cso;
+ st->pipe->bind_alpha_test_state(st->pipe, cso->data); /* bind new state */
}
}
@@ -88,8 +90,3 @@ const struct st_tracked_state st_update_alpha_test = {
},
.update = update_alpha_test
};
-
-
-
-
-