mesa/framebuffer: fix gl_framebuffer.resolve refcnt imbalance
authorPatrick Lerda <patrick9876@free.fr>
Thu, 2 Mar 2023 17:09:04 +0000 (18:09 +0100)
committerMarge Bot <emma+marge@anholt.net>
Fri, 3 Mar 2023 01:28:47 +0000 (01:28 +0000)
Indeed, "resolve" is not freed at the gl_framebuffer destroy
stage.

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

Fixes: f5bde99cbdd2 ("gallium: plumb resolve attachments through from frontends -> pipe_framebuffer_state")
Signed-off-by: Patrick Lerda <patrick9876@free.fr>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21663>

src/mesa/main/framebuffer.c

index 9df3012..f2d4a60 100644 (file)
@@ -203,6 +203,8 @@ _mesa_free_framebuffer_data(struct gl_framebuffer *fb)
    assert(fb);
    assert(fb->RefCount == 0);
 
+   pipe_resource_reference(&fb->resolve, NULL);
+
    simple_mtx_destroy(&fb->Mutex);
 
    for (unsigned i = 0; i < BUFFER_COUNT; i++) {