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