zink: only add deferred barrier on fb unbind when layout needs to change

this otherwise may have been a surface that was never drawn to or
already had its layout corrected, in which case a deferred barrier
is not only unnecessary, it might be broken

cc: mesa-stable

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21739>
This commit is contained in:
Mike Blumenkrantz 2023-03-06 08:25:00 -05:00 committed by Marge Bot
parent bc04e2daca
commit e0dfe058c4

View file

@ -3177,7 +3177,8 @@ unbind_fb_surface(struct zink_context *ctx, struct pipe_surface *surf, unsigned
check_resource_for_batch_ref(ctx, res);
if (res->sampler_bind_count[0]) {
update_res_sampler_layouts(ctx, res);
_mesa_set_add(ctx->need_barriers[0], res);
if (res->layout != VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL)
_mesa_set_add(ctx->need_barriers[0], res);
}
}
}