turnip/perfetto: Optimize timestamp synchronization

We shouldn't do ioctl to get timestamp if perfetto isn't connected.
Also it's better to sync timestamps after submission since the
call could block until GPU is resumed.

Signed-off-by: Danylo Piliaiev <dpiliaiev@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14391>
This commit is contained in:
Danylo Piliaiev 2021-09-23 18:18:37 +03:00 committed by Marge Bot
parent 2d75fd1e0a
commit 95896dee93
2 changed files with 8 additions and 4 deletions

View File

@ -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),

View File

@ -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);
}