//
// 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.

// @generated by protoc-gen-es v2.2.2 with parameter "target=ts"
// @generated from file protos/perfetto/metrics/android/hwcomposer.proto (package perfetto.protos, syntax proto2)
/* eslint-disable */

import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1";
import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1";
import type { Message } from "@bufbuild/protobuf";

/**
 * Describes the file protos/perfetto/metrics/android/hwcomposer.proto.
 */
export const file_protos_perfetto_metrics_android_hwcomposer: GenFile = /*@__PURE__*/
  fileDesc("CjBwcm90b3MvcGVyZmV0dG8vbWV0cmljcy9hbmRyb2lkL2h3Y29tcG9zZXIucHJvdG8SD3BlcmZldHRvLnByb3RvcyLzCgoYQW5kcm9pZEh3Y29tcG9zZXJNZXRyaWNzEiAKGGNvbXBvc2l0aW9uX3RvdGFsX2xheWVycxgBIAEoARIeChZjb21wb3NpdGlvbl9kcHVfbGF5ZXJzGAIgASgBEh4KFmNvbXBvc2l0aW9uX2dwdV9sYXllcnMYAyABKAESJQodY29tcG9zaXRpb25fZHB1X2NhY2hlZF9sYXllcnMYBCABKAESJAocY29tcG9zaXRpb25fc2ZfY2FjaGVkX2xheWVycxgFIAEoARIeChZjb21wb3NpdGlvbl9yY2RfbGF5ZXJzGA8gASgBEiAKGHNraXBwZWRfdmFsaWRhdGlvbl9jb3VudBgGIAEoBRIiChp1bnNraXBwZWRfdmFsaWRhdGlvbl9jb3VudBgHIAEoBRIiChpzZXBhcmF0ZWRfdmFsaWRhdGlvbl9jb3VudBgIIAEoBRIgChh1bmtub3duX3ZhbGlkYXRpb25fY291bnQYCSABKAUSIQoZYXZnX2FsbF9leGVjdXRpb25fdGltZV9tcxgKIAEoARIlCh1hdmdfc2tpcHBlZF9leGVjdXRpb25fdGltZV9tcxgLIAEoARInCh9hdmdfdW5za2lwcGVkX2V4ZWN1dGlvbl90aW1lX21zGAwgASgBEicKH2F2Z19zZXBhcmF0ZWRfZXhlY3V0aW9uX3RpbWVfbXMYDSABKAESUgoQZHB1X3ZvdGVfbWV0cmljcxgOIAMoCzI4LnBlcmZldHRvLnByb3Rvcy5BbmRyb2lkSHdjb21wb3Nlck1ldHJpY3MuRHB1Vm90ZU1ldHJpY3MSWAoTbWV0cmljc19wZXJfZGlzcGxheRgQIAMoCzI7LnBlcmZldHRvLnByb3Rvcy5BbmRyb2lkSHdjb21wb3Nlck1ldHJpY3MuTWV0cmljc1BlckRpc3BsYXkakAEKDkRwdVZvdGVNZXRyaWNzEgsKA3RpZBgBIAEoDRIaChJhdmdfZHB1X3ZvdGVfY2xvY2sYAiABKAESGwoTYXZnX2RwdV92b3RlX2F2Z19idxgDIAEoARIcChRhdmdfZHB1X3ZvdGVfcGVha19idxgEIAEoARIaChJhdmdfZHB1X3ZvdGVfcnRfYncYBSABKAEangQKEU1ldHJpY3NQZXJEaXNwbGF5EhIKCmRpc3BsYXlfaWQYASABKAkSIAoYY29tcG9zaXRpb25fdG90YWxfbGF5ZXJzGAIgASgBEh4KFmNvbXBvc2l0aW9uX2RwdV9sYXllcnMYAyABKAESHgoWY29tcG9zaXRpb25fZ3B1X2xheWVycxgEIAEoARIlCh1jb21wb3NpdGlvbl9kcHVfY2FjaGVkX2xheWVycxgFIAEoARIkChxjb21wb3NpdGlvbl9zZl9jYWNoZWRfbGF5ZXJzGAYgASgBEh4KFmNvbXBvc2l0aW9uX3JjZF9sYXllcnMYByABKAESIAoYc2tpcHBlZF92YWxpZGF0aW9uX2NvdW50GAggASgFEiIKGnVuc2tpcHBlZF92YWxpZGF0aW9uX2NvdW50GAkgASgFEiIKGnNlcGFyYXRlZF92YWxpZGF0aW9uX2NvdW50GAogASgFEiAKGHVua25vd25fdmFsaWRhdGlvbl9jb3VudBgLIAEoBRIhChlhdmdfYWxsX2V4ZWN1dGlvbl90aW1lX21zGAwgASgBEiUKHWF2Z19za2lwcGVkX2V4ZWN1dGlvbl90aW1lX21zGA0gASgBEicKH2F2Z191bnNraXBwZWRfZXhlY3V0aW9uX3RpbWVfbXMYDiABKAESJwofYXZnX3NlcGFyYXRlZF9leGVjdXRpb25fdGltZV9tcxgPIAEoAQ");

