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):