summaryrefslogtreecommitdiff
path: root/src/mesa/state_tracker/st_cache.c
diff options
context:
space:
mode:
authorKeith Whitwell <keith@tungstengraphics.com>2007-12-17 16:14:29 +0000
committerKeith Whitwell <keith@tungstengraphics.com>2007-12-17 16:14:29 +0000
commitbfe79babf99e6b9435195178d1ea64687c60d161 (patch)
tree2d526bbee445fce7db6cd2bba7207cfcebe74f0e /src/mesa/state_tracker/st_cache.c
parent556e247cee905f84d639b4a292e891c24b36bea1 (diff)
gallium: incorporate alpha state into depth_stencil state object.
Diffstat (limited to 'src/mesa/state_tracker/st_cache.c')
-rw-r--r--src/mesa/state_tracker/st_cache.c40
1 files changed, 11 insertions, 29 deletions
diff --git a/src/mesa/state_tracker/st_cache.c b/src/mesa/state_tracker/st_cache.c
index c0f712ba1d..e0965b217a 100644
--- a/src/mesa/state_tracker/st_cache.c
+++ b/src/mesa/state_tracker/st_cache.c
@@ -87,24 +87,25 @@ st_cached_sampler_state(struct st_context *st,
return (struct cso_sampler*)(cso_hash_iter_data(iter));
}
-const struct cso_depth_stencil *
-st_cached_depth_stencil_state(struct st_context *st,
- const struct pipe_depth_stencil_state *templ)
+const struct cso_depth_stencil_alpha *
+st_cached_depth_stencil_alpha_state(struct st_context *st,
+ const struct pipe_depth_stencil_alpha_state *templ)
{
unsigned hash_key = cso_construct_key((void*)templ,
- sizeof(struct pipe_depth_stencil_state));
+ sizeof(struct pipe_depth_stencil_alpha_state));
struct cso_hash_iter iter = cso_find_state_template(st->cache,
- hash_key, CSO_DEPTH_STENCIL,
+ hash_key,
+ CSO_DEPTH_STENCIL_ALPHA,
(void*)templ);
if (cso_hash_iter_is_null(iter)) {
- struct cso_depth_stencil *cso = malloc(sizeof(struct cso_depth_stencil));
- memcpy(&cso->state, templ, sizeof(struct pipe_depth_stencil_state));
- cso->data = st->pipe->create_depth_stencil_state(st->pipe, &cso->state);
+ struct cso_depth_stencil_alpha *cso = malloc(sizeof(struct cso_depth_stencil_alpha));
+ memcpy(&cso->state, templ, sizeof(struct pipe_depth_stencil_alpha_state));
+ cso->data = st->pipe->create_depth_stencil_alpha_state(st->pipe, &cso->state);
if (!cso->data)
cso->data = &cso->state;
- iter = cso_insert_state(st->cache, hash_key, CSO_DEPTH_STENCIL, cso);
+ iter = cso_insert_state(st->cache, hash_key, CSO_DEPTH_STENCIL_ALPHA, cso);
}
- return (struct cso_depth_stencil*)(cso_hash_iter_data(iter));
+ return (struct cso_depth_stencil_alpha*)(cso_hash_iter_data(iter));
}
const struct cso_rasterizer* st_cached_rasterizer_state(
@@ -167,22 +168,3 @@ st_cached_vs_state(struct st_context *st,
return (struct cso_vertex_shader*)(cso_hash_iter_data(iter));
}
-const struct cso_alpha_test *
-st_cached_alpha_test_state(struct st_context *st,
- const struct pipe_alpha_test_state *templ)
-{
- unsigned hash_key = cso_construct_key((void*)templ,
- sizeof(struct pipe_alpha_test_state));
- struct cso_hash_iter iter = cso_find_state_template(st->cache,
- hash_key, CSO_ALPHA_TEST,
- (void*)templ);
- if (cso_hash_iter_is_null(iter)) {
- struct cso_alpha_test *cso = malloc(sizeof(struct cso_alpha_test));
- memcpy(&cso->state, templ, sizeof(struct pipe_alpha_test_state));
- cso->data = st->pipe->create_alpha_test_state(st->pipe, &cso->state);
- if (!cso->data)
- cso->data = &cso->state;
- iter = cso_insert_state(st->cache, hash_key, CSO_ALPHA_TEST, cso);
- }
- return ((struct cso_alpha_test *)cso_hash_iter_data(iter));
-}