/**
 * @generated from message perfetto.protos.AndroidHwcomposerMetrics
 */
export type AndroidHwcomposerMetrics = Message<"perfetto.protos.AndroidHwcomposerMetrics"> & {
  /**
   * Counts the number of composition total layers in the trace. (non-weighted average)
   *
   * @generated from field: optional double composition_total_layers = 1;
   */
  compositionTotalLayers: number;

  /**
   * Counts the number of composition dpu layers in the trace. (non-weighted average)
   *
   * @generated from field: optional double composition_dpu_layers = 2;
   */
  compositionDpuLayers: number;

  /**
   * Counts the number of composition gpu layers in the trace. (non-weighted average)
   *
   * @generated from field: optional double composition_gpu_layers = 3;
   */
  compositionGpuLayers: number;

  /**
   * Counts the number of composition dpu cached layers in the trace. (non-weighted average)
   *
   * @generated from field: optional double composition_dpu_cached_layers = 4;
   */
  compositionDpuCachedLayers: number;

  /**
   * Counts the number of composition surfaceflinger cached layers in the trace.
   * (non-weighted average)
   *
   * @generated from field: optional double composition_sf_cached_layers = 5;
   */
  compositionSfCachedLayers: number;

  /**
   * Counts the number of composition rounded corner decoration layers in the trace.
   * (non-weighted average)
   *
   * @generated from field: optional double composition_rcd_layers = 15;
   */
  compositionRcdLayers: number;

  /**
   * Counts how many times validateDisplay is skipped.
   *
   * @generated from field: optional int32 skipped_validation_count = 6;
   */
  skippedValidationCount: number;

  /**
   * Counts how many times validateDisplay cannot be skipped.
   *
   * @generated from field: optional int32 unskipped_validation_count = 7;
   */
  unskippedValidationCount: number;

  /**
   * Counts how many times validateDisplay is already separated from presentDisplay
   * since the beginning.
   *
   * @generated from field: optional int32 separated_validation_count = 8;
   */
  separatedValidationCount: number;

  /**
   * Counts how many unhandled validation cases which might be caused by errors.
   *
   * @generated from field: optional int32 unknown_validation_count = 9;
   */
  unknownValidationCount: number;

  /**
   * the average of overall hwcomposer execution time.
   *
   * @generated from field: optional double avg_all_execution_time_ms = 10;
   */
  avgAllExecutionTimeMs: number;

  /**
   * the average of hwcomposer execution time for skipped validation cases.
   *
   * @generated from field: optional double avg_skipped_execution_time_ms = 11;
   */
  avgSkippedExecutionTimeMs: number;

  /**
   * the average of hwcomposer execution time for unskipped validation cases.
   *
   * @generated from field: optional double avg_unskipped_execution_time_ms = 12;
   */
  avgUnskippedExecutionTimeMs: number;

  /**
   * the average of hwcomposer execution time for separated validation cases.
   *
   * @generated from field: optional double avg_separated_execution_time_ms = 13;
   */
  avgSeparatedExecutionTimeMs: number;

  /**
   * DPU Vote Metrics for each thread track
   *
   * @generated from field: repeated perfetto.protos.AndroidHwcomposerMetrics.DpuVoteMetrics dpu_vote_metrics = 14;
   */
  dpuVoteMetrics: AndroidHwcomposerMetrics_DpuVoteMetrics[];

  /**
   * @generated from field: repeated perfetto.protos.AndroidHwcomposerMetrics.MetricsPerDisplay metrics_per_display = 16;
   */
  metricsPerDisplay: AndroidHwcomposerMetrics_MetricsPerDisplay[];
};

/**
 * Describes the message perfetto.protos.AndroidHwcomposerMetrics.
 * Use `create(AndroidHwcomposerMetricsSchema)` to create a new message.
 */
export const AndroidHwcomposerMetricsSchema: GenMessage<AndroidHwcomposerMetrics> = /*@__PURE__*/
  messageDesc(file_protos_perfetto_metrics_android_hwcomposer, 0);

/**
 * @generated from message perfetto.protos.AndroidHwcomposerMetrics.DpuVoteMetrics
 */
