summaryrefslogtreecommitdiff
path: root/src/gallium
diff options
context:
space:
mode:
authorKeith Whitwell <keithw@vmware.com>2009-11-04 18:26:34 +0000
committerKeith Whitwell <keithw@vmware.com>2009-11-04 18:26:34 +0000
commit58e3360c11d6041de2927b604416146acb0c3817 (patch)
tree9de4acce695bc8114a3e44ec27b7f0826a428ae0 /src/gallium
parent99394a737a46999a2fc08915e9f1408246109c4a (diff)
i965g: add more missing pipe callbacks
Diffstat (limited to 'src/gallium')
-rw-r--r--src/gallium/drivers/i965/brw_pipe_fb.c9
-rw-r--r--src/gallium/drivers/i965/brw_pipe_misc.c32
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;
}