• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1--
2-- Copyright 2022 The Android Open Source Project
3--
4-- Licensed under the Apache License, Version 2.0 (the "License");
5-- you may not use this file except in compliance with the License.
6-- You may obtain a copy of the License at
7--
8--     https://www.apache.org/licenses/LICENSE-2.0
9--
10-- Unless required by applicable law or agreed to in writing, software
11-- distributed under the License is distributed on an "AS IS" BASIS,
12-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13-- See the License for the specific language governing permissions and
14-- limitations under the License.
15--
16-- Creates metric with info about breakdowns and jank for GestureScrollBegin and GestureScrollUpdate.
17
18-- Select EventLatency events.
19DROP VIEW IF EXISTS event_latency;
20CREATE VIEW event_latency
21AS
22SELECT
23  *,
24  EXTRACT_ARG(arg_set_id, "event_latency.event_type") AS event_type
25FROM slice
26WHERE
27  name = "EventLatency";
28
29-- Select breakdowns related to EventLatencies from `event_latency` table.
30DROP VIEW IF EXISTS event_latency_breakdowns;
31CREATE VIEW event_latency_breakdowns
32AS
33SELECT
34  slice.id AS slice_id,
35  slice.name AS name,
36  slice.dur AS dur,
37  slice.track_id AS track_id,
38  slice.ts AS ts,
39  event_latency.slice_id AS event_latency_id,
40  event_latency.track_id AS event_latency_track_id,
41  event_latency.ts AS event_latency_ts,
42  event_latency.dur AS event_latency_dur,
43  event_latency.event_type AS event_type
44FROM slice JOIN event_latency
45  ON slice.parent_id = event_latency.slice_id;
46
47-- The function takes a breakdown name and checks if the breakdown name is known or not.
48SELECT CREATE_FUNCTION(
49  'InvalidNameOrNull(name STRING)',
50  -- Returns the input breakdown name if it's an unknown breakdown, NULL otherwise.
51  'STRING',
52  'SELECT
53    CASE
54      WHEN
55      $name not in (
56        "GenerationToBrowserMain", "GenerationToRendererCompositor",
57        "BrowserMainToRendererCompositor", "RendererCompositorQueueingDelay",
58        "RendererCompositorToMain", "RendererCompositorProcessing",
59        "RendererMainProcessing", "EndActivateToSubmitCompositorFrame",
60        "SubmitCompositorFrameToPresentationCompositorFrame",
61        "ArrivedInRendererCompositorToTermination",
62        "RendererCompositorStartedToTermination",
63        "RendererMainFinishedToTermination",
64        "RendererCompositorFinishedToTermination",
65        "RendererMainStartedToTermination",
66        "RendererCompositorFinishedToBeginImplFrame",
67        "RendererCompositorFinishedToCommit",
68        "RendererCompositorFinishedToEndCommit",
69        "RendererCompositorFinishedToActivation",
70        "RendererCompositorFinishedToEndActivate",
71        "RendererCompositorFinishedToSubmitCompositorFrame",
72        "RendererMainFinishedToBeginImplFrame",
73        "RendererMainFinishedToSendBeginMainFrame",
74        "RendererMainFinishedToCommit", "RendererMainFinishedToEndCommit",
75        "RendererMainFinishedToActivation", "RendererMainFinishedToEndActivate",
76        "RendererMainFinishedToSubmitCompositorFrame",
77        "BeginImplFrameToSendBeginMainFrame",
78        "RendererCompositorFinishedToSendBeginMainFrame",
79        "SendBeginMainFrameToCommit", "Commit",
80        "EndCommitToActivation", "Activation")
81        THEN $name
82      ELSE NULL
83    END'
84);
85
86-- Creates a view where each row contains information about one EventLatency event. Columns are duration of breakdowns.
87-- In the result it will be something like this:
88-- | event_latency_id | event_latency_ts | event_latency_dur | event_type       | GenerationToBrowserMainNs | BrowserMainToRendererCompositorNs |...|
89-- |------------------|------------------|-------------------|------------------|----------------------------|------------------------------------|---|
90-- | 123              | 1661947470       | 20                | 1234567          | 30                         | 50                                 |   |
91DROP VIEW IF EXISTS event_latency_to_breakdowns;
92CREATE VIEW event_latency_to_breakdowns
93AS
94SELECT
95  event_latency_id,
96  event_latency_track_id,
97  event_latency_ts,
98  event_latency_dur,
99  event_type,
100  max(CASE WHEN name = "GenerationToRendererCompositor" THEN dur END) AS GenerationToRendererCompositorNs,
101  max(CASE WHEN name = "GenerationToBrowserMain" THEN dur END) AS GenerationToBrowserMainNs,
102  max(CASE WHEN name = "BrowserMainToRendererCompositor" THEN dur END) AS BrowserMainToRendererCompositorNs,
103  max(CASE WHEN name = "RendererCompositorQueueingDelay" THEN dur END) AS RendererCompositorQueueingDelayNs,
104  max(CASE WHEN name = "RendererCompositorProcessing" THEN dur END) AS RendererCompositorProcessingNs,
105  max(CASE WHEN name = "RendererCompositorToMain" THEN dur END) AS RendererCompositorToMainNs,
106  max(CASE WHEN name = "RendererMainProcessing" THEN dur END) AS RendererMainProcessingNs,
107
108  max(CASE WHEN name = "ArrivedInRendererCompositorToTermination" THEN dur END) AS ArrivedInRendererCompositorToTerminationNs,
109  max(CASE WHEN name = "RendererCompositorStartedToTermination" THEN dur END) AS RendererCompositorStartedToTerminationNs,
110  max(CASE WHEN name = "RendererCompositorFinishedToTermination" THEN dur END) AS RendererCompositorFinishedToTerminationNs,
111  max(CASE WHEN name = "RendererMainStartedToTermination" THEN dur END) AS RendererMainStartedToTerminationNs,
112  max(CASE WHEN name = "RendererMainFinishedToTermination" THEN dur END) AS RendererMainFinishedToTerminationNs,
113
114  max(CASE WHEN name = "BeginImplFrameToSendBeginMainFrame" THEN dur END) AS BeginImplFrameToSendBeginMainFrameNs,
115  max(CASE WHEN name = "RendererCompositorFinishedToSendBeginMainFrame" THEN dur END) AS RendererCompositorFinishedToSendBeginMainFrameNs,
116  max(CASE WHEN name = "RendererCompositorFinishedToBeginImplFrame" THEN dur END) AS RendererCompositorFinishedToBeginImplFrameNs,
117  max(CASE WHEN name = "RendererCompositorFinishedToCommit" THEN dur END) AS RendererCompositorFinishedToCommitNs,
118  max(CASE WHEN name = "RendererCompositorFinishedToEndCommit" THEN dur END) AS RendererCompositorFinishedToEndCommitNs,
119  max(CASE WHEN name = "RendererCompositorFinishedToActivation" THEN dur END) AS RendererCompositorFinishedToActivationNs,
120  max(CASE WHEN name = "RendererCompositorFinishedToEndActivate" THEN dur END) AS RendererCompositorFinishedToEndActivateNs,
121  max(CASE WHEN name = "RendererCompositorFinishedToSubmitCompositorFrame" THEN dur END) AS RendererCompositorFinishedToSubmitCompositorFrameNs,
122  max(CASE WHEN name = "RendererMainFinishedToBeginImplFrame" THEN dur END) AS RendererMainFinishedToBeginImplFrameNs,
123  max(CASE WHEN name = "RendererMainFinishedToSendBeginMainFrame" THEN dur END) AS RendererMainFinishedToSendBeginMainFrameNs,
124  max(CASE WHEN name = "RendererMainFinishedToCommit" THEN dur END) AS RendererMainFinishedToCommitNs,
125  max(CASE WHEN name = "RendererMainFinishedToEndCommit" THEN dur END) AS RendererMainFinishedToEndCommitNs,
126  max(CASE WHEN name = "RendererMainFinishedToActivation" THEN dur END) AS RendererMainFinishedToActivationNs,
127  max(CASE WHEN name = "RendererMainFinishedToEndActivate" THEN dur END) AS RendererMainFinishedToEndActivateNs,
128  max(CASE WHEN name = "RendererMainFinishedToSubmitCompositorFrame" THEN dur END) AS RendererMainFinishedToSubmitCompositorFrameNs,
129
130  max(CASE WHEN name = "EndActivateToSubmitCompositorFrame" THEN dur END) AS EndActivateToSubmitCompositorFrameNs,
131  max(CASE WHEN name = "SubmitCompositorFrameToPresentationCompositorFrame" THEN dur END) AS SubmitCompositorFrameToPresentationCompositorFrameNs,
132  max(CASE WHEN name = "SendBeginMainFrameToCommit" THEN dur END) AS SendBeginMainFrameToCommitNs,
133  max(CASE WHEN name = "Commit" THEN dur END) AS CommitNs,
134  max(CASE WHEN name = "EndCommitToActivation" THEN dur END) AS EndCommitToActivationNs,
135  max(CASE WHEN name = "Activation" THEN dur END) AS ActivationNs,
136  -- This column indicates whether there are unknown breakdowns.
137  -- Contains: NULL if there are no unknown breakdowns, otherwise a list of unknown breakdows.
138  group_concat(InvalidNameOrNull(name), ', ') AS unknown_stages_seen
139FROM event_latency_breakdowns
140GROUP BY event_latency_id;
141