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