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>
This commit is contained in:
Mike Blumenkrantz 2022-04-07 09:16:55 -04:00 committed by Marge Bot
parent ed07721d09
commit 1e3b96913c
2 changed files with 1 additions and 2 deletions

View file

@ -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

View file

@ -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;