From 9f74fcffe48e04b65ecfc05bf2d632c778454310 Mon Sep 17 00:00:00 2001 From: Danylo Piliaiev Date: Thu, 19 Jun 2025 15:22:41 +0200 Subject: [PATCH] tu: Add MESA_TRACE_FUNC to submit and BO alloc paths Makes much easier to see how slow are submits and BO allocs, which sometimes happen together. Signed-off-by: Danylo Piliaiev Part-of: --- src/freedreno/vulkan/tu_device.cc | 1 + src/freedreno/vulkan/tu_knl.cc | 2 ++ src/freedreno/vulkan/tu_knl_drm_msm.cc | 13 ++++++++++--- src/freedreno/vulkan/tu_queue.cc | 1 + 4 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/freedreno/vulkan/tu_device.cc b/src/freedreno/vulkan/tu_device.cc index f6ee69fb9a0..bdff7b6d4c5 100644 --- a/src/freedreno/vulkan/tu_device.cc +++ b/src/freedreno/vulkan/tu_device.cc @@ -2234,6 +2234,7 @@ tu_u_trace_submission_data_create( uint32_t cmd_buffer_count, struct tu_u_trace_submission_data **submission_data) { + MESA_TRACE_FUNC(); *submission_data = (struct tu_u_trace_submission_data *) vk_zalloc(&device->vk.alloc, sizeof(struct tu_u_trace_submission_data), 8, diff --git a/src/freedreno/vulkan/tu_knl.cc b/src/freedreno/vulkan/tu_knl.cc index 6ed62a1f6ef..49374a5fb1a 100644 --- a/src/freedreno/vulkan/tu_knl.cc +++ b/src/freedreno/vulkan/tu_knl.cc @@ -37,6 +37,7 @@ tu_bo_init_new_explicit_iova(struct tu_device *dev, VkMemoryPropertyFlags mem_property, enum tu_bo_alloc_flags flags, const char *name) { + MESA_TRACE_FUNC(); struct tu_instance *instance = dev->physical_device->instance; VkResult result = @@ -88,6 +89,7 @@ tu_bo_export_dmabuf(struct tu_device *dev, struct tu_bo *bo) void tu_bo_finish(struct tu_device *dev, struct tu_bo *bo) { + MESA_TRACE_FUNC(); struct tu_instance *instance = dev->physical_device->instance; vk_address_binding_report(&instance->vk, bo->base ? bo->base : &dev->vk.base, diff --git a/src/freedreno/vulkan/tu_knl_drm_msm.cc b/src/freedreno/vulkan/tu_knl_drm_msm.cc index da4f207c315..54711373280 100644 --- a/src/freedreno/vulkan/tu_knl_drm_msm.cc +++ b/src/freedreno/vulkan/tu_knl_drm_msm.cc @@ -351,6 +351,7 @@ tu_wait_fence(struct tu_device *dev, int fence, uint64_t timeout_ns) { + MESA_TRACE_FUNC(); /* fence was created when no work was yet submitted */ if (fence < 0) return VK_SUCCESS; @@ -390,6 +391,8 @@ tu_free_zombie_vma_locked(struct tu_device *dev, bool wait) if (!u_vector_length(&dev->zombie_vmas)) return VK_SUCCESS; + MESA_TRACE_FUNC(); + if (wait) { struct tu_zombie_vma *vma = (struct tu_zombie_vma *) u_vector_head(&dev->zombie_vmas); @@ -654,6 +657,7 @@ msm_bo_init(struct tu_device *dev, enum tu_bo_alloc_flags flags, const char *name) { + MESA_TRACE_FUNC(); struct drm_msm_gem_new req = { .size = size, .flags = 0 @@ -946,9 +950,12 @@ msm_queue_submit(struct tu_queue *queue, void *_submit, .syncobj_stride = sizeof(struct drm_msm_gem_submit_syncobj), }; - ret = drmCommandWriteRead(queue->device->fd, - DRM_MSM_GEM_SUBMIT, - &req, sizeof(req)); + { + MESA_TRACE_SCOPE("DRM_MSM_GEM_SUBMIT"); + ret = drmCommandWriteRead(queue->device->fd, + DRM_MSM_GEM_SUBMIT, + &req, sizeof(req)); + } mtx_unlock(&queue->device->bo_mutex); diff --git a/src/freedreno/vulkan/tu_queue.cc b/src/freedreno/vulkan/tu_queue.cc index 8fee3663e1e..acba9405c83 100644 --- a/src/freedreno/vulkan/tu_queue.cc +++ b/src/freedreno/vulkan/tu_queue.cc @@ -66,6 +66,7 @@ submit_add_entries(struct tu_device *dev, void *submit, static VkResult queue_submit(struct vk_queue *_queue, struct vk_queue_submit *vk_submit) { + MESA_TRACE_FUNC(); struct tu_queue *queue = list_entry(_queue, struct tu_queue, vk); struct tu_device *device = queue->device; bool u_trace_enabled = u_trace_should_process(&queue->device->trace_context);