Merge "stdlib: create the start_latency column" into main am: f9a11f7f0e

Original change: https://android-review.googlesource.com/c/platform/external/perfetto/+/3206073

Change-Id: I3c2609cbadc63b7937d257c5c3560f9db1b5bfc9
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/src/trace_processor/perfetto_sql/stdlib/android/frames/per_frame_metrics.sql b/src/trace_processor/perfetto_sql/stdlib/android/frames/per_frame_metrics.sql
index cda1361..6e9f000 100644
--- a/src/trace_processor/perfetto_sql/stdlib/android/frames/per_frame_metrics.sql
+++ b/src/trace_processor/perfetto_sql/stdlib/android/frames/per_frame_metrics.sql
@@ -64,7 +64,9 @@
     -- Frame id
     frame_id INT,
     -- App VSYNC delay.
-    app_vsync_delay INT
+    app_vsync_delay INT,
+    -- The latency between VSYNC-app and the start of actual_frame_timeline.
+    start_latency INT
 ) AS
 -- As there can be multiple `DrawFrame` slices, the `frames_surface_slices`
 -- table contains multiple rows for the same `frame_id` which only differ on
@@ -74,14 +76,17 @@
     SELECT
         frame_id,
         do_frame_id,
-        actual_frame_timeline_id
+        actual_frame_timeline_id,
+        expected_frame_timeline_id
     FROM android_frames
     GROUP BY 1
 )
 SELECT
     frame_id,
-    act.ts - do_frame.ts AS app_vsync_delay
+    act.ts - do_frame.ts AS app_vsync_delay,
+    act.ts - exp.ts AS start_latency
 FROM distinct_frames f
+JOIN slice exp ON (f.expected_frame_timeline_id = exp.id)
 JOIN slice act ON (f.actual_frame_timeline_id = act.id)
 JOIN slice do_frame ON (f.do_frame_id = do_frame.id)
 WHERE act.ts >= do_frame.ts;
diff --git a/test/trace_processor/diff_tests/stdlib/android/frames_tests.py b/test/trace_processor/diff_tests/stdlib/android/frames_tests.py
index 83297fd..c329f19 100644
--- a/test/trace_processor/diff_tests/stdlib/android/frames_tests.py
+++ b/test/trace_processor/diff_tests/stdlib/android/frames_tests.py
@@ -157,19 +157,19 @@
         SELECT * FROM android_app_vsync_delay_per_frame;
         """,
         out=Csv("""
-        "frame_id","app_vsync_delay"
-        10,0
-        30,0
-        40,0
-        60,0
-        90,0
-        100,0
-        110,0
-        120,0
-        140,100000
-        150,500000
-        160,270000000
-        1000,0
+        "frame_id","app_vsync_delay","start_latency"
+        10,0,0
+        30,0,0
+        40,0,0
+        60,0,0
+        90,0,0
+        100,0,0
+        110,0,0
+        120,0,0
+        140,100000,8600000
+        150,500000,500000
+        160,270000000,270000000
+        1000,0,0
         """))
 
   def test_android_cpu_time_per_frame(self):