Skip to content

vkd3d/command.c: Use proper layout when copying buffers to/from images

those were triggering validation errors (notably, when trying to run cyberpunk 2077), e.g.:

VUID-vkCmdCopyBufferToImage-dstImageLayout-00180(ERROR / SPEC): msgNum: 2078275855 - Validation Error: [ VUID-vkCmdCopyBufferToImage-dstImageLayout-00180 ] Object 0: handle = 0x7f0ab4309f00, type = VK_OBJECT_TYPE_COMMAND_BUFFER; Object 1: handle = 0x661bcf0000003845, type = VK_OBJECT_TYPE_IMAGE; | MessageID = 0x7bdff90f | vkCmdCopyBufferToImage(): dstImage Cannot use VkImage 0x661bcf0000003845[] (layer=0 mip=0) with specific layout VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL that doesn't match the previous known layout VK_IMAGE_LAYOUT_GENERAL. The Vulkan spec states: dstImageLayout must specify the layout of the image subresources of dstImage specified in pRegions at the time this command is executed on a VkDevice (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-vkCmdCopyBufferToImage-dstImageLayout-00180)

i am new to d3d12 and vkd3d so i'm unsure if this is the correct fix, feedback welcome!

Merge request reports

Loading