diff --git a/src/util/indices/u_primconvert.c b/src/util/indices/u_primconvert.c index 1ee4f39e786..dcbc9052dac 100644 --- a/src/util/indices/u_primconvert.c +++ b/src/util/indices/u_primconvert.c @@ -301,7 +301,7 @@ util_primconvert_draw_vbo(struct primconvert_context *pc, unsigned draw_count = 0; struct u_indirect_params *new_draws = util_draw_indirect_read(pc->pipe, info, indirect, &draw_count); if (!new_draws) - return; + goto cleanup; for (unsigned i = 0; i < draw_count; i++) util_primconvert_draw_single_vbo(pc, &new_draws[i].info, drawid_offset + i, &new_draws[i].draw); @@ -315,6 +315,12 @@ util_primconvert_draw_vbo(struct primconvert_context *pc, drawid++; } } + +cleanup: + if (info->take_index_buffer_ownership) { + struct pipe_resource *buffer = info->index.resource; + pipe_resource_reference(&buffer, NULL); + } } void