summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Blumenkrantz <michael.blumenkrantz@gmail.com>2023-05-03 13:16:25 -0400
committerEric Engestrom <eric@engestrom.ch>2023-05-10 12:40:10 +0100
commit752c2f66432bd4efe7699cab718a6d379358b320 (patch)
tree86b46b6bbad24b83eac8b80996bd2a21629deb8d
parentbaba0ca1f672bf71cc69c1dc5ec696c5c5e5a4ef (diff)
downloadmesa-752c2f66432bd4efe7699cab718a6d379358b320.tar.gz
zink: block more flushes during unordered blits
Fixes: 89aa3635932 ("zink: block oom flushes during unordered blits") Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22931> (cherry picked from commit c6fd58802784c453ea40818bfe1af3bb6e28b8b1)
-rw-r--r--.pick_status.json2
-rw-r--r--src/gallium/drivers/zink/zink_context.c4
2 files changed, 3 insertions, 3 deletions
diff --git a/.pick_status.json b/.pick_status.json
index ab540ea7699..71f782275fb 100644
--- a/.pick_status.json
+++ b/.pick_status.json
@@ -130,7 +130,7 @@
"description": "zink: block more flushes during unordered blits",
"nominated": true,
"nomination_type": 1,
- "resolution": 0,
+ "resolution": 1,
"main_sha": null,
"because_sha": "89aa36359328ea48fa29be8dd439dd87043eaa03"
},
diff --git a/src/gallium/drivers/zink/zink_context.c b/src/gallium/drivers/zink/zink_context.c
index 04085fab7e6..e26cb658ec5 100644
--- a/src/gallium/drivers/zink/zink_context.c
+++ b/src/gallium/drivers/zink/zink_context.c
@@ -4411,7 +4411,7 @@ zink_copy_image_buffer(struct zink_context *ctx, struct zink_resource *dst, stru
if (needs_present_readback)
zink_kopper_present_readback(ctx, img);
- if (ctx->oom_flush && !ctx->batch.in_rp)
+ if (ctx->oom_flush && !ctx->batch.in_rp && !ctx->unordered_blitting)
flush_batch(ctx, false);
}
@@ -4541,7 +4541,7 @@ zink_resource_copy_region(struct pipe_context *pctx,
zink_copy_buffer(ctx, dst, src, dstx, src_box->x, src_box->width);
} else
zink_copy_image_buffer(ctx, dst, src, dst_level, dstx, dsty, dstz, src_level, src_box, 0);
- if (ctx->oom_flush && !ctx->batch.in_rp)
+ if (ctx->oom_flush && !ctx->batch.in_rp && !ctx->unordered_blitting)
flush_batch(ctx, false);
}