zink: try to prune resources from barrier jit on fb unbind
authorMike Blumenkrantz <michael.blumenkrantz@gmail.com>
Fri, 7 Apr 2023 21:06:45 +0000 (17:06 -0400)
committerMarge Bot <emma+marge@anholt.net>
Mon, 10 Apr 2023 14:44:13 +0000 (14:44 +0000)
if a resource has no binds remaining then it should not remain in
the queue for barrier updates on the next draw

cc: mesa-stable

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22398>

src/gallium/drivers/zink/zink_context.c

index 446cf1b..144ce2e 100644 (file)
@@ -3252,6 +3252,8 @@ unbind_fb_surface(struct zink_context *ctx, struct pipe_surface *surf, unsigned
       ctx->rp_changed = true;
    }
    res->fb_bind_count--;
+   if (!res->fb_bind_count && !res->bind_count[0])
+      _mesa_set_remove_key(ctx->need_barriers[0], res);
    unsigned feedback_loops = ctx->feedback_loops;
    if (ctx->feedback_loops & BITFIELD_BIT(idx)) {
       ctx->dynamic_fb.attachments[idx].imageLayout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL;