summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Blumenkrantz <michael.blumenkrantz@gmail.com>2022-04-07 09:16:55 -0400
committerMarge Bot <emma+marge@anholt.net>2022-04-07 19:22:14 +0000
commit1e3b96913ca370367ada5b8d6d38252a017b8316 (patch)
treefce97c8239b781b5c43054ff5860b8d58a5a67b4
parented07721d090eb0c4dceb65fba36b0ae054519d3c (diff)
zink: handle swapchain readbacks when a present is pending
if a present semaphore is pending, don't try to create another one Reviewed-by: Adam Jackson <ajax@redhat.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15784>
-rw-r--r--src/gallium/drivers/zink/ci/zink-lvp-fails.txt1
-rw-r--r--src/gallium/drivers/zink/zink_kopper.c2
2 files changed, 1 insertions, 2 deletions
diff --git a/src/gallium/drivers/zink/ci/zink-lvp-fails.txt b/src/gallium/drivers/zink/ci/zink-lvp-fails.txt
index 4e9f99ffc20..ebb8786b37e 100644
--- a/src/gallium/drivers/zink/ci/zink-lvp-fails.txt
+++ b/src/gallium/drivers/zink/ci/zink-lvp-fails.txt
@@ -8,7 +8,6 @@ glx@glx-tfp,Fail
spec@!opengl 1.0@gl-1.0-drawbuffer-modes,Fail
spec@!opengl 1.0@gl-1.0-front-invalidate-back,Fail
spec@arb_framebuffer_srgb@framebuffer-srgb,Crash
-spec@egl 1.4@egl-copy-buffers,Crash
spec@egl_chromium_sync_control@conformance,Fail
spec@egl_chromium_sync_control@conformance@eglGetSyncValuesCHROMIUM_msc_and_sbc_test,Fail
spec@egl_chromium_sync_control@conformance@eglGetSyncValuesCHROMIUM_ust_test,Fail
diff --git a/src/gallium/drivers/zink/zink_kopper.c b/src/gallium/drivers/zink/zink_kopper.c
index 63a3dad8067..3f10157ed09 100644
--- a/src/gallium/drivers/zink/zink_kopper.c
+++ b/src/gallium/drivers/zink/zink_kopper.c
@@ -661,7 +661,7 @@ zink_kopper_present_readback(struct zink_context *ctx, struct zink_resource *res
VkPipelineStageFlags mask = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT;
si.pWaitDstStageMask = &mask;
VkSemaphore acquire = zink_kopper_acquire_submit(screen, res);
- VkSemaphore present = zink_kopper_present(screen, res);
+ VkSemaphore present = res->obj->present ? res->obj->present : zink_kopper_present(screen, res);
if (screen->threaded)
util_queue_finish(&screen->flush_queue);
si.waitSemaphoreCount = !!acquire;