Giovanni Mascellani (@giomasce) commented about libs/vkd3d/resource.c:
+ } + else + { + VK_CALL(vkGetImageMemoryRequirements(device->vk_device, resource->u.vk_image, &requirements)); + if (requirements.alignment > D3D12_TILED_RESOURCE_TILE_SIZE_IN_BYTES) + FIXME("Vulkan device tile size is greater than the standard D3D12 tile size.\n"); + + requirement_count = 0; + VK_CALL(vkGetImageSparseMemoryRequirements(device->vk_device, resource->u.vk_image, &requirement_count, NULL)); + if (!(sparse_requirements_array = vkd3d_calloc(requirement_count, sizeof(*sparse_requirements_array)))) + { + ERR("Failed to allocate sparse requirements array.\n"); + return false; + } + VK_CALL(vkGetImageSparseMemoryRequirements(device->vk_device, resource->u.vk_image, + &requirement_count, sparse_requirements_array)); Not sure if you consider array already supported, but if so I think you should check that Vulkan doesn't use a single mip tail, which AFAICT is not supported by D3D12. Also, `residencyAlignedMipSize` should probably be used to determine the supported tiled resource tier.
-- https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/267#note_40147