diff --git a/src/freedreno/vulkan/tu_drm.c b/src/freedreno/vulkan/tu_drm.c index ba3582a29aa..d2d04bc7302 100644 --- a/src/freedreno/vulkan/tu_drm.c +++ b/src/freedreno/vulkan/tu_drm.c @@ -897,10 +897,6 @@ tu_queue_submit_locked(struct tu_queue *queue, struct tu_queue_submit *submit) { queue->device->submit_count++; -#if HAVE_PERFETTO - tu_perfetto_submit(queue->device, queue->device->submit_count); -#endif - uint32_t flags = MSM_PIPE_3D0; if (submit->vk_submit->wait_count) @@ -940,6 +936,10 @@ tu_queue_submit_locked(struct tu_queue *queue, struct tu_queue_submit *submit) if (ret) return vk_device_set_lost(&queue->device->vk, "submit failed: %m"); +#if HAVE_PERFETTO + tu_perfetto_submit(queue->device, queue->device->submit_count); +#endif + if (submit->cmd_buffer_trace_data) { struct tu_u_trace_flush_data *flush_data = vk_alloc(&queue->device->vk.alloc, sizeof(struct tu_u_trace_flush_data), diff --git a/src/freedreno/vulkan/tu_perfetto.cc b/src/freedreno/vulkan/tu_perfetto.cc index 656b0b978df..3ce54bd2ff9 100644 --- a/src/freedreno/vulkan/tu_perfetto.cc +++ b/src/freedreno/vulkan/tu_perfetto.cc @@ -248,6 +248,10 @@ emit_submit_id(uint32_t submission_id) void tu_perfetto_submit(struct tu_device *dev, uint32_t submission_id) { + /* sync_timestamp isn't free */ + if (!ut_perfetto_enabled) + return; + sync_timestamp(dev); emit_submit_id(submission_id); }