vk/meta: add buffer view tracking

honeykrisp will use this, at least for now.

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Acked-by: Faith Ekstrand <faith.ekstrand@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30382>
This commit is contained in:
Alyssa Rosenzweig
2024-07-26 10:51:28 -04:00
committed by Marge Bot
parent d5b0526507
commit 0d66ba6e5d
3 changed files with 29 additions and 0 deletions

View File

@@ -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;
}

View File

@@ -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,

View File

@@ -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;