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:
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user