diff --git a/.pick_status.json b/.pick_status.json index f0fc5fb40cb..5f784e55b2f 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -760,7 +760,7 @@ "description": "mesa: fix a VBO buffer reference leak in _mesa_bind_vertex_buffer", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "03ba57c6c53214b19aa0fdb66c680f2cadc3bbd9" }, diff --git a/src/mesa/main/varray.c b/src/mesa/main/varray.c index a74bbcbe0a0..d09eb086d59 100644 --- a/src/mesa/main/varray.c +++ b/src/mesa/main/varray.c @@ -304,6 +304,12 @@ _mesa_bind_vertex_buffer(struct gl_context *ctx, } vao->NonDefaultStateMask |= BITFIELD_BIT(index); + } else { + /* Since this function owns the vbo reference, it must release it if it + * doesn't use it. + */ + if (take_vbo_ownership) + _mesa_reference_buffer_object(ctx, &vbo, NULL); } }