From 2b1d12b104eac1bf329216f4262d17a4fa52d0bf Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Wed, 28 Feb 2024 09:28:04 -0500 Subject: [PATCH] zink: force max buffer alignment on return ptrs for mapped staging buffers this guarantees the alignment matches what the API expects fixes KHR-GL4*.map_buffer_alignment.functional on nvk cc: mesa-stable 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 395de69e1cf..42493cd8e9b 100644 --- a/src/gallium/drivers/zink/zink_resource.c +++ b/src/gallium/drivers/zink/zink_resource.c @@ -2363,7 +2363,7 @@ zink_buffer_map(struct pipe_context *pctx, /* any read, non-HV write, or unmappable that reaches this point needs staging */ if ((usage & PIPE_MAP_READ) || !res->obj->host_visible || res->base.b.flags & PIPE_RESOURCE_FLAG_DONT_MAP_DIRECTLY) { overwrite: - trans->offset = box->x % screen->info.props.limits.minMemoryMapAlignment; + trans->offset = box->x % MAX2(screen->info.props.limits.minMemoryMapAlignment, 1 << MIN_SLAB_ORDER); trans->staging_res = pipe_buffer_create(&screen->base, PIPE_BIND_LINEAR, PIPE_USAGE_STAGING, box->width + trans->offset); if (!trans->staging_res) goto fail;