From 0d66ba6e5d1ac33d1cfa9aee957e97e0658614bb Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Fri, 26 Jul 2024 10:51:28 -0400 Subject: [PATCH] vk/meta: add buffer view tracking honeykrisp will use this, at least for now. Signed-off-by: Alyssa Rosenzweig Acked-by: Faith Ekstrand Part-of: --- src/vulkan/runtime/vk_meta.c | 20 ++++++++++++++++++++ src/vulkan/runtime/vk_meta.h | 6 ++++++ src/vulkan/runtime/vk_meta_object_list.c | 3 +++ 3 files changed, 29 insertions(+) diff --git a/src/vulkan/runtime/vk_meta.c b/src/vulkan/runtime/vk_meta.c index 9a0abe97331..06e869fd080 100644 --- a/src/vulkan/runtime/vk_meta.c +++ b/src/vulkan/runtime/vk_meta.c @@ -537,3 +537,23 @@ vk_meta_create_image_view(struct vk_command_buffer *cmd, (uint64_t)*image_view_out); return VK_SUCCESS; } + +VkResult +vk_meta_create_buffer_view(struct vk_command_buffer *cmd, + struct vk_meta_device *meta, + const VkBufferViewCreateInfo *info, + VkBufferView *buffer_view_out) +{ + struct vk_device *device = cmd->base.device; + const struct vk_device_dispatch_table *disp = &device->dispatch_table; + VkDevice _device = vk_device_to_handle(device); + + VkResult result = disp->CreateBufferView(_device, info, NULL, buffer_view_out); + if (unlikely(result != VK_SUCCESS)) + return result; + + vk_meta_object_list_add_handle(&cmd->meta_objects, + VK_OBJECT_TYPE_BUFFER_VIEW, + (uint64_t)*buffer_view_out); + return VK_SUCCESS; +} diff --git a/src/vulkan/runtime/vk_meta.h b/src/vulkan/runtime/vk_meta.h index 8910c3fb1b6..9a812dab480 100644 --- a/src/vulkan/runtime/vk_meta.h +++ b/src/vulkan/runtime/vk_meta.h @@ -34,6 +34,7 @@ extern "C" { struct hash_table; struct vk_command_buffer; +struct vk_buffer; struct vk_device; struct vk_image; @@ -184,6 +185,11 @@ VkResult vk_meta_create_buffer(struct vk_command_buffer *cmd, struct vk_meta_device *meta, const VkBufferCreateInfo *info, VkBuffer *buffer_out); + +VkResult vk_meta_create_buffer_view(struct vk_command_buffer *cmd, + struct vk_meta_device *meta, + const VkBufferViewCreateInfo *info, + VkBufferView *buffer_view_out); VkResult vk_meta_create_image_view(struct vk_command_buffer *cmd, struct vk_meta_device *meta, const VkImageViewCreateInfo *info, diff --git a/src/vulkan/runtime/vk_meta_object_list.c b/src/vulkan/runtime/vk_meta_object_list.c index ca7249f5c87..e1ee5e61141 100644 --- a/src/vulkan/runtime/vk_meta_object_list.c +++ b/src/vulkan/runtime/vk_meta_object_list.c @@ -17,6 +17,9 @@ vk_meta_destroy_object(struct vk_device *device, struct vk_object_base *obj) case VK_OBJECT_TYPE_BUFFER: disp->DestroyBuffer(_device, (VkBuffer)(uintptr_t)obj, NULL); break; + case VK_OBJECT_TYPE_BUFFER_VIEW: + disp->DestroyBufferView(_device, (VkBufferView)(uintptr_t)obj, NULL); + break; case VK_OBJECT_TYPE_IMAGE_VIEW: disp->DestroyImageView(_device, (VkImageView)(uintptr_t)obj, NULL); break;