From 0dfc0767437bb5a17c237bfb7ba28fd7c2368360 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Thu, 8 Apr 2021 14:52:47 -0400 Subject: [PATCH] zink: only unmap PIPE_MAP_ONCE in synchronous mode this flag cannot be used to infer that a transfer_map call will be matched by a transfer_unmap call when tc reordering is active fixes #4600 Reviewed-by: Erik Faye-Lund Part-of: --- src/gallium/drivers/zink/zink_resource.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gallium/drivers/zink/zink_resource.c b/src/gallium/drivers/zink/zink_resource.c index 5d3ab47b9d1..a75fc1aae64 100644 --- a/src/gallium/drivers/zink/zink_resource.c +++ b/src/gallium/drivers/zink/zink_resource.c @@ -1083,7 +1083,7 @@ zink_transfer_unmap(struct pipe_context *pctx, zink_transfer_flush_region(pctx, ptrans, &ptrans->box); } - if (trans->base.b.usage & PIPE_MAP_ONCE && !trans->staging_res) + if (trans->base.b.usage & PIPE_MAP_ONCE && !trans->staging_res && !screen->threaded) unmap_resource(screen, res); if ((trans->base.b.usage & PIPE_MAP_PERSISTENT) && !(trans->base.b.usage & PIPE_MAP_COHERENT)) res->obj->persistent_maps--;