Module: Mesa Branch: main Commit: 6b204c616223b2742e120218676f9d5575dd4cc0 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=6b204c616223b2742e120218676f9d5575dd4cc0
Author: Mike Blumenkrantz <[email protected]> Date: Mon Jun 19 11:05:13 2023 -0400 zink: acquire persistently bound swapchain descriptors before setting usage if a swapchain image is bound as a sampler across batches then it needs to be acquired again before it is used cc: mesa-stable Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23729> --- src/gallium/drivers/zink/zink_context.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/gallium/drivers/zink/zink_context.c b/src/gallium/drivers/zink/zink_context.c index 505ef0208e2..0fc845fd9f6 100644 --- a/src/gallium/drivers/zink/zink_context.c +++ b/src/gallium/drivers/zink/zink_context.c @@ -3115,6 +3115,11 @@ update_resource_refs_for_stage(struct zink_context *ctx, gl_shader_stage stage) continue; bool is_buffer = res->obj->is_buffer; bool is_write = zink_resource_access_is_write(get_access_flags_for_binding(ctx, i, stage, j)); + if (zink_is_swapchain(res)) { + if (!zink_kopper_acquire(ctx, res, UINT64_MAX)) + /* technically this is a failure condition, but there's no safe way out */ + continue; + } zink_batch_resource_usage_set(batch, res, is_write, is_buffer); if (is_write || !res->obj->is_buffer) res->obj->unordered_read = res->obj->unordered_write = false;
