• 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
16DROP TABLE IF EXISTS android_jank_cuj_main_thread;
17CREATE TABLE android_jank_cuj_main_thread AS
18SELECT cuj_id, cuj.upid, utid, thread.name, thread_track.id AS track_id
19FROM thread
20JOIN android_jank_cuj cuj USING (upid)
21JOIN thread_track USING (utid)
22JOIN android_jank_cuj_param p USING (cuj_id)
23WHERE
24  (p.main_thread_override IS NULL AND thread.is_main_thread)
25  -- Some CUJs use a dedicated thread for Choreographer callbacks
26  OR (p.main_thread_override = thread.name);
27
28SELECT CREATE_VIEW_FUNCTION(
29  'ANDROID_JANK_CUJ_APP_THREAD(thread_name STRING)',
30  'cuj_id INT, upid INT, utid INT, name STRING, track_id INT',
31  '
32  SELECT
33    cuj_id,
34    cuj.upid,
35    utid,
36    thread.name,
37    thread_track.id AS track_id
38  FROM thread
39  JOIN android_jank_cuj cuj USING (upid)
40  JOIN thread_track USING (utid)
41  WHERE thread.name = $thread_name;
42  '
43);
44
45DROP TABLE IF EXISTS android_jank_cuj_render_thread;
46CREATE TABLE android_jank_cuj_render_thread AS
47SELECT * FROM ANDROID_JANK_CUJ_APP_THREAD('RenderThread');
48
49DROP TABLE IF EXISTS android_jank_cuj_gpu_completion_thread;
50CREATE TABLE android_jank_cuj_gpu_completion_thread AS
51SELECT * FROM ANDROID_JANK_CUJ_APP_THREAD('GPU completion');
52
53DROP TABLE IF EXISTS android_jank_cuj_hwc_release_thread;
54CREATE TABLE android_jank_cuj_hwc_release_thread AS
55SELECT * FROM ANDROID_JANK_CUJ_APP_THREAD('HWC release');
56
57DROP TABLE IF EXISTS android_jank_cuj_sf_process;
58CREATE TABLE android_jank_cuj_sf_process AS
59SELECT * FROM process
60WHERE process.name = '/system/bin/surfaceflinger'
61LIMIT 1;
62
63DROP TABLE IF EXISTS android_jank_cuj_sf_main_thread;
64CREATE TABLE android_jank_cuj_sf_main_thread AS
65SELECT upid, utid, thread.name, thread_track.id AS track_id
66FROM thread
67JOIN android_jank_cuj_sf_process sf_process USING (upid)
68JOIN thread_track USING (utid)
69WHERE thread.is_main_thread;
70
71SELECT CREATE_VIEW_FUNCTION(
72  'ANDROID_JANK_CUJ_SF_THREAD(thread_name STRING)',
73  'upid INT, utid INT, name STRING, track_id INT',
74  '
75  SELECT upid, utid, thread.name, thread_track.id AS track_id
76  FROM thread
77  JOIN android_jank_cuj_sf_process sf_process USING (upid)
78  JOIN thread_track USING (utid)
79  WHERE thread.name = $thread_name;
80  '
81);
82
83DROP TABLE IF EXISTS android_jank_cuj_sf_gpu_completion_thread;
84CREATE TABLE android_jank_cuj_sf_gpu_completion_thread AS
85SELECT * FROM ANDROID_JANK_CUJ_SF_THREAD('GPU completion');
86
87DROP TABLE IF EXISTS android_jank_cuj_sf_render_engine_thread;
88CREATE TABLE android_jank_cuj_sf_render_engine_thread AS
89SELECT * FROM ANDROID_JANK_CUJ_SF_THREAD('RenderEngine');
90