export type AndroidHwcomposerMetrics_DpuVoteMetrics = Message<"perfetto.protos.AndroidHwcomposerMetrics.DpuVoteMetrics"> & {
  /**
   * the thread ID that handles this track
   *
   * @generated from field: optional uint32 tid = 1;
   */
  tid: number;

  /**
   * the weighted average of DPU Vote Clock
   *
   * @generated from field: optional double avg_dpu_vote_clock = 2;
   */
  avgDpuVoteClock: number;

  /**
   * the weighted average of DPU Vote Avg Bandwidth
   *
   * @generated from field: optional double avg_dpu_vote_avg_bw = 3;
   */
  avgDpuVoteAvgBw: number;

  /**
   * the weighted average of DPU Vote Peak Bandwidth
   *
   * @generated from field: optional double avg_dpu_vote_peak_bw = 4;
   */
  avgDpuVotePeakBw: number;

  /**
   * the weighted average of DPU Vote RT (Real Time) Bandwidth
   *
   * @generated from field: optional double avg_dpu_vote_rt_bw = 5;
   */
  avgDpuVoteRtBw: number;
};

/**
 * Describes the message perfetto.protos.AndroidHwcomposerMetrics.DpuVoteMetrics.
 * Use `create(AndroidHwcomposerMetrics_DpuVoteMetricsSchema)` to create a new message.
 */
export const AndroidHwcomposerMetrics_DpuVoteMetricsSchema: GenMessage<AndroidHwcomposerMetrics_DpuVoteMetrics> = /*@__PURE__*/
  messageDesc(file_protos_perfetto_metrics_android_hwcomposer, 0, 0);

/**
 * @generated from message perfetto.protos.AndroidHwcomposerMetrics.MetricsPerDisplay
 */
export type AndroidHwcomposerMetrics_MetricsPerDisplay = Message<"perfetto.protos.AndroidHwcomposerMetrics.MetricsPerDisplay"> & {
  /**
   * Display ID in HWC
   *
   * @generated from field: optional string display_id = 1;
   */
  displayId: string;

  /**
   * Counts the number of composition total layers in the trace. (non-weighted average)
   *
   * @generated from field: optional double composition_total_layers = 2;
   */
  compositionTotalLayers: number;

  /**
   * Counts the number of composition dpu layers in the trace. (non-weighted average)
   *
   * @generated from field: optional double composition_dpu_layers = 3;
   */
  compositionDpuLayers: number;

  /**
   * Counts the number of composition gpu layers in the trace. (non-weighted average)
   *
   * @generated from field: optional double composition_gpu_layers = 4;
   */
  compositionGpuLayers: number;

  /**
   * Counts the number of composition dpu cached layers in the trace. (non-weighted average)
   *
   * @generated from field: optional double composition_dpu_cached_layers = 5;
   */
  compositionDpuCachedLayers: number;

  /**
   * Counts the number of composition surfaceflinger cached layers in the trace.
   * (non-weighted average)
   *
   * @generated from field: optional double composition_sf_cached_layers = 6;
   */
  compositionSfCachedLayers: number;

  /**
   * Counts the number of composition rounded corner decoration layers in the trace.
   * (non-weighted average)
   *
   * @generated from field: optional double composition_rcd_layers = 7;
   */
  compositionRcdLayers: number;

  /**
   * Counts how many times validateDisplay is skipped.
   *
   * @generated from field: optional int32 skipped_validation_count = 8;
   */
  skippedValidationCount: number;

  /**
   * Counts how many times validateDisplay cannot be skipped.
   *
   * @generated from field: optional int32 unskipped_validation_count = 9;
   */
  unskippedValidationCount: number;

  /**
   * Counts how many times validateDisplay is already separated from presentDisplay
   * since the beginning.
   *
   * @generated from field: optional int32 separated_validation_count = 10;
   */
  separatedValidationCount: number;

  /**
   * Counts how many unhandled validation cases which might be caused by errors.
   *
   * @generated from field: optional int32 unknown_validation_count = 11;
   */
  unknownValidationCount: number;

  /**
   * the average of overall hwcomposer execution time.
   *
   * @generated from field: optional double avg_all_execution_time_ms = 12;
   */
  avgAllExecutionTimeMs: number;

  /**
   * the average of hwcomposer execution time for skipped validation cases.
   *
   * @generated from field: optional double avg_skipped_execution_time_ms = 13;
   */
  avgSkippedExecutionTimeMs: number;

  /**
   * the average of hwcomposer execution time for unskipped validation cases.
   *
   * @generated from field: optional double avg_unskipped_execution_time_ms = 14;
   */
  avgUnskippedExecutionTimeMs: number;

  /**
   * the average of hwcomposer execution time for separated validation cases.
   *
   * @generated from field: optional double avg_separated_execution_time_ms = 15;
   */
  avgSeparatedExecutionTimeMs: number;
};

/**
 * Describes the message perfetto.protos.AndroidHwcomposerMetrics.MetricsPerDisplay.
 * Use `create(AndroidHwcomposerMetrics_MetricsPerDisplaySchema)` to create a new message.
 */
export const AndroidHwcomposerMetrics_MetricsPerDisplaySchema: GenMessage<AndroidHwcomposerMetrics_MetricsPerDisplay> = /*@__PURE__*/
  messageDesc(file_protos_perfetto_metrics_android_hwcomposer, 0, 1);

