diff --git a/.pick_status.json b/.pick_status.json index 3f61408b9af..c9f395430c4 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -427,7 +427,7 @@ "description": "zink: explicitly disable reordering after restricted swapchain readback blits", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null }, diff --git a/src/gallium/drivers/zink/zink_blit.c b/src/gallium/drivers/zink/zink_blit.c index 3f87dff680d..bd611ee1ec1 100644 --- a/src/gallium/drivers/zink/zink_blit.c +++ b/src/gallium/drivers/zink/zink_blit.c @@ -452,8 +452,11 @@ zink_blit(struct pipe_context *pctx, } ctx->unordered_blitting = false; end: - if (needs_present_readback) + if (needs_present_readback) { + src->obj->unordered_read = false; + dst->obj->unordered_write = false; zink_kopper_present_readback(ctx, src); + } } /* similar to radeonsi */ diff --git a/src/gallium/drivers/zink/zink_context.c b/src/gallium/drivers/zink/zink_context.c index 929c0bbe04e..5c93f9b2f29 100644 --- a/src/gallium/drivers/zink/zink_context.c +++ b/src/gallium/drivers/zink/zink_context.c @@ -4410,8 +4410,16 @@ zink_copy_image_buffer(struct zink_context *ctx, struct zink_resource *dst, stru } zink_cmd_debug_marker_end(ctx, cmdbuf, marker); } - if (needs_present_readback) + if (needs_present_readback) { + if (buf2img) { + img->obj->unordered_write = false; + buf->obj->unordered_read = false; + } else { + img->obj->unordered_read = false; + buf->obj->unordered_write = false; + } zink_kopper_present_readback(ctx, img); + } if (ctx->oom_flush && !ctx->batch.in_rp && !ctx->unordered_blitting) flush_batch(ctx, false);