diff options
Diffstat (limited to 'src/gallium')
-rw-r--r-- | src/gallium/auxiliary/draw/draw_context.h | 15 | ||||
-rw-r--r-- | src/gallium/drivers/svga/svga_pipe_rasterizer.c | 4 |
2 files changed, 17 insertions, 2 deletions
diff --git a/src/gallium/auxiliary/draw/draw_context.h b/src/gallium/auxiliary/draw/draw_context.h index 02c176e8f4b..f3a3f232322 100644 --- a/src/gallium/auxiliary/draw/draw_context.h +++ b/src/gallium/auxiliary/draw/draw_context.h @@ -80,6 +80,21 @@ void draw_set_viewport_state( struct draw_context *draw, void draw_set_clip_state( struct draw_context *pipe, const struct pipe_clip_state *clip ); +/** + * Sets the rasterization state used by the draw module. + * The rast_handle is used to pass the driver specific representation + * of the rasterization state. It's going to be used when the + * draw module sets the state back on the driver itself using the + * pipe::bind_rasterizer_state method. + * + * NOTE: if you're calling this function from within the pipe's + * bind_rasterizer_state you should always call it before binding + * the actual state - that's because the draw module can try to + * bind its own rasterizer state which would reset your newly + * set state. i.e. always do + * draw_set_rasterizer_state(driver->draw, state->pipe_state, state); + * driver->state.raster = state; + */ void draw_set_rasterizer_state( struct draw_context *draw, const struct pipe_rasterizer_state *raster, void *rast_handle ); diff --git a/src/gallium/drivers/svga/svga_pipe_rasterizer.c b/src/gallium/drivers/svga/svga_pipe_rasterizer.c index a18845e3b7c..33428004296 100644 --- a/src/gallium/drivers/svga/svga_pipe_rasterizer.c +++ b/src/gallium/drivers/svga/svga_pipe_rasterizer.c @@ -237,11 +237,11 @@ static void svga_bind_rasterizer_state( struct pipe_context *pipe, struct svga_context *svga = svga_context(pipe); struct svga_rasterizer_state *raster = (struct svga_rasterizer_state *)state; - svga->curr.rast = raster; draw_set_rasterizer_state(svga->swtnl.draw, raster ? &raster->templ : NULL, state); - + svga->curr.rast = raster; + svga->dirty |= SVGA_NEW_RAST; } |