v3dv: implement vkBindBufferMemory
authorIago Toral Quiroga <itoral@igalia.com>
Mon, 9 Dec 2019 09:40:32 +0000 (10:40 +0100)
committerMarge Bot <eric+marge@anholt.net>
Tue, 13 Oct 2020 21:21:25 +0000 (21:21 +0000)
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766>

src/broadcom/vulkan/v3dv_device.c
src/broadcom/vulkan/v3dv_private.h

index bf93ad0..ba55585 100644 (file)
@@ -1314,6 +1314,30 @@ v3dv_GetBufferMemoryRequirements(VkDevice _device,
 }
 
 VkResult
+v3dv_BindBufferMemory(VkDevice _device,
+                      VkBuffer _buffer,
+                      VkDeviceMemory _memory,
+                      VkDeviceSize memoryOffset)
+{
+   V3DV_FROM_HANDLE(v3dv_device_memory, mem, _memory);
+   V3DV_FROM_HANDLE(v3dv_buffer, buffer, _buffer);
+
+   /* Valid usage:
+    *
+    *   "memoryOffset must be an integer multiple of the alignment member of
+    *    the VkMemoryRequirements structure returned from a call to
+    *    vkGetBufferMemoryRequirements with buffer"
+    */
+   assert(memoryOffset % buffer->alignment == 0);
+   assert(memoryOffset < mem->size);
+
+   buffer->mem = mem;
+   buffer->mem_offset = memoryOffset;
+
+   return VK_SUCCESS;
+}
+
+VkResult
 v3dv_CreateBuffer(VkDevice  _device,
                   const VkBufferCreateInfo *pCreateInfo,
                   const VkAllocationCallbacks *pAllocator,
index 268593b..260fc60 100644 (file)
@@ -299,6 +299,9 @@ struct v3dv_buffer {
    VkDeviceSize size;
    VkBufferUsageFlags usage;
    uint32_t alignment;
+
+   struct v3dv_device_memory *mem;
+   VkDeviceSize mem_offset;
 };
 
 struct v3dv_shader_module {