• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1--
2-- Copyright 2019 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
17
18DROP VIEW IF EXISTS {{table_name_prefix}}_main_thread;
19CREATE VIEW {{table_name_prefix}}_main_thread AS
20SELECT
21  process.name AS process_name,
22  thread.utid
23FROM thread
24JOIN {{process_allowlist_table}} process_allowlist USING (upid)
25JOIN process USING (upid)
26WHERE thread.is_main_thread;
27
28DROP VIEW IF EXISTS {{table_name_prefix}}_render_thread;
29CREATE VIEW {{table_name_prefix}}_render_thread AS
30SELECT
31  process.name AS process_name,
32  thread.utid
33FROM thread
34JOIN {{process_allowlist_table}} process_allowlist USING (upid)
35JOIN process USING (upid)
36WHERE thread.name = 'RenderThread';
37
38DROP VIEW IF EXISTS {{table_name_prefix}}_gpu_completion_thread;
39CREATE VIEW {{table_name_prefix}}_gpu_completion_thread AS
40SELECT
41  process.name AS process_name,
42  thread.utid
43FROM thread
44JOIN {{process_allowlist_table}} process_allowlist USING (upid)
45JOIN process USING (upid)
46WHERE thread.name = 'GPU completion';
47
48DROP VIEW IF EXISTS {{table_name_prefix}}_hwc_release_thread;
49CREATE VIEW {{table_name_prefix}}_hwc_release_thread AS
50SELECT
51  process.name AS process_name,
52  thread.utid
53FROM thread
54JOIN {{process_allowlist_table}} process_allowlist USING (upid)
55JOIN process USING (upid)
56WHERE thread.name = 'HWC release';
57
58DROP TABLE IF EXISTS {{table_name_prefix}}_main_thread_slices;
59CREATE TABLE {{table_name_prefix}}_main_thread_slices AS
60SELECT
61  process_name,
62  thread.utid,
63  slice.*,
64  ts + dur AS ts_end
65FROM slice
66JOIN thread_track ON slice.track_id = thread_track.id
67JOIN {{table_name_prefix}}_main_thread thread USING (utid)
68WHERE dur > 0;
69
70DROP VIEW IF EXISTS {{table_name_prefix}}_do_frame_slices;
71CREATE VIEW {{table_name_prefix}}_do_frame_slices AS
72SELECT
73  *,
74  CAST(STR_SPLIT(name, ' ', 1) AS INTEGER) AS vsync
75FROM {{table_name_prefix}}_main_thread_slices
76WHERE name GLOB 'Choreographer#doFrame*';
77
78DROP TABLE IF EXISTS {{table_name_prefix}}_render_thread_slices;
79CREATE TABLE {{table_name_prefix}}_render_thread_slices AS
80SELECT
81  process_name,
82  thread.utid,
83  slice.*,
84  ts + dur AS ts_end
85FROM slice
86JOIN thread_track ON slice.track_id = thread_track.id
87JOIN {{table_name_prefix}}_render_thread thread USING (utid)
88WHERE dur > 0;
89
90DROP VIEW IF EXISTS {{table_name_prefix}}_draw_frame_slices;
91CREATE VIEW {{table_name_prefix}}_draw_frame_slices AS
92SELECT
93  *,
94  CAST(STR_SPLIT(name, ' ', 1) AS INTEGER) AS vsync
95FROM {{table_name_prefix}}_render_thread_slices
96WHERE name GLOB 'DrawFrame*';
97
98DROP VIEW IF EXISTS {{table_name_prefix}}_gpu_completion_slices;
99CREATE VIEW {{table_name_prefix}}_gpu_completion_slices AS
100SELECT
101  process_name,
102  thread.utid,
103  slice.*,
104  ts + dur AS ts_end,
105  -- Extracts 1234 from 'waiting for GPU completion 1234'
106  CAST(STR_SPLIT(slice.name, ' ', 4) AS INTEGER) AS idx
107FROM slice
108JOIN thread_track ON slice.track_id = thread_track.id
109JOIN {{table_name_prefix}}_gpu_completion_thread thread USING (utid)
110WHERE slice.name GLOB 'waiting for GPU completion *'
111  AND dur > 0;
112
113DROP VIEW IF EXISTS {{table_name_prefix}}_hwc_release_slices;
114CREATE VIEW {{table_name_prefix}}_hwc_release_slices AS
115SELECT
116  process_name,
117  thread.utid,
118  slice.*,
119  ts + dur AS ts_end,
120  -- Extracts 1234 from 'waiting for HWC release 1234'
121  CAST(STR_SPLIT(slice.name, ' ', 4) AS INTEGER) AS idx
122FROM slice
123JOIN thread_track ON slice.track_id = thread_track.id
124JOIN {{table_name_prefix}}_hwc_release_thread thread USING (utid)
125WHERE slice.name GLOB 'waiting for HWC release *'
126  AND dur > 0;
127