1-- 2-- Copyright 2021 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 16SELECT RUN_METRIC( 17 'android/composition_layers.sql', 18 'track_name', 'HWComposer: Total Layer', 19 'output', 'total_layers' 20); 21 22SELECT RUN_METRIC( 23 'android/composition_layers.sql', 24 'track_name', 'HWComposer: DPU Layer', 25 'output', 'dpu_layers' 26); 27 28SELECT RUN_METRIC( 29 'android/composition_layers.sql', 30 'track_name', 'HWComposer: GPU Layer', 31 'output', 'gpu_layers' 32); 33 34SELECT RUN_METRIC( 35 'android/composition_layers.sql', 36 'track_name', 'HWComposer: DPU Cached Layer', 37 'output', 'dpu_cached_layers' 38); 39 40SELECT RUN_METRIC( 41 'android/composition_layers.sql', 42 'track_name', 'HWComposer: SF Cached Layer', 43 'output', 'sf_cached_layers' 44); 45 46SELECT RUN_METRIC( 47 'android/composer_execution.sql', 48 'output', 'hwc_execution_spans' 49); 50 51 52SELECT RUN_METRIC('android/thread_counter_span_view.sql', 53 'table_name', 'dpu_vote_clock', 54 'counter_name', 'dpu_vote_clock' 55); 56 57SELECT RUN_METRIC('android/thread_counter_span_view.sql', 58 'table_name', 'dpu_vote_avg_bw', 59 'counter_name', 'dpu_vote_avg_bw' 60); 61 62SELECT RUN_METRIC('android/thread_counter_span_view.sql', 63 'table_name', 'dpu_vote_peak_bw', 64 'counter_name', 'dpu_vote_peak_bw' 65); 66 67SELECT RUN_METRIC('android/thread_counter_span_view.sql', 68 'table_name', 'dpu_vote_rt_bw', 69 'counter_name', 'dpu_vote_rt_bw' 70); 71 72DROP VIEW IF EXISTS dpu_vote_thread; 73CREATE VIEW dpu_vote_thread AS 74SELECT DISTINCT s.utid, t.tid 75FROM ( 76 SELECT utid FROM dpu_vote_clock_span 77 UNION 78 SELECT utid FROM dpu_vote_avg_bw_span 79 UNION 80 SELECT utid FROM dpu_vote_peak_bw_span 81) s JOIN thread t ON s.utid = t.utid; 82 83DROP VIEW IF EXISTS dpu_vote_metrics; 84CREATE VIEW dpu_vote_metrics AS 85SELECT AndroidHwcomposerMetrics_DpuVoteMetrics( 86 'tid', tid, 87 'avg_dpu_vote_clock', 88 (SELECT SUM(dpu_vote_clock_val * dur) / SUM(dur) 89 FROM dpu_vote_clock_span s WHERE s.utid = t.utid), 90 'avg_dpu_vote_avg_bw', 91 (SELECT SUM(dpu_vote_avg_bw_val * dur) / SUM(dur) 92 FROM dpu_vote_avg_bw_span s WHERE s.utid = t.utid), 93 'avg_dpu_vote_peak_bw', 94 (SELECT SUM(dpu_vote_peak_bw_val * dur) / SUM(dur) 95 FROM dpu_vote_peak_bw_span s WHERE s.utid = t.utid), 96 'avg_dpu_vote_rt_bw', 97 (SELECT SUM(dpu_vote_rt_bw_val * dur) / SUM(dur) 98 FROM dpu_vote_rt_bw_span s WHERE s.utid = t.utid) 99) AS proto 100FROM dpu_vote_thread t 101ORDER BY tid; 102 103DROP VIEW IF EXISTS android_hwcomposer_output; 104CREATE VIEW android_hwcomposer_output AS 105SELECT AndroidHwcomposerMetrics( 106 'composition_total_layers', (SELECT AVG(value) FROM total_layers), 107 'composition_dpu_layers', (SELECT AVG(value) FROM dpu_layers), 108 'composition_gpu_layers', (SELECT AVG(value) FROM gpu_layers), 109 'composition_dpu_cached_layers', (SELECT AVG(value) FROM dpu_cached_layers), 110 'composition_sf_cached_layers', (SELECT AVG(value) FROM sf_cached_layers), 111 'skipped_validation_count', 112 (SELECT COUNT(*) FROM hwc_execution_spans 113 WHERE validation_type = 'skipped_validation'), 114 'unskipped_validation_count', 115 (SELECT COUNT(*) FROM hwc_execution_spans 116 WHERE validation_type = 'unskipped_validation'), 117 'separated_validation_count', 118 (SELECT COUNT(*) FROM hwc_execution_spans 119 WHERE validation_type = 'separated_validation'), 120 'unknown_validation_count', 121 (SELECT COUNT(*) FROM hwc_execution_spans 122 WHERE validation_type = 'unknown'), 123 'avg_all_execution_time_ms', 124 (SELECT AVG(execution_time_ns) / 1e6 FROM hwc_execution_spans 125 WHERE validation_type != 'unknown'), 126 'avg_skipped_execution_time_ms', 127 (SELECT AVG(execution_time_ns) / 1e6 FROM hwc_execution_spans 128 WHERE validation_type = 'skipped_validation'), 129 'avg_unskipped_execution_time_ms', 130 (SELECT AVG(execution_time_ns) / 1e6 FROM hwc_execution_spans 131 WHERE validation_type = 'unskipped_validation'), 132 'avg_separated_execution_time_ms', 133 (SELECT AVG(execution_time_ns) / 1e6 FROM hwc_execution_spans 134 WHERE validation_type = 'separated_validation'), 135 'dpu_vote_metrics', (SELECT RepeatedField(proto) FROM dpu_vote_metrics) 136); 137