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 <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4768>
This commit is contained in:
Mike Blumenkrantz
2020-04-27 13:44:08 -04:00
committed by Marge Bot
parent d3f0022a43
commit acc56300dc
+5 -1
View File
@@ -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);