From e2085aeaff25655e2cd91a232c229b064d91e63b Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Tue, 18 Jan 2022 13:06:55 -0500 Subject: [PATCH] zink: clamp tbo creation to maxTexelBufferElements for sparse buffers, the total buffer size will be huge, so this needs to only be the limit that the driver can support to avoid crashing or whatever cc: mesa-stable Reviewed-by: Dave Airlie Part-of: (cherry picked from commit 27d405dc2fddb5b814476a4e055358fd1efa7a4d) --- .pick_status.json | 2 +- src/gallium/drivers/zink/zink_context.c | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/.pick_status.json b/.pick_status.json index 80c2493cbd9..4154da22fbd 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -3460,7 +3460,7 @@ "description": "zink: clamp tbo creation to maxTexelBufferElements", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null }, diff --git a/src/gallium/drivers/zink/zink_context.c b/src/gallium/drivers/zink/zink_context.c index ad6a4f8f6a6..9bb924f1a5d 100644 --- a/src/gallium/drivers/zink/zink_context.c +++ b/src/gallium/drivers/zink/zink_context.c @@ -643,6 +643,9 @@ create_bvci(struct zink_context *ctx, struct zink_resource *res, enum pipe_forma assert(bvci.format); bvci.offset = offset; bvci.range = !offset && range == res->base.b.width0 ? VK_WHOLE_SIZE : range; + uint32_t clamp = util_format_get_blocksize(format) * screen->info.props.limits.maxTexelBufferElements; + if (bvci.range == VK_WHOLE_SIZE && res->base.b.width0 > clamp) + bvci.range = clamp; bvci.flags = 0; return bvci; }