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 17DROP VIEW IF EXISTS android_jank_cuj_event; 18CREATE VIEW android_jank_cuj_event AS 19-- Computed CUJ boundaries. 20SELECT 21 'slice' AS track_type, 22 cuj.cuj_name AS track_name, 23 boundary.ts, 24 boundary.dur, 25 cuj.cuj_name || ' (adjusted, id=' || cuj_id || ') ' AS slice_name, 26 'CUJ Boundaries' AS group_name 27FROM android_jank_cuj cuj 28JOIN android_jank_cuj_boundary boundary USING (cuj_id) 29UNION ALL 30-- Computed frame boundaries on the Main Thread. 31SELECT 32 'slice' AS track_type, 33 cuj.cuj_name || ' MT ' || vsync AS track_name, 34 boundary.ts, 35 boundary.dur, 36 vsync || '' AS slice_name, 37 cuj.cuj_name || ' - MT frame boundaries' AS group_name 38FROM android_jank_cuj cuj 39JOIN android_jank_cuj_main_thread_frame_boundary boundary USING (cuj_id) 40UNION ALL 41-- Computed frame boundaries on the Render Thread. 42SELECT 43 'slice' AS track_type, 44 cuj.cuj_name || ' RT ' || vsync AS track_name, 45 boundary.ts, 46 boundary.dur, 47 vsync || '' AS slice_name, 48 cuj.cuj_name || ' - RT frame boundaries' AS group_name 49FROM android_jank_cuj cuj 50JOIN android_jank_cuj_render_thread_frame_boundary boundary USING (cuj_id) 51UNION ALL 52-- Computed overall frame boundaries not specific to any thread. 53SELECT 54 'slice' AS track_type, 55 cuj.cuj_name || ' ' || vsync AS track_name, 56 f.ts, 57 f.dur, 58 vsync || ' [app_missed=' || f.app_missed || ']' AS slice_name, 59 cuj.cuj_name || ' - frames' AS group_name 60FROM android_jank_cuj cuj 61JOIN android_jank_cuj_frame f USING (cuj_id) 62UNION ALL 63-- Computed frame boundaries on the SF Main Thread 64SELECT 65 'slice' AS track_type, 66 cuj.cuj_name || ' SF MT ' || vsync AS track_name, 67 boundary.ts, 68 boundary.dur, 69 vsync || '' AS slice_name, 70 cuj.cuj_name || ' - SF MT frame boundaries' AS group_name 71FROM android_jank_cuj cuj 72JOIN android_jank_cuj_sf_main_thread_frame_boundary boundary USING (cuj_id) 73UNION ALL 74-- Computed frame boundaries on the SF RenderEngine Thread. 75SELECT 76 'slice' AS track_type, 77 cuj.cuj_name || ' SF RE ' || vsync AS track_name, 78 boundary.ts, 79 boundary.dur, 80 vsync || '' AS slice_name, 81 cuj.cuj_name || ' - SF RE frame boundaries' AS group_name 82FROM android_jank_cuj cuj 83JOIN android_jank_cuj_sf_render_engine_frame_boundary boundary USING (cuj_id); 84