lima: fix refcnt imbalance related to framebuffer
authorPatrick Lerda <patrick9876@free.fr>
Wed, 29 Mar 2023 19:55:47 +0000 (21:55 +0200)
committerMarge Bot <emma+marge@anholt.net>
Mon, 17 Apr 2023 21:44:15 +0000 (21:44 +0000)
Indeed, the current framebuffer hardcoded cleanup
is not sufficient.

For instance, this issue is triggered with:
"piglit/bin/fbo-depthstencil clear default_fb -samples=2 -auto"
while setting GALLIUM_REFCNT_LOG=refcnt.log.

cc: mesa-stable

Signed-off-by: Patrick Lerda <patrick9876@free.fr>
Reviewed-by: Erico Nunes <nunes.erico@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22234>

src/gallium/drivers/lima/lima_context.c
src/gallium/drivers/lima/lima_state.c

index d4f1552..802f308 100644 (file)
@@ -147,6 +147,7 @@ lima_context_destroy(struct pipe_context *pctx)
 
    lima_program_fini(ctx);
    lima_state_fini(ctx);
+   util_unreference_framebuffer_state(&ctx->framebuffer.base);
 
    if (ctx->blitter)
       util_blitter_destroy(ctx->blitter);
index badd815..a7dc877 100644 (file)
@@ -473,7 +473,4 @@ lima_state_fini(struct lima_context *ctx)
 
    util_set_vertex_buffers_mask(so->vb, &so->enabled_mask, NULL,
                                 0, 0, ARRAY_SIZE(so->vb), false);
-
-   pipe_surface_reference(&ctx->framebuffer.base.cbufs[0], NULL);
-   pipe_surface_reference(&ctx->framebuffer.base.zsbuf, NULL);
 }