aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMike Blumenkrantz <[email protected]>2020-04-27 13:44:08 -0400
committerMarge Bot <[email protected]>2020-04-27 21:55:51 +0000
commitacc56300dcc0b026d219181854ae475dfc0e926e (patch)
treefaaab3541478aae39c0de06ebcd37fa4583cf42a /src
parentd3f0022a43a726af60bcd541162f8005610ba3ff (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.c6
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);