summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZack Rusin <zack@tungstengraphics.com>2007-10-03 08:47:36 -0400
committerZack Rusin <zack@tungstengraphics.com>2007-10-03 08:47:36 -0400
commit51345cb3c4d85a9e88ac35b59e938b0692df6205 (patch)
tree3d0ce611cb6fc43f4672426f9e459369c67ceb1c
parent4b6cc36b2b4892c3ce0862789c3b294c52356805 (diff)
Make softpipe behave more like a real driver by always allocating something
in the state functions.
-rw-r--r--src/mesa/pipe/softpipe/sp_state_blend.c23
-rw-r--r--src/mesa/pipe/softpipe/sp_state_fs.c5
-rw-r--r--src/mesa/pipe/softpipe/sp_state_rasterizer.c7
-rw-r--r--src/mesa/pipe/softpipe/sp_state_sampler.c6
4 files changed, 27 insertions, 14 deletions
diff --git a/src/mesa/pipe/softpipe/sp_state_blend.c b/src/mesa/pipe/softpipe/sp_state_blend.c
index cb0921f687..6376c3c61c 100644
--- a/src/mesa/pipe/softpipe/sp_state_blend.c
+++ b/src/mesa/pipe/softpipe/sp_state_blend.c
@@ -34,9 +34,9 @@ void *
softpipe_create_blend_state(struct pipe_context *pipe,
const struct pipe_blend_state *blend)
{
- /* means that we just want pipe_blend_state and don't have
- * anything specific */
- return 0;
+ struct pipe_blend_state *state = malloc(sizeof(struct pipe_blend_state));
+ memcpy(state, blend, sizeof(struct pipe_blend_state));
+ return state;
}
void softpipe_bind_blend_state( struct pipe_context *pipe,
@@ -50,9 +50,9 @@ void softpipe_bind_blend_state( struct pipe_context *pipe,
}
void softpipe_delete_blend_state(struct pipe_context *pipe,
- void *blend )
+ void *blend)
{
- /* do nothing */
+ free(blend);
}
@@ -75,7 +75,9 @@ void *
softpipe_create_alpha_test_state(struct pipe_context *pipe,
const struct pipe_alpha_test_state *alpha)
{
- return 0;
+ struct pipe_alpha_test_state *state = malloc(sizeof(struct pipe_alpha_test_state));
+ memcpy(state, alpha, sizeof(struct pipe_alpha_test_state));
+ return state;
}
void
@@ -93,14 +95,17 @@ void
softpipe_delete_alpha_test_state(struct pipe_context *pipe,
void *alpha)
{
- /* do nothing */
+ free(alpha);
}
void *
softpipe_create_depth_stencil_state(struct pipe_context *pipe,
const struct pipe_depth_stencil_state *depth_stencil)
{
- return 0;
+ struct pipe_depth_stencil_state *state =
+ malloc(sizeof(struct pipe_depth_stencil_state));
+ memcpy(state, depth_stencil, sizeof(struct pipe_depth_stencil_state));
+ return state;
}
void
@@ -117,5 +122,5 @@ softpipe_bind_depth_stencil_state(struct pipe_context *pipe,
void
softpipe_delete_depth_stencil_state(struct pipe_context *pipe, void *depth)
{
- /* do nothing */
+ free(depth);
}
diff --git a/src/mesa/pipe/softpipe/sp_state_fs.c b/src/mesa/pipe/softpipe/sp_state_fs.c
index f1bec2c73a..390340fa8d 100644
--- a/src/mesa/pipe/softpipe/sp_state_fs.c
+++ b/src/mesa/pipe/softpipe/sp_state_fs.c
@@ -40,7 +40,9 @@ void * softpipe_create_fs_state(struct pipe_context *pipe,
* that now.
*/
- return 0;
+ struct pipe_shader_state *state = malloc(sizeof(struct pipe_shader_state));
+ memcpy(state, templ, sizeof(struct pipe_shader_state));
+ return state;
}
void softpipe_bind_fs_state(struct pipe_context *pipe, void *fs)
@@ -55,6 +57,7 @@ void softpipe_bind_fs_state(struct pipe_context *pipe, void *fs)
void softpipe_delete_fs_state(struct pipe_context *pipe,
void *shader)
{
+ free(shader);
}
diff --git a/src/mesa/pipe/softpipe/sp_state_rasterizer.c b/src/mesa/pipe/softpipe/sp_state_rasterizer.c
index d7845cef82..076ea66d9e 100644
--- a/src/mesa/pipe/softpipe/sp_state_rasterizer.c
+++ b/src/mesa/pipe/softpipe/sp_state_rasterizer.c
@@ -36,7 +36,10 @@ void *
softpipe_create_rasterizer_state(struct pipe_context *pipe,
const struct pipe_rasterizer_state *setup)
{
- return 0;
+ struct pipe_rasterizer_state *state =
+ malloc(sizeof(struct pipe_rasterizer_state));
+ memcpy(state, setup, sizeof(struct pipe_rasterizer_state));
+ return state;
}
void softpipe_bind_rasterizer_state(struct pipe_context *pipe,
@@ -55,7 +58,7 @@ void softpipe_bind_rasterizer_state(struct pipe_context *pipe,
void softpipe_delete_rasterizer_state(struct pipe_context *pipe,
void *rasterizer)
{
- /* do nothing */
+ free(rasterizer);
}
diff --git a/src/mesa/pipe/softpipe/sp_state_sampler.c b/src/mesa/pipe/softpipe/sp_state_sampler.c
index ad98375735..4084e9163f 100644
--- a/src/mesa/pipe/softpipe/sp_state_sampler.c
+++ b/src/mesa/pipe/softpipe/sp_state_sampler.c
@@ -36,7 +36,9 @@ void *
softpipe_create_sampler_state(struct pipe_context *pipe,
const struct pipe_sampler_state *sampler)
{
- return 0;
+ struct pipe_sampler_state *state = malloc(sizeof(struct pipe_sampler_state));
+ memcpy(state, sampler, sizeof(struct pipe_sampler_state));
+ return state;
}
void
@@ -56,7 +58,7 @@ void
softpipe_delete_sampler_state(struct pipe_context *pipe,
void *sampler)
{
- /* do nothing */
+ free(sampler);
}