From fb2a08bb01cc059ae1e00e100365a0e11e260dae Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Tue, 5 Apr 2022 15:02:29 -0400 Subject: [PATCH] zink: update samplerview layouts for zs attachments during renderpass prep this interaction might require layout changes Reviewed-by: Dave Airlie Part-of: --- src/gallium/drivers/zink/zink_context.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/gallium/drivers/zink/zink_context.c b/src/gallium/drivers/zink/zink_context.c index 4ff56b3aa45..dcec51228cc 100644 --- a/src/gallium/drivers/zink/zink_context.c +++ b/src/gallium/drivers/zink/zink_context.c @@ -2107,6 +2107,16 @@ prep_fb_attachment(struct zink_context *ctx, struct zink_surface *surf, unsigned VkImageLayout layout = zink_render_pass_attachment_get_barrier_info(ctx->gfx_pipeline_state.render_pass, i, &pipeline, &access); zink_resource_image_barrier(ctx, res, layout, access, pipeline); + if (i == ctx->fb_state.nr_cbufs && res->bind_count[0] && res->bind_count[0] != res->image_bind_count[0]) { + unsigned find = res->bind_count[0] - res->image_bind_count[0]; + for (unsigned i = 0; i < PIPE_SHADER_COMPUTE; i++) { + u_foreach_bit(slot, res->sampler_binds[i]) { + update_descriptor_state_sampler(ctx, i, slot, res); + find--; + if (!find) break; + } + } + } return surf->image_view; }