From 6061609d0f4969331ec8be76b8ef56e6f1a04676 Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Tue, 21 Sep 2021 09:06:34 +0200 Subject: [PATCH] radv: implement vkGetDeviceImageMemoryRequirementsKHR() Signed-off-by: Samuel Pitoiset Reviewed-by: Bas Nieuwenhuizen Part-of: --- src/amd/vulkan/radv_device.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/amd/vulkan/radv_device.c b/src/amd/vulkan/radv_device.c index b06a4cf9503..8a79a9cdc21 100644 --- a/src/amd/vulkan/radv_device.c +++ b/src/amd/vulkan/radv_device.c @@ -5447,6 +5447,31 @@ radv_GetImageMemoryRequirements2(VkDevice _device, const VkImageMemoryRequiremen } } +void +radv_GetDeviceImageMemoryRequirementsKHR(VkDevice device, + const VkDeviceImageMemoryRequirementsKHR *pInfo, + VkMemoryRequirements2 *pMemoryRequirements) +{ + UNUSED VkResult result; + VkImage image; + + /* Determining the image size/alignment require to create a surface, which is complicated without + * creating an image. + * TODO: Avoid creating an image. + */ + result = radv_CreateImage(device, pInfo->pCreateInfo, NULL, &image); + assert(result == VK_SUCCESS); + + VkImageMemoryRequirementsInfo2 info2 = { + .sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2, + .image = image, + }; + + radv_GetImageMemoryRequirements2(device, &info2, pMemoryRequirements); + + radv_DestroyImage(device, image, NULL); +} + void radv_GetDeviceMemoryCommitment(VkDevice device, VkDeviceMemory memory, VkDeviceSize *pCommittedMemoryInBytes)