Module: Mesa
Branch: main
Commit: 91a0411d2ab03d32f3fdd1fa7969ee908dbdda85
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=91a0411d2ab03d32f3fdd1fa7969ee908dbdda85

Author: Chia-I Wu <[email protected]>
Date:   Mon Aug 22 18:15:24 2022 -0700

turnip: improve perfetto sync_timestamp

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 | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/src/freedreno/vulkan/tu_perfetto.cc 
b/src/freedreno/vulkan/tu_perfetto.cc
index 86c5479a890..a189825908f 100644
--- a/src/freedreno/vulkan/tu_perfetto.cc
+++ b/src/freedreno/vulkan/tu_perfetto.cc
@@ -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 */

Reply via email to