From 1e172342608f549a83e5b730493a922a701628b5 Mon Sep 17 00:00:00 2001 From: Yiwei Zhang Date: Wed, 28 Jun 2023 16:00:11 -0700 Subject: [PATCH] venus: refactor buffer cache related bits Simplify returns and reorder inits. Signed-off-by: Yiwei Zhang Part-of: --- src/virtio/vulkan/vn_buffer.c | 4 +--- src/virtio/vulkan/vn_buffer.h | 2 +- src/virtio/vulkan/vn_device.c | 15 +++++---------- src/virtio/vulkan/vn_device.h | 4 ++-- 4 files changed, 9 insertions(+), 16 deletions(-) diff --git a/src/virtio/vulkan/vn_buffer.c b/src/virtio/vulkan/vn_buffer.c index 0e96c71aa0d..58639bd9bf1 100644 --- a/src/virtio/vulkan/vn_buffer.c +++ b/src/virtio/vulkan/vn_buffer.c @@ -46,7 +46,7 @@ vn_buffer_get_max_buffer_size(struct vn_physical_device *physical_dev) : safe_max_buffer_size; } -VkResult +void vn_buffer_cache_init(struct vn_device *dev) { dev->buffer_cache.max_buffer_size = @@ -55,8 +55,6 @@ vn_buffer_cache_init(struct vn_device *dev) simple_mtx_init(&dev->buffer_cache.mutex, mtx_plain); util_sparse_array_init(&dev->buffer_cache.entries, sizeof(struct vn_buffer_cache_entry), 64); - - return VK_SUCCESS; } static void diff --git a/src/virtio/vulkan/vn_buffer.h b/src/virtio/vulkan/vn_buffer.h index 0ce605d2fbd..7805d63eb03 100644 --- a/src/virtio/vulkan/vn_buffer.h +++ b/src/virtio/vulkan/vn_buffer.h @@ -67,7 +67,7 @@ vn_buffer_create(struct vn_device *dev, const VkAllocationCallbacks *alloc, struct vn_buffer **out_buf); -VkResult +void vn_buffer_cache_init(struct vn_device *dev); void diff --git a/src/virtio/vulkan/vn_device.c b/src/virtio/vulkan/vn_device.c index 8cfb46e66c6..60bb0ad406b 100644 --- a/src/virtio/vulkan/vn_device.c +++ b/src/virtio/vulkan/vn_device.c @@ -487,13 +487,9 @@ vn_device_init(struct vn_device *dev, mtx_init(&pool->mutex, mtx_plain); } - result = vn_buffer_cache_init(dev); - if (result != VK_SUCCESS) - goto out_memory_pool_fini; - result = vn_device_feedback_pool_init(dev); if (result != VK_SUCCESS) - goto out_buffer_cache_fini; + goto out_memory_pool_fini; result = vn_feedback_cmd_pools_init(dev); if (result != VK_SUCCESS) @@ -503,6 +499,8 @@ vn_device_init(struct vn_device *dev, if (result != VK_SUCCESS) goto out_cmd_pools_fini; + vn_buffer_cache_init(dev); + /* This is a WA to allow fossilize replay to detect if the host side shader * cache is no longer up to date. */ @@ -516,9 +514,6 @@ out_cmd_pools_fini: out_feedback_pool_fini: vn_device_feedback_pool_fini(dev); -out_buffer_cache_fini: - vn_buffer_cache_fini(dev); - out_memory_pool_fini: for (uint32_t i = 0; i < ARRAY_SIZE(dev->memory_pools); i++) vn_device_memory_pool_fini(dev, i); @@ -594,6 +589,8 @@ vn_DestroyDevice(VkDevice device, const VkAllocationCallbacks *pAllocator) if (!dev) return; + vn_buffer_cache_fini(dev); + for (uint32_t i = 0; i < dev->queue_count; i++) vn_queue_fini(&dev->queues[i]); @@ -601,8 +598,6 @@ vn_DestroyDevice(VkDevice device, const VkAllocationCallbacks *pAllocator) vn_device_feedback_pool_fini(dev); - vn_buffer_cache_fini(dev); - for (uint32_t i = 0; i < ARRAY_SIZE(dev->memory_pools); i++) vn_device_memory_pool_fini(dev, i); diff --git a/src/virtio/vulkan/vn_device.h b/src/virtio/vulkan/vn_device.h index e766087e619..913a13775cd 100644 --- a/src/virtio/vulkan/vn_device.h +++ b/src/virtio/vulkan/vn_device.h @@ -38,8 +38,6 @@ struct vn_device { struct vn_device_memory_pool memory_pools[VK_MAX_MEMORY_TYPES]; - struct vn_buffer_cache buffer_cache; - struct vn_feedback_pool feedback_pool; /* feedback cmd pool per queue family used by the device @@ -50,6 +48,8 @@ struct vn_device { struct vn_queue *queues; uint32_t queue_count; + + struct vn_buffer_cache buffer_cache; }; VK_DEFINE_HANDLE_CASTS(vn_device, base.base.base,