From dc07e0d3feaaf5390db659bd999f1a97fa89ff64 Mon Sep 17 00:00:00 2001 From: Patrick Lerda Date: Fri, 28 Apr 2023 12:52:08 +0200 Subject: [PATCH] mesa/st: fix refcnt imbalance related to st_feedback_draw_vbo() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This issue is happening on radeonsi. The reference was allocated via _mesa_get_bufferobj_reference() with setup_arrays(). The same reference was never freed. For instance, this issue is triggered on radeonsi with "piglit/bin/gl-1.0-rendermode-feedback -auto -fbo" while setting GALLIUM_REFCNT_LOG=refcnt.log. Fixes: ff8c2a1748b9 ("mesa/bufferobj: rename bufferobj functions to be more consistent.") Signed-off-by: Patrick Lerda Reviewed-by: Marek Olšák Part-of: --- src/mesa/state_tracker/st_draw_feedback.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/mesa/state_tracker/st_draw_feedback.c b/src/mesa/state_tracker/st_draw_feedback.c index b109e5a7cb6..5b5420e6bbb 100644 --- a/src/mesa/state_tracker/st_draw_feedback.c +++ b/src/mesa/state_tracker/st_draw_feedback.c @@ -462,6 +462,8 @@ st_feedback_draw_vbo(struct gl_context *ctx, if (vb_transfer[buf]) pipe_buffer_unmap(pipe, vb_transfer[buf]); draw_set_mapped_vertex_buffer(draw, buf, NULL, 0); + if (!vbuffers[buf].is_user_buffer) + pipe_resource_reference(&vbuffers[buf].buffer.resource, NULL); } draw_set_vertex_buffers(draw, 0, 0, num_vbuffers, NULL);