From 58e3360c11d6041de2927b604416146acb0c3817 Mon Sep 17 00:00:00 2001 From: Keith Whitwell Date: Wed, 4 Nov 2009 18:26:34 +0000 Subject: [PATCH] i965g: add more missing pipe callbacks --- src/gallium/drivers/i965/brw_pipe_fb.c | 9 +++++++ src/gallium/drivers/i965/brw_pipe_misc.c | 32 ++++++++++++++++++++++++ 2 files changed, 41 insertions(+) diff --git a/src/gallium/drivers/i965/brw_pipe_fb.c b/src/gallium/drivers/i965/brw_pipe_fb.c index c65f9bc3747..d9b70f4eefd 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 a7ccde59170..0d0d92df82d 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; } -- 2.30.2