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;

Reply via email to