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; }