From cdb1857a4d00bd3cc87d11e8fbda18ba7ac1d84c Mon Sep 17 00:00:00 2001 From: Connor Abbott Date: Thu, 28 Mar 2024 08:19:44 -0400 Subject: [PATCH] tu: Create meta device Part-of: --- src/freedreno/vulkan/tu_device.cc | 14 +++++++++++--- src/freedreno/vulkan/tu_device.h | 3 +++ 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/freedreno/vulkan/tu_device.cc b/src/freedreno/vulkan/tu_device.cc index cace9d9fee5..ec2c027addc 100644 --- a/src/freedreno/vulkan/tu_device.cc +++ b/src/freedreno/vulkan/tu_device.cc @@ -2469,6 +2469,10 @@ tu_CreateDevice(VkPhysicalDevice physicalDevice, } } + result = vk_meta_device_init(&device->vk, &device->meta); + if (result != VK_SUCCESS) + goto fail_queues; + { struct ir3_compiler_options ir3_options = { .push_ubo_with_preamble = true, @@ -2486,7 +2490,7 @@ tu_CreateDevice(VkPhysicalDevice physicalDevice, result = vk_startup_errorf(physical_device->instance, VK_ERROR_INITIALIZATION_FAILED, "failed to initialize ir3 compiler"); - goto fail_queues; + goto fail_compiler; } /* Initialize sparse array for refcounting imported BOs */ @@ -2735,12 +2739,14 @@ fail_global_bo_map: vk_free(&device->vk.alloc, device->submit_bo_list); util_dynarray_fini(&device->dump_bo_list); fail_global_bo: - ir3_compiler_destroy(device->compiler); - util_sparse_array_finish(&device->bo_map); if (physical_device->has_set_iova) util_vma_heap_finish(&device->vma); fail_free_zombie_vma: + util_sparse_array_finish(&device->bo_map); u_vector_finish(&device->zombie_vmas); + ir3_compiler_destroy(device->compiler); +fail_compiler: + vk_meta_device_finish(&device->vk, &device->meta); fail_queues: for (unsigned i = 0; i < TU_MAX_QUEUE_FAMILIES; i++) { for (unsigned q = 0; q < device->queue_count[i]; q++) @@ -2790,6 +2796,8 @@ tu_DestroyDevice(VkDevice _device, const VkAllocationCallbacks *pAllocator) tu_destroy_dynamic_rendering(device); + vk_meta_device_finish(&device->vk, &device->meta); + ir3_compiler_destroy(device->compiler); vk_pipeline_cache_destroy(device->mem_cache, &device->vk.alloc); diff --git a/src/freedreno/vulkan/tu_device.h b/src/freedreno/vulkan/tu_device.h index 27652f82652..e38540ead2e 100644 --- a/src/freedreno/vulkan/tu_device.h +++ b/src/freedreno/vulkan/tu_device.h @@ -13,6 +13,7 @@ #include "tu_common.h" #include "vk_device_memory.h" +#include "vk_meta.h" #include "tu_autotune.h" #include "tu_cs.h" @@ -286,6 +287,8 @@ struct tu_device /* Backup in-memory cache to be used if the app doesn't provide one */ struct vk_pipeline_cache *mem_cache; + struct vk_meta_device meta; + #define MIN_SCRATCH_BO_SIZE_LOG2 12 /* A page */ /* Currently the kernel driver uses a 32-bit GPU address space, but it