From 48e85642357b3b1363939f59925391e21d4ed736 Mon Sep 17 00:00:00 2001 From: Iago Toral Quiroga Date: Thu, 25 Aug 2022 09:56:53 +0200 Subject: [PATCH] v3dv: implement vkGetDeviceBufferMemoryRequirementsKHR MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Added with VK_KHR_maintenance4. Reviewed-by: Alejandro PiƱeiro Part-of: --- src/broadcom/vulkan/v3dv_device.c | 33 +++++++++++++++++++++---------- 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/src/broadcom/vulkan/v3dv_device.c b/src/broadcom/vulkan/v3dv_device.c index 7ffef1d1621..737dc3f9a3f 100644 --- a/src/broadcom/vulkan/v3dv_device.c +++ b/src/broadcom/vulkan/v3dv_device.c @@ -2562,6 +2562,16 @@ v3dv_BindImageMemory2(VkDevice _device, return VK_SUCCESS; } +static void +buffer_init(struct v3dv_device *device, + const VkBufferCreateInfo *pCreateInfo, + struct v3dv_buffer *buffer) +{ + buffer->size = pCreateInfo->size; + buffer->usage = pCreateInfo->usage; + buffer->alignment = V3D_NON_COHERENT_ATOM_SIZE; +} + static void get_buffer_memory_requirements(struct v3dv_buffer *buffer, VkMemoryRequirements2 *pMemoryRequirements) @@ -2597,6 +2607,19 @@ v3dv_GetBufferMemoryRequirements2(VkDevice device, get_buffer_memory_requirements(buffer, pMemoryRequirements); } +VKAPI_ATTR void VKAPI_CALL +v3dv_GetDeviceBufferMemoryRequirementsKHR( + VkDevice _device, + const VkDeviceBufferMemoryRequirements *pInfo, + VkMemoryRequirements2 *pMemoryRequirements) +{ + V3DV_FROM_HANDLE(v3dv_device, device, _device); + + struct v3dv_buffer buffer = { 0 }; + buffer_init(device, pInfo->pCreateInfo, &buffer); + get_buffer_memory_requirements(&buffer, pMemoryRequirements); +} + static void bind_buffer_memory(const VkBindBufferMemoryInfo *info) { @@ -2628,16 +2651,6 @@ v3dv_BindBufferMemory2(VkDevice device, return VK_SUCCESS; } -static void -buffer_init(struct v3dv_device *device, - const VkBufferCreateInfo *pCreateInfo, - struct v3dv_buffer *buffer) -{ - buffer->size = pCreateInfo->size; - buffer->usage = pCreateInfo->usage; - buffer->alignment = V3D_NON_COHERENT_ATOM_SIZE; -} - VKAPI_ATTR VkResult VKAPI_CALL v3dv_CreateBuffer(VkDevice _device, const VkBufferCreateInfo *pCreateInfo,