zink: ignore unacquired swapchain images during end-of-frame flush

> Use of a presentable image must: occur only after the image is returned by flink:vkAcquireNextImageKHR, and before it is released by flink:vkQueuePresentKHR.
> This includes transitioning the image layout and rendering commands.

fixes #10005

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25787>
This commit is contained in:
Mike Blumenkrantz
2023-10-18 08:15:18 -04:00
committed by Marge Bot
parent 6cfb40a338
commit 084e22cfd8

View File

@@ -3776,7 +3776,7 @@ zink_flush(struct pipe_context *pctx,
#ifdef HAVE_RENDERDOC_APP_H
p_atomic_inc(&screen->renderdoc_frame);
#endif
if (ctx->needs_present && ctx->needs_present->obj->image &&
if (ctx->needs_present && ctx->needs_present->obj->dt_idx != UINT32_MAX &&
zink_is_swapchain(ctx->needs_present)) {
zink_kopper_readback_update(ctx, ctx->needs_present);
screen->image_barrier(ctx, ctx->needs_present, VK_IMAGE_LAYOUT_PRESENT_SRC_KHR, 0, VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT);