Giovanni Mascellani (@giomasce) commented about libs/vkd3d/resource.c:
+ unsigned int subresource_count; + + subresource_count = d3d12_resource_desc_get_sub_resource_count(&resource->desc); + + if (d3d12_resource_is_buffer(resource)) + { + if (!(resource->tiles.subresources = vkd3d_calloc(subresource_count, sizeof(*resource->tiles.subresources)))) + { + ERR("Failed to allocate subresource info array.\n"); + return false; + } + + tile_info = &resource->tiles.subresources[0]; + tile_info->offset = 0; + tile_info->extent.width = align(resource->desc.Width, D3D12_TILED_RESOURCE_TILE_SIZE_IN_BYTES) + / D3D12_TILED_RESOURCE_TILE_SIZE_IN_BYTES; Maybe I'm missing something, but it seems we're assuming that buffers always have a residency granularity of 64kB, while that's not mandated by Vulkan. `vkGetBufferMemoryRequirement()` should be used to check it, as far as I can understand.
-- https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/267#note_40145