diff options
author | Mike Blumenkrantz <[email protected]> | 2020-04-27 13:44:08 -0400 |
---|---|---|
committer | Marge Bot <[email protected]> | 2020-04-27 21:55:51 +0000 |
commit | acc56300dcc0b026d219181854ae475dfc0e926e (patch) | |
tree | faaab3541478aae39c0de06ebcd37fa4583cf42a /src | |
parent | d3f0022a43a726af60bcd541162f8005610ba3ff (diff) |
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 <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4768>
Diffstat (limited to 'src')
-rw-r--r-- | src/gallium/drivers/zink/zink_context.c | 6 |
1 files changed, 5 insertions, 1 deletions
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); |