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:
parent
2d75fd1e0a
commit
95896dee93
|
@ -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),
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue