Mesa (main): radv: implement vkGetDeviceImageSparseMemoryRequirementsKHR()

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Mon Oct 11 09:14:45 UTC 2021


Module: Mesa
Branch: main
Commit: 19f7a3f01fb57b8b04304347d84c97edac3cdd23
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=19f7a3f01fb57b8b04304347d84c97edac3cdd23

Author: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Date:   Tue Sep 21 09:06:45 2021 +0200

radv: implement vkGetDeviceImageSparseMemoryRequirementsKHR()

Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13193>

---

 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,



More information about the mesa-commit mailing list