venus: refactor buffer cache related bits
Simplify returns and reorder inits. Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23916>
This commit is contained in:
@@ -46,7 +46,7 @@ vn_buffer_get_max_buffer_size(struct vn_physical_device *physical_dev)
|
|||||||
: safe_max_buffer_size;
|
: safe_max_buffer_size;
|
||||||
}
|
}
|
||||||
|
|
||||||
VkResult
|
void
|
||||||
vn_buffer_cache_init(struct vn_device *dev)
|
vn_buffer_cache_init(struct vn_device *dev)
|
||||||
{
|
{
|
||||||
dev->buffer_cache.max_buffer_size =
|
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);
|
simple_mtx_init(&dev->buffer_cache.mutex, mtx_plain);
|
||||||
util_sparse_array_init(&dev->buffer_cache.entries,
|
util_sparse_array_init(&dev->buffer_cache.entries,
|
||||||
sizeof(struct vn_buffer_cache_entry), 64);
|
sizeof(struct vn_buffer_cache_entry), 64);
|
||||||
|
|
||||||
return VK_SUCCESS;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@@ -67,7 +67,7 @@ vn_buffer_create(struct vn_device *dev,
|
|||||||
const VkAllocationCallbacks *alloc,
|
const VkAllocationCallbacks *alloc,
|
||||||
struct vn_buffer **out_buf);
|
struct vn_buffer **out_buf);
|
||||||
|
|
||||||
VkResult
|
void
|
||||||
vn_buffer_cache_init(struct vn_device *dev);
|
vn_buffer_cache_init(struct vn_device *dev);
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@@ -487,13 +487,9 @@ vn_device_init(struct vn_device *dev,
|
|||||||
mtx_init(&pool->mutex, mtx_plain);
|
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);
|
result = vn_device_feedback_pool_init(dev);
|
||||||
if (result != VK_SUCCESS)
|
if (result != VK_SUCCESS)
|
||||||
goto out_buffer_cache_fini;
|
goto out_memory_pool_fini;
|
||||||
|
|
||||||
result = vn_feedback_cmd_pools_init(dev);
|
result = vn_feedback_cmd_pools_init(dev);
|
||||||
if (result != VK_SUCCESS)
|
if (result != VK_SUCCESS)
|
||||||
@@ -503,6 +499,8 @@ vn_device_init(struct vn_device *dev,
|
|||||||
if (result != VK_SUCCESS)
|
if (result != VK_SUCCESS)
|
||||||
goto out_cmd_pools_fini;
|
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
|
/* This is a WA to allow fossilize replay to detect if the host side shader
|
||||||
* cache is no longer up to date.
|
* cache is no longer up to date.
|
||||||
*/
|
*/
|
||||||
@@ -516,9 +514,6 @@ out_cmd_pools_fini:
|
|||||||
out_feedback_pool_fini:
|
out_feedback_pool_fini:
|
||||||
vn_device_feedback_pool_fini(dev);
|
vn_device_feedback_pool_fini(dev);
|
||||||
|
|
||||||
out_buffer_cache_fini:
|
|
||||||
vn_buffer_cache_fini(dev);
|
|
||||||
|
|
||||||
out_memory_pool_fini:
|
out_memory_pool_fini:
|
||||||
for (uint32_t i = 0; i < ARRAY_SIZE(dev->memory_pools); i++)
|
for (uint32_t i = 0; i < ARRAY_SIZE(dev->memory_pools); i++)
|
||||||
vn_device_memory_pool_fini(dev, i);
|
vn_device_memory_pool_fini(dev, i);
|
||||||
@@ -594,6 +589,8 @@ vn_DestroyDevice(VkDevice device, const VkAllocationCallbacks *pAllocator)
|
|||||||
if (!dev)
|
if (!dev)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
vn_buffer_cache_fini(dev);
|
||||||
|
|
||||||
for (uint32_t i = 0; i < dev->queue_count; i++)
|
for (uint32_t i = 0; i < dev->queue_count; i++)
|
||||||
vn_queue_fini(&dev->queues[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_device_feedback_pool_fini(dev);
|
||||||
|
|
||||||
vn_buffer_cache_fini(dev);
|
|
||||||
|
|
||||||
for (uint32_t i = 0; i < ARRAY_SIZE(dev->memory_pools); i++)
|
for (uint32_t i = 0; i < ARRAY_SIZE(dev->memory_pools); i++)
|
||||||
vn_device_memory_pool_fini(dev, i);
|
vn_device_memory_pool_fini(dev, i);
|
||||||
|
|
||||||
|
@@ -38,8 +38,6 @@ struct vn_device {
|
|||||||
|
|
||||||
struct vn_device_memory_pool memory_pools[VK_MAX_MEMORY_TYPES];
|
struct vn_device_memory_pool memory_pools[VK_MAX_MEMORY_TYPES];
|
||||||
|
|
||||||
struct vn_buffer_cache buffer_cache;
|
|
||||||
|
|
||||||
struct vn_feedback_pool feedback_pool;
|
struct vn_feedback_pool feedback_pool;
|
||||||
|
|
||||||
/* feedback cmd pool per queue family used by the device
|
/* feedback cmd pool per queue family used by the device
|
||||||
@@ -50,6 +48,8 @@ struct vn_device {
|
|||||||
|
|
||||||
struct vn_queue *queues;
|
struct vn_queue *queues;
|
||||||
uint32_t queue_count;
|
uint32_t queue_count;
|
||||||
|
|
||||||
|
struct vn_buffer_cache buffer_cache;
|
||||||
};
|
};
|
||||||
VK_DEFINE_HANDLE_CASTS(vn_device,
|
VK_DEFINE_HANDLE_CASTS(vn_device,
|
||||||
base.base.base,
|
base.base.base,
|
||||||
|
Reference in New Issue
Block a user