diff options
| -rw-r--r-- | src/gallium/drivers/i965/brw_pipe_fb.c | 9 | ||||
| -rw-r--r-- | src/gallium/drivers/i965/brw_pipe_misc.c | 32 | 
2 files changed, 41 insertions, 0 deletions
| diff --git a/src/gallium/drivers/i965/brw_pipe_fb.c b/src/gallium/drivers/i965/brw_pipe_fb.c index c65f9bc374..d9b70f4eef 100644 --- a/src/gallium/drivers/i965/brw_pipe_fb.c +++ b/src/gallium/drivers/i965/brw_pipe_fb.c @@ -41,6 +41,7 @@ static void brw_set_framebuffer_state( struct pipe_context *pipe,     brw->curr.fb.nr_cbufs = fb->nr_cbufs;  } +  static void brw_set_viewport_state( struct pipe_context *pipe,  				    const struct pipe_viewport_state *viewport )  { @@ -58,4 +59,12 @@ void brw_pipe_framebuffer_init( struct brw_context *brw )  void brw_pipe_framebuffer_cleanup( struct brw_context *brw )  { +   struct pipe_framebuffer_state *fb = &brw->curr.fb; +   int i; + +   for (i = 0; i < PIPE_MAX_COLOR_BUFS; i++) { +      pipe_surface_reference(&fb->cbufs[i], NULL); +   } + +   pipe_surface_reference(&fb->zsbuf, NULL);  } diff --git a/src/gallium/drivers/i965/brw_pipe_misc.c b/src/gallium/drivers/i965/brw_pipe_misc.c index a7ccde5917..0d0d92df82 100644 --- a/src/gallium/drivers/i965/brw_pipe_misc.c +++ b/src/gallium/drivers/i965/brw_pipe_misc.c @@ -16,13 +16,45 @@ static void brw_set_polygon_stipple( struct pipe_context *pipe,     for (i = 0; i < 32; i++)        bps->stipple[i] = stip->stipple[i]; /* don't invert */ + +   brw->state.dirty.mesa |= PIPE_NEW_POLYGON_STIPPLE; +} + + +static void brw_set_scissor_state( struct pipe_context *pipe, +                                   const struct pipe_scissor_state *scissor ) +{ +   struct brw_context *brw = brw_context(pipe); + +   brw->curr.scissor =  *scissor; +   brw->state.dirty.mesa |= PIPE_NEW_SCISSOR; +} + +static void brw_set_viewport_state( struct pipe_context *pipe, +                                    const struct pipe_viewport_state *viewport ) +{ +   struct brw_context *brw = brw_context(pipe); + +   brw->curr.viewport = *viewport; +   brw->state.dirty.mesa |= PIPE_NEW_VIEWPORT;  } +static void brw_set_clip_state( struct pipe_context *pipe, +                                const struct pipe_clip_state *clip ) +{ +   struct brw_context *brw = brw_context(pipe); + +   brw->curr.ucp = *clip; +   brw->state.dirty.mesa |= PIPE_NEW_CLIP; +}  void brw_pipe_misc_init( struct brw_context *brw )  {     brw->base.set_polygon_stipple = brw_set_polygon_stipple; +   brw->base.set_scissor_state = brw_set_scissor_state; +   brw->base.set_clip_state = brw_set_clip_state; +   brw->base.set_viewport_state = brw_set_viewport_state;  } | 
