From 19f7a3f01fb57b8b04304347d84c97edac3cdd23 Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Tue, 21 Sep 2021 09:06:45 +0200 Subject: [PATCH] radv: implement vkGetDeviceImageSparseMemoryRequirementsKHR() Signed-off-by: Samuel Pitoiset Reviewed-by: Bas Nieuwenhuizen Part-of: --- src/amd/vulkan/radv_formats.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/src/amd/vulkan/radv_formats.c b/src/amd/vulkan/radv_formats.c index adfcc5265ef..158ca1e311e 100644 --- a/src/amd/vulkan/radv_formats.c +++ b/src/amd/vulkan/radv_formats.c @@ -1792,6 +1792,33 @@ radv_GetImageSparseMemoryRequirements2(VkDevice _device, }; } +void +radv_GetDeviceImageSparseMemoryRequirementsKHR(VkDevice device, + const VkDeviceImageMemoryRequirementsKHR* pInfo, + uint32_t *pSparseMemoryRequirementCount, + VkSparseImageMemoryRequirements2 *pSparseMemoryRequirements) +{ + 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); + + VkImageSparseMemoryRequirementsInfo2 info2 = { + .sType = VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2, + .image = image, + }; + + radv_GetImageSparseMemoryRequirements2(device, &info2, pSparseMemoryRequirementCount, + pSparseMemoryRequirements); + + radv_DestroyImage(device, image, NULL); +} + void radv_GetPhysicalDeviceExternalBufferProperties( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalBufferInfo *pExternalBufferInfo,