tu: use instance indices in RD dump filenames

Until now the RD dumps were stored in files on a per-device basis, using
the device index but assuming only one Vulkan instance is active. With
multiple active instances, different devices separated across those
instances could end up storing RD dumps into files with the same name.

tu_instance struct now has an index member variable that's assigned upon
creation with an incrementally-increasing global counter value. RD dump
output name now also contains this instance index, avoiding the described
naming collisions.

Signed-off-by: Zan Dobersek <zdobersek@igalia.com>
Fixes: f9c4e25483 ("freedreno: add fd_rd_output facilities for gzip-compressed RD dumps")
Reviewed-by: Karmjit Mahil <karmjit.mahil@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30977>
This commit is contained in:
Zan Dobersek
2024-09-02 13:30:07 +02:00
parent aa494cbacf
commit 4c359eae01
2 changed files with 7 additions and 2 deletions

View File

@@ -1394,6 +1394,8 @@ tu_init_dri_options(struct tu_instance *instance)
driQueryOptionb(&instance->dri_options, "tu_disable_d24s8_border_color_workaround");
}
static uint32_t instance_count = 0;
VKAPI_ATTR VkResult VKAPI_CALL
tu_CreateInstance(const VkInstanceCreateInfo *pCreateInfo,
const VkAllocationCallbacks *pAllocator,
@@ -1435,6 +1437,7 @@ tu_CreateInstance(const VkInstanceCreateInfo *pCreateInfo,
instance->vk.physical_devices.enumerate = tu_enumerate_devices;
instance->vk.physical_devices.destroy = tu_destroy_physical_device;
instance->instance_idx = p_atomic_fetch_add(&instance_count, 1);
if (TU_DEBUG(STARTUP))
mesa_logi("Created an instance");
@@ -2583,8 +2586,9 @@ tu_CreateDevice(VkPhysicalDevice physicalDevice,
snprintf(engine_name, sizeof(engine_name), "%s", engine_name_str);
char output_name[128];
snprintf(output_name, sizeof(output_name), "tu_%s.%s_device%u",
app_name, engine_name, device->device_idx);
snprintf(output_name, sizeof(output_name), "tu_%s.%s_instance%u_device%u",
app_name, engine_name, device->instance->instance_idx,
device->device_idx);
fd_rd_output_init(&device->rd_output, output_name);
}

View File

@@ -157,6 +157,7 @@ struct tu_instance
const struct tu_knl *knl;
uint32_t instance_idx;
uint32_t api_version;
struct driOptionCache dri_options;