turnip: improve perfetto sync_timestamp
authorChia-I Wu <olvaffe@gmail.com>
Tue, 23 Aug 2022 01:15:24 +0000 (18:15 -0700)
committerMarge Bot <emma+marge@anholt.net>
Thu, 25 Aug 2022 21:00:13 +0000 (21:00 +0000)
tu_device_get_gpu_timestamp takes >100us on my otherwise idle sc7180.
Read the cpu block again after the call returns.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18238>

src/freedreno/vulkan/tu_perfetto.cc

index 86c5479..a189825 100644 (file)
@@ -189,10 +189,15 @@ sync_timestamp(struct tu_device *dev)
    if (cpu_ts < next_clock_sync_ns)
       return;
 
-    if (tu_device_get_gpu_timestamp(dev, &gpu_ts)) {
+   if (tu_device_get_gpu_timestamp(dev, &gpu_ts)) {
       PERFETTO_ELOG("Could not sync CPU and GPU clocks");
       return;
-    }
+   }
+
+   /* get cpu timestamp again because tu_device_get_gpu_timestamp can take
+    * >100us
+    */
+   cpu_ts = perfetto::base::GetBootTimeNs().count();
 
    uint64_t current_suspend_count = 0;
    /* If we fail to get it we will use a fallback */