• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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