From a2a7d78c270950325d6293425fd73717305506cc Mon Sep 17 00:00:00 2001 From: David McCloskey Date: Wed, 28 Jul 2021 10:09:20 -0700 Subject: [PATCH] vkd3d: Fixing CopyTextureRegion going out of bounds when src_box is null. Signed-off-by: David McCloskey --- libs/vkd3d/command.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/libs/vkd3d/command.c b/libs/vkd3d/command.c index 1f131296..9054f936 100644 --- a/libs/vkd3d/command.c +++ b/libs/vkd3d/command.c @@ -5829,8 +5829,12 @@ static void vk_image_copy_from_d3d12(VkImageCopy *image_copy, } else { - unsigned int miplevel = image_copy->srcSubresource.mipLevel; - vk_extent_3d_from_d3d12_miplevel(&image_copy->extent, src_desc, miplevel); + VkExtent3D srcExtent, dstExtent; + vk_extent_3d_from_d3d12_miplevel(&srcExtent, src_desc, image_copy->srcSubresource.mipLevel); + vk_extent_3d_from_d3d12_miplevel(&dstExtent, dst_desc, image_copy->dstSubresource.mipLevel); + image_copy->extent.width = min(dst_x + srcExtent.width, dstExtent.width) - dst_x; + image_copy->extent.height = min(dst_y + srcExtent.height, dstExtent.height) - dst_y; + image_copy->extent.depth = min(dst_z + srcExtent.depth, dstExtent.depth) - dst_z; } }