diff options
| author | Keith Whitwell <keithw@vmware.com> | 2009-11-04 18:26:34 +0000 | 
|---|---|---|
| committer | Keith Whitwell <keithw@vmware.com> | 2009-11-04 18:26:34 +0000 | 
| commit | 58e3360c11d6041de2927b604416146acb0c3817 (patch) | |
| tree | 9de4acce695bc8114a3e44ec27b7f0826a428ae0 | |
| parent | 99394a737a46999a2fc08915e9f1408246109c4a (diff) | |
i965g: add more missing pipe callbacks
| -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;  } | 
