summaryrefslogtreecommitdiff
path: root/src/mesa/pipe/softpipe/sp_state_setup.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mesa/pipe/softpipe/sp_state_setup.c')
-rw-r--r--src/mesa/pipe/softpipe/sp_state_setup.c26
1 files changed, 22 insertions, 4 deletions
diff --git a/src/mesa/pipe/softpipe/sp_state_setup.c b/src/mesa/pipe/softpipe/sp_state_setup.c
index 4715a26f55..6788396355 100644
--- a/src/mesa/pipe/softpipe/sp_state_setup.c
+++ b/src/mesa/pipe/softpipe/sp_state_setup.c
@@ -31,17 +31,35 @@
#include "pipe/draw/draw_context.h"
-void softpipe_set_setup_state( struct pipe_context *pipe,
- const struct pipe_setup_state *setup )
+
+const struct pipe_rasterizer_state *
+softpipe_create_rasterizer_state(struct pipe_context *pipe,
+ const struct pipe_rasterizer_state *setup)
+{
+ struct pipe_rasterizer_state *raster =
+ malloc(sizeof(struct pipe_rasterizer_state));
+ memcpy(raster, setup, sizeof(struct pipe_rasterizer_state));
+
+ return raster;
+}
+
+void softpipe_bind_rasterizer_state(struct pipe_context *pipe,
+ const struct pipe_rasterizer_state *setup)
{
struct softpipe_context *softpipe = softpipe_context(pipe);
/* pass-through to draw module */
draw_set_setup_state(softpipe->draw, setup);
- memcpy( &softpipe->setup, setup, sizeof(*setup) );
+ softpipe->rasterizer = setup;
+
+ softpipe->dirty |= SP_NEW_RASTERIZER;
+}
- softpipe->dirty |= SP_NEW_SETUP;
+void softpipe_delete_rasterizer_state(struct pipe_context *pipe,
+ const struct pipe_rasterizer_state *rasterizer)
+{
+ free((struct pipe_rasterizer_state*)rasterizer);
}