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