From ace0b16e8e6ced3b5727b62e49468d66093363e6 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Wed, 31 Mar 2021 15:35:11 -0400 Subject: [PATCH] zink: use VkSubresourceLayout::depthPitch as layer_stride when mapping 3D imgs this is not only more correct according to vk spec, it avoids having a 0-sized layer_stride, which totally breaks the transfer map Reviewed-by: Dave Airlie Part-of: --- src/gallium/drivers/zink/zink_resource.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/gallium/drivers/zink/zink_resource.c b/src/gallium/drivers/zink/zink_resource.c index c7f19ca8449..270567691e6 100644 --- a/src/gallium/drivers/zink/zink_resource.c +++ b/src/gallium/drivers/zink/zink_resource.c @@ -990,7 +990,10 @@ zink_transfer_map(struct pipe_context *pctx, VkSubresourceLayout srl; vkGetImageSubresourceLayout(screen->dev, res->obj->image, &isr, &srl); trans->base.b.stride = srl.rowPitch; - trans->base.b.layer_stride = srl.arrayPitch; + if (res->base.b.target == PIPE_TEXTURE_3D) + trans->base.b.layer_stride = srl.depthPitch; + else + trans->base.b.layer_stride = srl.arrayPitch; trans->offset = srl.offset; trans->depthPitch = srl.depthPitch; const struct util_format_description *desc = util_format_description(res->base.b.format);