From: Mike Blumenkrantz Date: Mon, 27 Apr 2020 17:44:08 +0000 (-0400) Subject: zink: explicitly unref old fb object when setting new one X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=acc56300dcc0b026d219181854ae475dfc0e926e;p=mesa.git zink: explicitly unref old fb object when setting new one this object has a ref from being created, and its lifetime is expected to be a single frame, so remove that initial ref when we expect to stop using it Closes: #2648 Reviewed-by: Erik Faye-Lund Part-of: --- diff --git a/src/gallium/drivers/zink/zink_context.c b/src/gallium/drivers/zink/zink_context.c index 32a0a1f82e6..4c2fe44da53 100644 --- a/src/gallium/drivers/zink/zink_context.c +++ b/src/gallium/drivers/zink/zink_context.c @@ -638,7 +638,11 @@ zink_set_framebuffer_state(struct pipe_context *pctx, util_copy_framebuffer_state(&ctx->fb_state, state); - struct zink_framebuffer *fb = create_framebuffer(ctx); + struct zink_framebuffer *fb = ctx->framebuffer; + /* explicitly unref previous fb to ensure it gets destroyed */ + if (fb) + zink_framebuffer_reference(screen, &fb, NULL); + fb = create_framebuffer(ctx); zink_framebuffer_reference(screen, &ctx->framebuffer, fb); zink_render_pass_reference(screen, &ctx->gfx_pipeline_state.render_pass, fb->rp);