Mesa (main): radv: implement vkGetDeviceBufferMemoryRequirementsKHR()

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


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

Author: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Date:   Tue Sep 21 08:57:05 2021 +0200

radv: implement vkGetDeviceBufferMemoryRequirementsKHR()

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_device.c | 36 ++++++++++++++++++++++++++++--------
 1 file changed, 28 insertions(+), 8 deletions(-)

diff --git a/src/amd/vulkan/radv_device.c b/src/amd/vulkan/radv_device.c
index 362445be5aa..b06a4cf9503 100644
--- a/src/amd/vulkan/radv_device.c
+++ b/src/amd/vulkan/radv_device.c
@@ -5365,23 +5365,22 @@ radv_InvalidateMappedMemoryRanges(VkDevice _device, uint32_t memoryRangeCount,
    return VK_SUCCESS;
 }
 
-void
-radv_GetBufferMemoryRequirements2(VkDevice _device, const VkBufferMemoryRequirementsInfo2 *pInfo,
-                                  VkMemoryRequirements2 *pMemoryRequirements)
+static void
+radv_get_buffer_memory_requirements(struct radv_device *device,
+                                    VkDeviceSize size,
+                                    VkBufferCreateFlags flags,
+                                    VkMemoryRequirements2 *pMemoryRequirements)
 {
-   RADV_FROM_HANDLE(radv_device, device, _device);
-   RADV_FROM_HANDLE(radv_buffer, buffer, pInfo->buffer);
-
    pMemoryRequirements->memoryRequirements.memoryTypeBits =
       (1u << device->physical_device->memory_properties.memoryTypeCount) - 1;
 
-   if (buffer->flags & VK_BUFFER_CREATE_SPARSE_BINDING_BIT)
+   if (flags & VK_BUFFER_CREATE_SPARSE_BINDING_BIT)
       pMemoryRequirements->memoryRequirements.alignment = 4096;
    else
       pMemoryRequirements->memoryRequirements.alignment = 16;
 
    pMemoryRequirements->memoryRequirements.size =
-      align64(buffer->size, pMemoryRequirements->memoryRequirements.alignment);
+      align64(size, pMemoryRequirements->memoryRequirements.alignment);
 
    vk_foreach_struct(ext, pMemoryRequirements->pNext)
    {
@@ -5398,6 +5397,27 @@ radv_GetBufferMemoryRequirements2(VkDevice _device, const VkBufferMemoryRequirem
    }
 }
 
+void
+radv_GetBufferMemoryRequirements2(VkDevice _device, const VkBufferMemoryRequirementsInfo2 *pInfo,
+                                  VkMemoryRequirements2 *pMemoryRequirements)
+{
+   RADV_FROM_HANDLE(radv_device, device, _device);
+   RADV_FROM_HANDLE(radv_buffer, buffer, pInfo->buffer);
+
+   radv_get_buffer_memory_requirements(device, buffer->size, buffer->flags, pMemoryRequirements);
+}
+
+void
+radv_GetDeviceBufferMemoryRequirementsKHR(VkDevice _device,
+                                          const VkDeviceBufferMemoryRequirementsKHR* pInfo,
+                                          VkMemoryRequirements2 *pMemoryRequirements)
+{
+   RADV_FROM_HANDLE(radv_device, device, _device);
+
+   radv_get_buffer_memory_requirements(device, pInfo->pCreateInfo->size, pInfo->pCreateInfo->flags,
+                                       pMemoryRequirements);
+}
+
 void
 radv_GetImageMemoryRequirements2(VkDevice _device, const VkImageMemoryRequirementsInfo2 *pInfo,
                                  VkMemoryRequirements2 *pMemoryRequirements)



More information about the mesa-commit mailing list