• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*
2 * Copyright (C) 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 *      http://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
17syntax = "proto2";
18
19package perfetto.protos;
20
21message AndroidHwcomposerMetrics {
22  // Counts the number of composition total layers in the trace. (non-weighted average)
23  optional double composition_total_layers = 1;
24
25  // Counts the number of composition dpu layers in the trace. (non-weighted average)
26  optional double composition_dpu_layers = 2;
27
28  // Counts the number of composition gpu layers in the trace. (non-weighted average)
29  optional double composition_gpu_layers = 3;
30
31  // Counts the number of composition dpu cached layers in the trace. (non-weighted average)
32  optional double composition_dpu_cached_layers = 4;
33
34  // Counts the number of composition surfaceflinger cached layers in the trace.
35  // (non-weighted average)
36  optional double composition_sf_cached_layers = 5;
37
38  // Counts the number of composition rounded corner decoration layers in the trace.
39  // (non-weighted average)
40  optional double composition_rcd_layers = 15;
41
42  // Counts how many times validateDisplay is skipped.
43  optional int32 skipped_validation_count = 6;
44
45  // Counts how many times validateDisplay cannot be skipped.
46  optional int32 unskipped_validation_count = 7;
47
48  // Counts how many times validateDisplay is already separated from presentDisplay
49  // since the beginning.
50  optional int32 separated_validation_count = 8;
51
52  // Counts how many unhandled validation cases which might be caused by errors.
53  optional int32 unknown_validation_count = 9;
54
55  // the average of overall hwcomposer execution time.
56  optional double avg_all_execution_time_ms = 10;
57
58  // the average of hwcomposer execution time for skipped validation cases.
59  optional double avg_skipped_execution_time_ms = 11;
60
61  // the average of hwcomposer execution time for unskipped validation cases.
62  optional double avg_unskipped_execution_time_ms = 12;
63
64  // the average of hwcomposer execution time for separated validation cases.
65  optional double avg_separated_execution_time_ms = 13;
66
67  message DpuVoteMetrics {
68    // the thread ID that handles this track
69    optional uint32 tid = 1;
70
71    // the weighted average of DPU Vote Clock
72    optional double avg_dpu_vote_clock = 2;
73
74    // the weighted average of DPU Vote Avg Bandwidth
75    optional double avg_dpu_vote_avg_bw = 3;
76
77    // the weighted average of DPU Vote Peak Bandwidth
78    optional double avg_dpu_vote_peak_bw = 4;
79
80    // the weighted average of DPU Vote RT (Real Time) Bandwidth
81    optional double avg_dpu_vote_rt_bw = 5;
82  }
83
84  // DPU Vote Metrics for each thread track
85  repeated DpuVoteMetrics dpu_vote_metrics = 14;
86
87  message MetricsPerDisplay {
88    // Display ID in HWC
89    optional string display_id = 1;
90
91    // Counts the number of composition total layers in the trace. (non-weighted average)
92    optional double composition_total_layers = 2;
93
94    // Counts the number of composition dpu layers in the trace. (non-weighted average)
95    optional double composition_dpu_layers = 3;
96
97    // Counts the number of composition gpu layers in the trace. (non-weighted average)
98    optional double composition_gpu_layers = 4;
99
100    // Counts the number of composition dpu cached layers in the trace. (non-weighted average)
101    optional double composition_dpu_cached_layers = 5;
102
103    // Counts the number of composition surfaceflinger cached layers in the trace.
104    // (non-weighted average)
105    optional double composition_sf_cached_layers = 6;
106
107    // Counts the number of composition rounded corner decoration layers in the trace.
108    // (non-weighted average)
109    optional double composition_rcd_layers = 7;
110
111    // Counts how many times validateDisplay is skipped.
112    optional int32 skipped_validation_count = 8;
113
114    // Counts how many times validateDisplay cannot be skipped.
115    optional int32 unskipped_validation_count = 9;
116
117    // Counts how many times validateDisplay is already separated from presentDisplay
118    // since the beginning.
119    optional int32 separated_validation_count = 10;
120
121    // Counts how many unhandled validation cases which might be caused by errors.
122    optional int32 unknown_validation_count = 11;
123
124    // the average of overall hwcomposer execution time.
125    optional double avg_all_execution_time_ms = 12;
126
127    // the average of hwcomposer execution time for skipped validation cases.
128    optional double avg_skipped_execution_time_ms = 13;
129
130    // the average of hwcomposer execution time for unskipped validation cases.
131    optional double avg_unskipped_execution_time_ms = 14;
132
133    // the average of hwcomposer execution time for separated validation cases.
134    optional double avg_separated_execution_time_ms = 15;
135  }
136
137  repeated MetricsPerDisplay metrics_per_display = 16;
138}
139