r600g: fix up surface references
authorDave Airlie <airlied@redhat.com>
Sun, 5 Sep 2010 23:14:08 +0000 (09:14 +1000)
committerDave Airlie <airlied@redhat.com>
Sun, 5 Sep 2010 23:15:42 +0000 (09:15 +1000)
We end up referencing the new surf and derefing the old surface which
is a copy of the pointer to the new surf. So just bump the ref count directly.

src/gallium/drivers/r600/r600_state.c

index e630e1af40756fdceac63d2b5982da5c48ed71a2..a7a795f9ab7b91cdb53836806044e14c797bcf30 100644 (file)
@@ -443,11 +443,9 @@ static void r600_set_framebuffer_state(struct pipe_context *ctx,
        rstate = r600_new_context_state(pipe_framebuffer_type);
        rstate->state.framebuffer = *state;
        for (i = 0; i < rstate->state.framebuffer.nr_cbufs; i++) {
-               pipe_surface_reference(&rstate->state.framebuffer.cbufs[i],
-                                      state->cbufs[i]);
+               pipe_reference(NULL, &state->cbufs[i]->reference);
        }
-       pipe_surface_reference(&rstate->state.framebuffer.zsbuf,
-                              state->zsbuf);
+       pipe_reference(NULL, &state->zsbuf->reference);
        rctx->framebuffer = rstate;
        for (i = 0; i < state->nr_cbufs; i++) {
                r600_cb(rctx, &rstate->rstate[i+1], state, i);