| /* |
| * Copyright (C) 2021 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| syntax = "proto2"; |
| |
| package perfetto.protos; |
| |
| message AndroidHwcomposerMetrics { |
| // Counts the number of composition total layers in the trace. (non-weighted average) |
| optional double composition_total_layers = 1; |
| |
| // Counts the number of composition dpu layers in the trace. (non-weighted average) |
| optional double composition_dpu_layers = 2; |
| |
| // Counts the number of composition gpu layers in the trace. (non-weighted average) |
| optional double composition_gpu_layers = 3; |
| |
| // Counts the number of composition dpu cached layers in the trace. (non-weighted average) |
| optional double composition_dpu_cached_layers = 4; |
| |
| // Counts the number of composition surfaceflinger cached layers in the trace. |
| // (non-weighted average) |
| optional double composition_sf_cached_layers = 5; |
| |
| // Counts the number of composition rounded corner decoration layers in the trace. |
| // (non-weighted average) |
| optional double composition_rcd_layers = 15; |
| |
| // Counts how many times validateDisplay is skipped. |
| optional int32 skipped_validation_count = 6; |
| |
| // Counts how many times validateDisplay cannot be skipped. |
| optional int32 unskipped_validation_count = 7; |
| |
| // Counts how many times validateDisplay is already separated from presentDisplay |
| // since the beginning. |
| optional int32 separated_validation_count = 8; |
| |
| // Counts how many unhandled validation cases which might be caused by errors. |
| optional int32 unknown_validation_count = 9; |
| |
| // the average of overall hwcomposer execution time. |
| optional double avg_all_execution_time_ms = 10; |
| |
| // the average of hwcomposer execution time for skipped validation cases. |
| optional double avg_skipped_execution_time_ms = 11; |
| |
| // the average of hwcomposer execution time for unskipped validation cases. |
| optional double avg_unskipped_execution_time_ms = 12; |
| |
| // the average of hwcomposer execution time for separated validation cases. |
| optional double avg_separated_execution_time_ms = 13; |
| |
| message DpuVoteMetrics { |
| // the thread ID that handles this track |
| optional uint32 tid = 1; |
| |
| // the weighted average of DPU Vote Clock |
| optional double avg_dpu_vote_clock = 2; |
| |
| // the weighted average of DPU Vote Avg Bandwidth |
| optional double avg_dpu_vote_avg_bw = 3; |
| |
| // the weighted average of DPU Vote Peak Bandwidth |
| optional double avg_dpu_vote_peak_bw = 4; |
| |
| // the weighted average of DPU Vote RT (Real Time) Bandwidth |
| optional double avg_dpu_vote_rt_bw = 5; |
| } |
| |
| // DPU Vote Metrics for each thread track |
| repeated DpuVoteMetrics dpu_vote_metrics = 14; |
| |
| message MetricsPerDisplay { |
| // Display ID in HWC |
| optional string display_id = 1; |
| |
| // Counts the number of composition total layers in the trace. (non-weighted average) |
| optional double composition_total_layers = 2; |
| |
| // Counts the number of composition dpu layers in the trace. (non-weighted average) |
| optional double composition_dpu_layers = 3; |
| |
| // Counts the number of composition gpu layers in the trace. (non-weighted average) |
| optional double composition_gpu_layers = 4; |
| |
| // Counts the number of composition dpu cached layers in the trace. (non-weighted average) |
| optional double composition_dpu_cached_layers = 5; |
| |
| // Counts the number of composition surfaceflinger cached layers in the trace. |
| // (non-weighted average) |
| optional double composition_sf_cached_layers = 6; |
| |
| // Counts the number of composition rounded corner decoration layers in the trace. |
| // (non-weighted average) |
| optional double composition_rcd_layers = 7; |
| |
| // Counts how many times validateDisplay is skipped. |
| optional int32 skipped_validation_count = 8; |
| |
| // Counts how many times validateDisplay cannot be skipped. |
| optional int32 unskipped_validation_count = 9; |
| |
| // Counts how many times validateDisplay is already separated from presentDisplay |
| // since the beginning. |
| optional int32 separated_validation_count = 10; |
| |
| // Counts how many unhandled validation cases which might be caused by errors. |
| optional int32 unknown_validation_count = 11; |
| |
| // the average of overall hwcomposer execution time. |
| optional double avg_all_execution_time_ms = 12; |
| |
| // the average of hwcomposer execution time for skipped validation cases. |
| optional double avg_skipped_execution_time_ms = 13; |
| |
| // the average of hwcomposer execution time for unskipped validation cases. |
| optional double avg_unskipped_execution_time_ms = 14; |
| |
| // the average of hwcomposer execution time for separated validation cases. |
| optional double avg_separated_execution_time_ms = 15; |
| } |
| |
| repeated MetricsPerDisplay metrics_per_display = 16; |
| } |