diff options
author | Mike Blumenkrantz <michael.blumenkrantz@gmail.com> | 2022-04-07 09:16:55 -0400 |
---|---|---|
committer | Marge Bot <emma+marge@anholt.net> | 2022-04-07 19:22:14 +0000 |
commit | 1e3b96913ca370367ada5b8d6d38252a017b8316 (patch) | |
tree | fce97c8239b781b5c43054ff5860b8d58a5a67b4 | |
parent | ed07721d090eb0c4dceb65fba36b0ae054519d3c (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.txt | 1 | ||||
-rw-r--r-- | src/gallium/drivers/zink/zink_kopper.c | 2 |
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; |