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.