From ca95d71a4bc63e2ea45abf9096a3da802819ef92 Mon Sep 17 00:00:00 2001 From: Ben Skeggs Date: Sat, 7 Mar 2009 17:14:24 +1000 Subject: nouveau: make stateobjs start off with refcount of 1 --- src/gallium/drivers/nv30/nv30_fragprog.c | 1 + src/gallium/drivers/nv30/nv30_fragtex.c | 2 ++ src/gallium/drivers/nv30/nv30_state.c | 3 +++ src/gallium/drivers/nv30/nv30_state_blend.c | 1 + src/gallium/drivers/nv30/nv30_state_fb.c | 1 + src/gallium/drivers/nv30/nv30_state_scissor.c | 1 + src/gallium/drivers/nv30/nv30_state_stipple.c | 1 + src/gallium/drivers/nv30/nv30_state_viewport.c | 1 + src/gallium/drivers/nv30/nv30_vbo.c | 3 +++ src/gallium/drivers/nv30/nv30_vertprog.c | 1 + 10 files changed, 15 insertions(+) (limited to 'src/gallium/drivers/nv30') diff --git a/src/gallium/drivers/nv30/nv30_fragprog.c b/src/gallium/drivers/nv30/nv30_fragprog.c index 0da392fed33..bdfe1425d24 100644 --- a/src/gallium/drivers/nv30/nv30_fragprog.c +++ b/src/gallium/drivers/nv30/nv30_fragprog.c @@ -865,6 +865,7 @@ nv30_fragprog_validate(struct nv30_context *nv30) so_method(so, nv30->screen->rankine, NV34TCL_TX_UNITS_ENABLE, 1); so_data (so, fp->samplers); so_ref(so, &fp->so); + so_ref(NULL, &so); update_constants: if (fp->nr_consts) { diff --git a/src/gallium/drivers/nv30/nv30_fragtex.c b/src/gallium/drivers/nv30/nv30_fragtex.c index b1d2663af38..8b6ab992d16 100644 --- a/src/gallium/drivers/nv30/nv30_fragtex.c +++ b/src/gallium/drivers/nv30/nv30_fragtex.c @@ -137,6 +137,7 @@ nv30_fragtex_validate(struct nv30_context *nv30) so_method(so, nv30->screen->rankine, NV34TCL_TX_ENABLE(unit), 1); so_data (so, 0); so_ref(so, &nv30->state.hw[NV30_STATE_FRAGTEX0 + unit]); + so_ref(NULL, &so); state->dirty |= (1ULL << (NV30_STATE_FRAGTEX0 + unit)); } @@ -147,6 +148,7 @@ nv30_fragtex_validate(struct nv30_context *nv30) so = nv30_fragtex_build(nv30, unit); so_ref(so, &nv30->state.hw[NV30_STATE_FRAGTEX0 + unit]); + so_ref(NULL, &so); state->dirty |= (1ULL << (NV30_STATE_FRAGTEX0 + unit)); } diff --git a/src/gallium/drivers/nv30/nv30_state.c b/src/gallium/drivers/nv30/nv30_state.c index 26147565a53..b91e972c123 100644 --- a/src/gallium/drivers/nv30/nv30_state.c +++ b/src/gallium/drivers/nv30/nv30_state.c @@ -51,6 +51,7 @@ nv30_blend_state_create(struct pipe_context *pipe, so_data (so, cso->dither ? 1 : 0); so_ref(so, &bso->so); + so_ref(NULL, &so); bso->pipe = *cso; return (void *)bso; } @@ -404,6 +405,7 @@ nv30_rasterizer_state_create(struct pipe_context *pipe, } so_ref(so, &rsso->so); + so_ref(NULL, &so); rsso->pipe = *cso; return (void *)rsso; } @@ -477,6 +479,7 @@ nv30_depth_stencil_alpha_state_create(struct pipe_context *pipe, } so_ref(so, &zsaso->so); + so_ref(NULL, &so); zsaso->pipe = *cso; return (void *)zsaso; } diff --git a/src/gallium/drivers/nv30/nv30_state_blend.c b/src/gallium/drivers/nv30/nv30_state_blend.c index 44d43e132a5..64cf9ae93a0 100644 --- a/src/gallium/drivers/nv30/nv30_state_blend.c +++ b/src/gallium/drivers/nv30/nv30_state_blend.c @@ -28,6 +28,7 @@ nv30_state_blend_colour_validate(struct nv30_context *nv30) (float_to_ubyte(bcol->color[2]) << 0))); so_ref(so, &nv30->state.hw[NV30_STATE_BCOL]); + so_ref(NULL, &so); return TRUE; } diff --git a/src/gallium/drivers/nv30/nv30_state_fb.c b/src/gallium/drivers/nv30/nv30_state_fb.c index ee0326011ca..fdc1cade905 100644 --- a/src/gallium/drivers/nv30/nv30_state_fb.c +++ b/src/gallium/drivers/nv30/nv30_state_fb.c @@ -132,6 +132,7 @@ nv30_state_framebuffer_validate(struct nv30_context *nv30) so_data (so, 0); so_ref(so, &nv30->state.hw[NV30_STATE_FB]); + so_ref(NULL, &so); return TRUE; } diff --git a/src/gallium/drivers/nv30/nv30_state_scissor.c b/src/gallium/drivers/nv30/nv30_state_scissor.c index 1db9bc17955..3ac7a8471ea 100644 --- a/src/gallium/drivers/nv30/nv30_state_scissor.c +++ b/src/gallium/drivers/nv30/nv30_state_scissor.c @@ -23,6 +23,7 @@ nv30_state_scissor_validate(struct nv30_context *nv30) } so_ref(so, &nv30->state.hw[NV30_STATE_SCISSOR]); + so_ref(NULL, &so); return TRUE; } diff --git a/src/gallium/drivers/nv30/nv30_state_stipple.c b/src/gallium/drivers/nv30/nv30_state_stipple.c index 41b42813b49..d0c791ac082 100644 --- a/src/gallium/drivers/nv30/nv30_state_stipple.c +++ b/src/gallium/drivers/nv30/nv30_state_stipple.c @@ -27,6 +27,7 @@ nv30_state_stipple_validate(struct nv30_context *nv30) } so_ref(so, &nv30->state.hw[NV30_STATE_STIPPLE]); + so_ref(NULL, &so); return TRUE; } diff --git a/src/gallium/drivers/nv30/nv30_state_viewport.c b/src/gallium/drivers/nv30/nv30_state_viewport.c index 951d40ebfdd..4b8300d21c4 100644 --- a/src/gallium/drivers/nv30/nv30_state_viewport.c +++ b/src/gallium/drivers/nv30/nv30_state_viewport.c @@ -58,6 +58,7 @@ nv30_state_viewport_validate(struct nv30_context *nv30) so_data (so, 1); so_ref(so, &nv30->state.hw[NV30_STATE_VIEWPORT]); + so_ref(NULL, &so); return TRUE; } diff --git a/src/gallium/drivers/nv30/nv30_vbo.c b/src/gallium/drivers/nv30/nv30_vbo.c index 2d6d48ac161..990a8763824 100644 --- a/src/gallium/drivers/nv30/nv30_vbo.c +++ b/src/gallium/drivers/nv30/nv30_vbo.c @@ -539,10 +539,13 @@ nv30_vbo_validate(struct nv30_context *nv30) so_data (vtxbuf, 0); so_ref(vtxbuf, &nv30->state.hw[NV30_STATE_VTXBUF]); + so_ref(NULL, &vtxbuf); nv30->state.dirty |= (1ULL << NV30_STATE_VTXBUF); so_ref(vtxfmt, &nv30->state.hw[NV30_STATE_VTXFMT]); + so_ref(NULL, &vtxfmt); nv30->state.dirty |= (1ULL << NV30_STATE_VTXFMT); so_ref(sattr, &nv30->state.hw[NV30_STATE_VTXATTR]); + so_ref(NULL, &sattr); nv30->state.dirty |= (1ULL << NV30_STATE_VTXATTR); return FALSE; } diff --git a/src/gallium/drivers/nv30/nv30_vertprog.c b/src/gallium/drivers/nv30/nv30_vertprog.c index d2627250570..eaf543b8f79 100644 --- a/src/gallium/drivers/nv30/nv30_vertprog.c +++ b/src/gallium/drivers/nv30/nv30_vertprog.c @@ -685,6 +685,7 @@ nv30_vertprog_validate(struct nv30_context *nv30) so_method(so, rankine, NV34TCL_VP_START_FROM_ID, 1); so_data (so, vp->exec->start); so_ref(so, &vp->so); + so_ref(NULL, &so); upload_code = TRUE; } -- cgit v1.2.3