lavapipe: fix maint4 vkGetDeviceImageMemoryRequirements

Otherwise plane aspect and dedicated alloc req are missed.

Fixes: 987e8a5a0c ("lavapipe: implement vkGetDevice*MemoryRequirements")
Reviewed-by: Lucas Fryzek <lfryzek@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36335>
This commit is contained in:
Yiwei Zhang
2025-07-23 12:48:48 -07:00
committed by Marge Bot
parent e309f1ad45
commit 549f6cdb17

View File

@@ -2189,8 +2189,22 @@ VKAPI_ATTR void VKAPI_CALL lvp_GetDeviceImageMemoryRequirements(
if (lvp_CreateImage(_device, pInfo->pCreateInfo, NULL, &_image) != VK_SUCCESS)
return;
LVP_FROM_HANDLE(lvp_image, image, _image);
pMemoryRequirements->memoryRequirements.size = image->size;
pMemoryRequirements->memoryRequirements.alignment = image->alignment;
/* Per spec VUs of VkImageMemoryRequirementsInfo2 */
const bool need_plane_info =
image->vk.create_flags & VK_IMAGE_CREATE_DISJOINT_BIT &&
(image->plane_count > 1 ||
image->vk.tiling == VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT);
const VkImagePlaneMemoryRequirementsInfo plane_info = {
.sType = VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO,
.planeAspect = pInfo->planeAspect,
};
const VkImageMemoryRequirementsInfo2 base_info = {
.sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2,
.pNext = need_plane_info ? &plane_info : NULL,
.image = _image,
};
lvp_GetImageMemoryRequirements2(_device, &base_info, pMemoryRequirements);
lvp_DestroyImage(_device, _image, NULL);
}