Mesa (main): venus: prepare vn_CreateBuffer for AHB

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Thu Jul 1 03:53:03 UTC 2021


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

Author: Yiwei Zhang <zzyiwei at chromium.org>
Date:   Wed Jun 30 06:04:39 2021 +0000

venus: prepare vn_CreateBuffer for AHB

Signed-off-by: Yiwei Zhang <zzyiwei at chromium.org>
Reviewed-by: Chia-I Wu <olvaffe at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11661>

---

 src/virtio/vulkan/vn_buffer.c | 55 ++++++++++++++++++++++++++++++-------------
 src/virtio/vulkan/vn_buffer.h |  6 +++++
 2 files changed, 45 insertions(+), 16 deletions(-)

diff --git a/src/virtio/vulkan/vn_buffer.c b/src/virtio/vulkan/vn_buffer.c
index 34ec3b170a9..547ffb49bf7 100644
--- a/src/virtio/vulkan/vn_buffer.c
+++ b/src/virtio/vulkan/vn_buffer.c
@@ -19,29 +19,30 @@
 /* buffer commands */
 
 VkResult
-vn_CreateBuffer(VkDevice device,
-                const VkBufferCreateInfo *pCreateInfo,
-                const VkAllocationCallbacks *pAllocator,
-                VkBuffer *pBuffer)
+vn_buffer_create(struct vn_device *dev,
+                 const VkBufferCreateInfo *create_info,
+                 const VkAllocationCallbacks *alloc,
+                 struct vn_buffer **out_buf)
 {
-   struct vn_device *dev = vn_device_from_handle(device);
-   const VkAllocationCallbacks *alloc =
-      pAllocator ? pAllocator : &dev->base.base.alloc;
+   VkDevice device = vn_device_to_handle(dev);
+   struct vn_buffer *buf = NULL;
+   VkBuffer buffer = VK_NULL_HANDLE;
+   VkResult result;
 
-   struct vn_buffer *buf = vk_zalloc(alloc, sizeof(*buf), VN_DEFAULT_ALIGN,
-                                     VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
+   buf = vk_zalloc(alloc, sizeof(*buf), VN_DEFAULT_ALIGN,
+                   VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
    if (!buf)
-      return vn_error(dev->instance, VK_ERROR_OUT_OF_HOST_MEMORY);
+      return VK_ERROR_OUT_OF_HOST_MEMORY;
 
    vn_object_base_init(&buf->base, VK_OBJECT_TYPE_BUFFER, &dev->base);
 
-   VkBuffer buf_handle = vn_buffer_to_handle(buf);
+   buffer = vn_buffer_to_handle(buf);
    /* TODO async */
-   VkResult result = vn_call_vkCreateBuffer(dev->instance, device,
-                                            pCreateInfo, NULL, &buf_handle);
+   result = vn_call_vkCreateBuffer(dev->instance, device, create_info, NULL,
+                                   &buffer);
    if (result != VK_SUCCESS) {
       vk_free(alloc, buf);
-      return vn_error(dev->instance, result);
+      return result;
    }
 
    /* TODO add a per-device cache for the requirements */
@@ -55,11 +56,33 @@ vn_CreateBuffer(VkDevice device,
       dev->instance, device,
       &(VkBufferMemoryRequirementsInfo2){
          .sType = VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2,
-         .buffer = vn_buffer_to_handle(buf),
+         .buffer = buffer,
       },
       &buf->memory_requirements);
 
-   *pBuffer = buf_handle;
+   *out_buf = buf;
+
+   return VK_SUCCESS;
+}
+
+VkResult
+vn_CreateBuffer(VkDevice device,
+                const VkBufferCreateInfo *pCreateInfo,
+                const VkAllocationCallbacks *pAllocator,
+                VkBuffer *pBuffer)
+{
+   struct vn_device *dev = vn_device_from_handle(device);
+   const VkAllocationCallbacks *alloc =
+      pAllocator ? pAllocator : &dev->base.base.alloc;
+   struct vn_buffer *buf = NULL;
+   VkResult result;
+
+   result = vn_buffer_create(dev, pCreateInfo, alloc, &buf);
+
+   if (result != VK_SUCCESS)
+      return vn_error(dev->instance, result);
+
+   *pBuffer = vn_buffer_to_handle(buf);
 
    return VK_SUCCESS;
 }
diff --git a/src/virtio/vulkan/vn_buffer.h b/src/virtio/vulkan/vn_buffer.h
index 87c67962d61..7cec3b5de0b 100644
--- a/src/virtio/vulkan/vn_buffer.h
+++ b/src/virtio/vulkan/vn_buffer.h
@@ -32,4 +32,10 @@ VK_DEFINE_NONDISP_HANDLE_CASTS(vn_buffer_view,
                                VkBufferView,
                                VK_OBJECT_TYPE_BUFFER_VIEW)
 
+VkResult
+vn_buffer_create(struct vn_device *dev,
+                 const VkBufferCreateInfo *create_info,
+                 const VkAllocationCallbacks *alloc,
+                 struct vn_buffer **out_buf);
+
 #endif /* VN_BUFFER_H */



More information about the mesa-commit mailing list