From e0dfe058c4c86e23569d82adc75369d5930d8a1a Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Mon, 6 Mar 2023 08:25:00 -0500 Subject: [PATCH] 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: --- src/gallium/drivers/zink/zink_context.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/gallium/drivers/zink/zink_context.c b/src/gallium/drivers/zink/zink_context.c index fa71aa7ba55..cbea68f2840 100644 --- a/src/gallium/drivers/zink/zink_context.c +++ b/src/gallium/drivers/zink/zink_context.c @@ -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); } } }