nvfx,nv50: pipe_reference the constant buffers
authorChristoph Bumiller <e0425955@student.tuwien.ac.at>
Sat, 8 Jan 2011 14:40:14 +0000 (15:40 +0100)
committerChristoph Bumiller <e0425955@student.tuwien.ac.at>
Sat, 8 Jan 2011 14:40:14 +0000 (15:40 +0100)
src/gallium/drivers/nv50/nv50_state.c
src/gallium/drivers/nvfx/nvfx_state.c

index d97566ed7cf98faa8f17b7ba056349709f0a112b..b4eda0f617d55b276beaeb8e92a44bb2f73d6004 100644 (file)
@@ -721,17 +721,16 @@ nv50_set_constant_buffer(struct pipe_context *pipe, uint shader, uint index,
        struct nv50_context *nv50 = nv50_context(pipe);
 
        if (shader == PIPE_SHADER_VERTEX) {
-               nv50->constbuf[PIPE_SHADER_VERTEX] = buf;
                nv50->dirty |= NV50_NEW_VERTPROG_CB;
        } else
        if (shader == PIPE_SHADER_FRAGMENT) {
-               nv50->constbuf[PIPE_SHADER_FRAGMENT] = buf;
                nv50->dirty |= NV50_NEW_FRAGPROG_CB;
-       } else
-       if (shader == PIPE_SHADER_GEOMETRY) {
-               nv50->constbuf[PIPE_SHADER_GEOMETRY] = buf;
+       } else {
+               assert(shader == PIPE_SHADER_GEOMETRY);
                nv50->dirty |= NV50_NEW_GEOMPROG_CB;
        }
+
+       pipe_resource_reference(&nv50->constbuf[shader], buf);
 }
 
 static void
index 54619037d82844529e43718b3398c83c750e41c2..f3dcb205c61b933c97cc78c06f504fa0f5fb0fe5 100644 (file)
@@ -304,7 +304,7 @@ nvfx_set_constant_buffer(struct pipe_context *pipe, uint shader, uint index,
 {
        struct nvfx_context *nvfx = nvfx_context(pipe);
 
-       nvfx->constbuf[shader] = buf;
+       pipe_resource_reference(&nvfx->constbuf[shader], buf);
        nvfx->constbuf_nr[shader] = buf ? (buf->width0 / (4 * sizeof(float))) : 0;
 
        if (shader == PIPE_SHADER_VERTEX) {