Mesa (main): venus: refactor to add vn_buffer_init

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Thu Oct 28 00:33:48 UTC 2021


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

Author: Yiwei Zhang <zzyiwei at chromium.org>
Date:   Mon Oct 18 20:17:04 2021 +0000

venus: refactor to add vn_buffer_init

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

---

 src/virtio/vulkan/vn_buffer.c | 53 ++++++++++++++++++++++++++-----------------
 1 file changed, 32 insertions(+), 21 deletions(-)

diff --git a/src/virtio/vulkan/vn_buffer.c b/src/virtio/vulkan/vn_buffer.c
index 766fb3ad05a..7fd34fb38c3 100644
--- a/src/virtio/vulkan/vn_buffer.c
+++ b/src/virtio/vulkan/vn_buffer.c
@@ -19,15 +19,44 @@
 
 /* buffer commands */
 
+static VkResult
+vn_buffer_init(struct vn_device *dev,
+               const VkBufferCreateInfo *create_info,
+               struct vn_buffer *buf)
+{
+   VkDevice dev_handle = vn_device_to_handle(dev);
+   VkBuffer buf_handle = vn_buffer_to_handle(buf);
+   VkResult result;
+
+   result = vn_call_vkCreateBuffer(dev->instance, dev_handle, create_info,
+                                   NULL, &buf_handle);
+   if (result != VK_SUCCESS)
+      return result;
+
+   buf->memory_requirements.sType = VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2;
+   buf->memory_requirements.pNext = &buf->dedicated_requirements;
+   buf->dedicated_requirements.sType =
+      VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS;
+   buf->dedicated_requirements.pNext = NULL;
+
+   vn_call_vkGetBufferMemoryRequirements2(
+      dev->instance, dev_handle,
+      &(VkBufferMemoryRequirementsInfo2){
+         .sType = VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2,
+         .buffer = buf_handle,
+      },
+      &buf->memory_requirements);
+
+   return VK_SUCCESS;
+}
+
 VkResult
 vn_buffer_create(struct vn_device *dev,
                  const VkBufferCreateInfo *create_info,
                  const VkAllocationCallbacks *alloc,
                  struct vn_buffer **out_buf)
 {
-   VkDevice device = vn_device_to_handle(dev);
    struct vn_buffer *buf = NULL;
-   VkBuffer buffer = VK_NULL_HANDLE;
    VkResult result;
 
    buf = vk_zalloc(alloc, sizeof(*buf), VN_DEFAULT_ALIGN,
@@ -37,31 +66,13 @@ vn_buffer_create(struct vn_device *dev,
 
    vn_object_base_init(&buf->base, VK_OBJECT_TYPE_BUFFER, &dev->base);
 
-   buffer = vn_buffer_to_handle(buf);
-   /* TODO async */
-   result = vn_call_vkCreateBuffer(dev->instance, device, create_info, NULL,
-                                   &buffer);
+   result = vn_buffer_init(dev, create_info, buf);
    if (result != VK_SUCCESS) {
       vn_object_base_fini(&buf->base);
       vk_free(alloc, buf);
       return result;
    }
 
-   /* TODO add a per-device cache for the requirements */
-   buf->memory_requirements.sType = VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2;
-   buf->memory_requirements.pNext = &buf->dedicated_requirements;
-   buf->dedicated_requirements.sType =
-      VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS;
-   buf->dedicated_requirements.pNext = NULL;
-
-   vn_call_vkGetBufferMemoryRequirements2(
-      dev->instance, device,
-      &(VkBufferMemoryRequirementsInfo2){
-         .sType = VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2,
-         .buffer = buffer,
-      },
-      &buf->memory_requirements);
-
    *out_buf = buf;
 
    return VK_SUCCESS;



More information about the mesa-commit mailing list