-- Copyright 2024 The Chromium Authors -- Use of this source code is governed by a BSD-style license that can be -- found in the LICENSE file. INCLUDE PERFETTO MODULE slices.with_context; -- Top level scroll events, with metrics. CREATE PERFETTO TABLE chrome_scroll_interactions( -- Unique id for an individual scroll. id LONG, -- Name of the scroll event. name STRING, -- Start timestamp of the scroll. ts TIMESTAMP, -- Duration of the scroll. dur DURATION, -- The total number of frames in the scroll. frame_count LONG, -- The total number of vsyncs in the scroll. vsync_count LONG, -- The maximum number of vsyncs missed during any and all janks. missed_vsync_max LONG, -- The total number of vsyncs missed during any and all janks. missed_vsync_sum LONG, -- The number of delayed frames. delayed_frame_count LONG, -- The number of frames that are deemed janky to the human eye after Chrome -- has applied its scroll prediction algorithm. predictor_janky_frame_count LONG, -- The process id this event occurred on. renderer_upid LONG ) AS WITH scroll_metrics AS ( SELECT id, ts, dur, EXTRACT_ARG(arg_set_id, 'scroll_metrics.frame_count') AS frame_count, EXTRACT_ARG(arg_set_id, 'scroll_metrics.vsync_count') AS vsync_count, EXTRACT_ARG(arg_set_id, 'scroll_metrics.missed_vsync_max') AS missed_vsync_max, EXTRACT_ARG(arg_set_id, 'scroll_metrics.missed_vsync_sum') AS missed_vsync_sum, EXTRACT_ARG(arg_set_id, 'scroll_metrics.delayed_frame_count') AS delayed_frame_count, EXTRACT_ARG(arg_set_id, 'scroll_metrics.predictor_janky_frame_count') AS predictor_janky_frame_count, upid AS renderer_upid FROM process_slice WHERE name = 'Scroll' ) SELECT id, 'Scroll' AS name, ts, dur, frame_count, vsync_count, missed_vsync_max, missed_vsync_sum, delayed_frame_count, predictor_janky_frame_count, renderer_upid FROM scroll_metrics;