//
// Copyright (C) 2020 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/surfaceflinger.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/surfaceflinger.proto.
 */
export const file_protos_perfetto_metrics_android_surfaceflinger: GenFile = /*@__PURE__*/
  fileDesc("CjRwcm90b3MvcGVyZmV0dG8vbWV0cmljcy9hbmRyb2lkL3N1cmZhY2VmbGluZ2VyLnByb3RvEg9wZXJmZXR0by5wcm90b3Mi1QQKG0FuZHJvaWRTdXJmYWNlZmxpbmdlck1ldHJpYxIVCg1taXNzZWRfZnJhbWVzGAEgASgNEhkKEW1pc3NlZF9od2NfZnJhbWVzGAIgASgNEhkKEW1pc3NlZF9ncHVfZnJhbWVzGAMgASgNEhkKEW1pc3NlZF9mcmFtZV9yYXRlGAQgASgBEh0KFW1pc3NlZF9od2NfZnJhbWVfcmF0ZRgFIAEoARIdChVtaXNzZWRfZ3B1X2ZyYW1lX3JhdGUYBiABKAESFwoPZ3B1X2ludm9jYXRpb25zGAcgASgNEh4KFmF2Z19ncHVfd2FpdGluZ19kdXJfbXMYCCABKAESKgoidG90YWxfbm9uX2VtcHR5X2dwdV93YWl0aW5nX2R1cl9tcxgJIAEoARJbChNtZXRyaWNzX3Blcl9kaXNwbGF5GAogAygLMj4ucGVyZmV0dG8ucHJvdG9zLkFuZHJvaWRTdXJmYWNlZmxpbmdlck1ldHJpYy5NZXRyaWNzUGVyRGlzcGxheRrNAQoRTWV0cmljc1BlckRpc3BsYXkSEgoKZGlzcGxheV9pZBgBIAEoCRIVCg1taXNzZWRfZnJhbWVzGAIgASgNEhkKEW1pc3NlZF9od2NfZnJhbWVzGAMgASgNEhkKEW1pc3NlZF9ncHVfZnJhbWVzGAQgASgNEhkKEW1pc3NlZF9mcmFtZV9yYXRlGAUgASgBEh0KFW1pc3NlZF9od2NfZnJhbWVfcmF0ZRgGIAEoARIdChVtaXNzZWRfZ3B1X2ZyYW1lX3JhdGUYByABKAE");

/**
 * @generated from message perfetto.protos.AndroidSurfaceflingerMetric
 */
export type AndroidSurfaceflingerMetric = Message<"perfetto.protos.AndroidSurfaceflingerMetric"> & {
  /**
   * Counts the number of missed frames in the trace.
   *
   * @generated from field: optional uint32 missed_frames = 1;
   */
  missedFrames: number;

  /**
   * Counts the number of missed HWC frames in the trace.
   *
   * @generated from field: optional uint32 missed_hwc_frames = 2;
   */
  missedHwcFrames: number;

  /**
   * Counts the number of missed GPU frames in the trace.
   *
   * @generated from field: optional uint32 missed_gpu_frames = 3;
   */
  missedGpuFrames: number;

  /**
   * Calculate the number of missed frames divided by
   * total frames
   *
   * @generated from field: optional double missed_frame_rate = 4;
   */
  missedFrameRate: number;

  /**
   * Calculate the number of missed HWC frames divided by
   * total HWC frames
   *
   * @generated from field: optional double missed_hwc_frame_rate = 5;
   */
  missedHwcFrameRate: number;

  /**
   * Calculate the number of missed GPU frames divided by
   * total GPU frames
   *
   * @generated from field: optional double missed_gpu_frame_rate = 6;
   */
  missedGpuFrameRate: number;

  /**
   * Count the number of times SurfaceFlinger needs to invoke GPU
   * for rendering some layers
   *
   * @generated from field: optional uint32 gpu_invocations = 7;
   */
  gpuInvocations: number;

  /**
   * Calculate the average duration of GPU request by SurfaceFlinger
   * since it enters the FenceMonitor's queue until it gets completed
   *
   * @generated from field: optional double avg_gpu_waiting_dur_ms = 8;
   */
  avgGpuWaitingDurMs: number;

  /**
   * Calculate the total duration when there is at least one GPU request
   * by SurfaceFlinger that is still waiting for GPU to complete the
   * request.
   * This also equals to the total duration of
   * "waiting for GPU completion <fence_num>" in SurfaceFlinger.
   *
   * @generated from field: optional double total_non_empty_gpu_waiting_dur_ms = 9;
   */
  totalNonEmptyGpuWaitingDurMs: number;

  /**
   * @generated from field: repeated perfetto.protos.AndroidSurfaceflingerMetric.MetricsPerDisplay metrics_per_display = 10;
   */
  metricsPerDisplay: AndroidSurfaceflingerMetric_MetricsPerDisplay[];
};

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

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

  /**
   * Counts the number of missed frames in the trace.
   *
   * @generated from field: optional uint32 missed_frames = 2;
   */
  missedFrames: number;

  /**
   * Counts the number of missed HWC frames in the trace.
   *
   * @generated from field: optional uint32 missed_hwc_frames = 3;
   */
  missedHwcFrames: number;

  /**
   * Counts the number of missed GPU frames in the trace.
   *
   * @generated from field: optional uint32 missed_gpu_frames = 4;
   */
  missedGpuFrames: number;

  /**
   * Calculate the number of missed frames divided by
   * total frames
   *
   * @generated from field: optional double missed_frame_rate = 5;
   */
  missedFrameRate: number;

  /**
   * Calculate the number of missed HWC frames divided by
   * total HWC frames
   *
   * @generated from field: optional double missed_hwc_frame_rate = 6;
   */
  missedHwcFrameRate: number;

  /**
   * Calculate the number of missed GPU frames divided by
   * total GPU frames
   *
   * @generated from field: optional double missed_gpu_frame_rate = 7;
   */
  missedGpuFrameRate: number;
};

/**
 * Describes the message perfetto.protos.AndroidSurfaceflingerMetric.MetricsPerDisplay.
 * Use `create(AndroidSurfaceflingerMetric_MetricsPerDisplaySchema)` to create a new message.
 */
export const AndroidSurfaceflingerMetric_MetricsPerDisplaySchema: GenMessage<AndroidSurfaceflingerMetric_MetricsPerDisplay> = /*@__PURE__*/
  messageDesc(file_protos_perfetto_metrics_android_surfaceflinger, 0, 0);

