From 2b717f01f711f4326c956c72a4515871a0987742 Mon Sep 17 00:00:00 2001 From: Pierre-Eric Pelloux-Prayer Date: Fri, 31 Mar 2023 16:57:08 +0200 Subject: [PATCH] mesa: fix invalid index_bo refcounting MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit If take_index_buffer_ownership is true, then we should reserve enough references of index_bo or we'll get an underflow later. Fixes: 819627041e7 ("mesa: set pipe_draw_info::index::resource directly and remove gl_bo") Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/8747 Reviewed-by: Mike Blumenkrantz Reviewed-by: Marek Olšák Part-of: --- src/mesa/main/draw.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/mesa/main/draw.c b/src/mesa/main/draw.c index e58e65d..8349243 100644 --- a/src/mesa/main/draw.c +++ b/src/mesa/main/draw.c @@ -2534,6 +2534,11 @@ _mesa_MultiDrawElementsIndirect(GLenum mode, GLenum type, /* Fast path for u_threaded_context to eliminate atomics. */ info.index.resource = _mesa_get_bufferobj_reference(ctx, index_bo); info.take_index_buffer_ownership = true; + /* Increase refcount so be able to use take_index_buffer_ownership with + * multiple draws. + */ + if (primcount > 1 && info.index.resource) + p_atomic_add(&info.index.resource->reference.count, primcount - 1); } else { info.index.resource = index_bo->buffer; } -- 2.7.4