//
// Copyright (C) 2023 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/trace/android/surfaceflinger_layers.proto (package perfetto.protos, syntax proto2)
/* eslint-disable */

import type { GenEnum, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1";
import { enumDesc, fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1";
import type { BlurRegion, ColorProto, ColorTransformProto, InputWindowInfoProto, RegionProto, SizeProto, TransformProto, TrustedOverlay } from "./surfaceflinger_common_pb";
import { file_protos_perfetto_trace_android_surfaceflinger_common } from "./surfaceflinger_common_pb";
import type { RectProto } from "./graphics/rect_pb";
import { file_protos_perfetto_trace_android_graphics_rect } from "./graphics/rect_pb";
import type { Message } from "@bufbuild/protobuf";

/**
 * Describes the file protos/perfetto/trace/android/surfaceflinger_layers.proto.
 */
export const file_protos_perfetto_trace_android_surfaceflinger_layers: GenFile = /*@__PURE__*/
  fileDesc("Cjlwcm90b3MvcGVyZmV0dG8vdHJhY2UvYW5kcm9pZC9zdXJmYWNlZmxpbmdlcl9sYXllcnMucHJvdG8SD3BlcmZldHRvLnByb3RvcyLYAQoUTGF5ZXJzVHJhY2VGaWxlUHJvdG8SFAoMbWFnaWNfbnVtYmVyGAEgASgGEjMKBWVudHJ5GAIgAygLMiQucGVyZmV0dG8ucHJvdG9zLkxheWVyc1NuYXBzaG90UHJvdG8SKQohcmVhbF90b19lbGFwc2VkX3RpbWVfb2Zmc2V0X25hbm9zGAMgASgGIkoKC01hZ2ljTnVtYmVyEgsKB0lOVkFMSUQQABIWCg5NQUdJQ19OVU1CRVJfTBDMssmiBRIWCg5NQUdJQ19OVU1CRVJfSBDSgo2qBCKDAgoTTGF5ZXJzU25hcHNob3RQcm90bxIeChZlbGFwc2VkX3JlYWx0aW1lX25hbm9zGAEgASgQEg0KBXdoZXJlGAIgASgJEiwKBmxheWVycxgDIAEoCzIcLnBlcmZldHRvLnByb3Rvcy5MYXllcnNQcm90bxIQCghod2NfYmxvYhgEIAEoCRIiChpleGNsdWRlc19jb21wb3NpdGlvbl9zdGF0ZRgFIAEoCBIWCg5taXNzZWRfZW50cmllcxgGIAEoDRIvCghkaXNwbGF5cxgHIAMoCzIdLnBlcmZldHRvLnByb3Rvcy5EaXNwbGF5UHJvdG8SEAoIdnN5bmNfaWQYCCABKAMiOgoLTGF5ZXJzUHJvdG8SKwoGbGF5ZXJzGAEgAygLMhsucGVyZmV0dG8ucHJvdG9zLkxheWVyUHJvdG8iiQIKDERpc3BsYXlQcm90bxIKCgJpZBgBIAEoBBIMCgRuYW1lGAIgASgJEhMKC2xheWVyX3N0YWNrGAMgASgNEigKBHNpemUYBCABKAsyGi5wZXJmZXR0by5wcm90b3MuU2l6ZVByb3RvEjoKFmxheWVyX3N0YWNrX3NwYWNlX3JlY3QYBSABKAsyGi5wZXJmZXR0by5wcm90b3MuUmVjdFByb3RvEjIKCXRyYW5zZm9ybRgGIAEoCzIfLnBlcmZldHRvLnByb3Rvcy5UcmFuc2Zvcm1Qcm90bxISCgppc192aXJ0dWFsGAcgASgIEg0KBWRwaV94GAggASgBEg0KBWRwaV95GAkgASgBIooSCgpMYXllclByb3RvEgoKAmlkGAEgASgFEgwKBG5hbWUYAiABKAkSFAoIY2hpbGRyZW4YAyADKAVCAhABEhUKCXJlbGF0aXZlcxgEIAMoBUICEAESDAoEdHlwZRgFIAEoCRI4ChJ0cmFuc3BhcmVudF9yZWdpb24YBiABKAsyHC5wZXJmZXR0by5wcm90b3MuUmVnaW9uUHJvdG8SNAoOdmlzaWJsZV9yZWdpb24YByABKAsyHC5wZXJmZXR0by5wcm90b3MuUmVnaW9uUHJvdG8SMwoNZGFtYWdlX3JlZ2lvbhgIIAEoCzIcLnBlcmZldHRvLnByb3Rvcy5SZWdpb25Qcm90bxITCgtsYXllcl9zdGFjaxgJIAEoDRIJCgF6GAogASgFEjAKCHBvc2l0aW9uGAsgASgLMh4ucGVyZmV0dG8ucHJvdG9zLlBvc2l0aW9uUHJvdG8SOgoScmVxdWVzdGVkX3Bvc2l0aW9uGAwgASgLMh4ucGVyZmV0dG8ucHJvdG9zLlBvc2l0aW9uUHJvdG8SKAoEc2l6ZRgNIAEoCzIaLnBlcmZldHRvLnByb3Rvcy5TaXplUHJvdG8SKAoEY3JvcBgOIAEoCzIaLnBlcmZldHRvLnByb3Rvcy5SZWN0UHJvdG8SMgoKZmluYWxfY3JvcBgPIAEoCzIaLnBlcmZldHRvLnByb3Rvcy5SZWN0UHJvdG9CAhgBEhEKCWlzX29wYXF1ZRgQIAEoCBISCgppbnZhbGlkYXRlGBEgASgIEhEKCWRhdGFzcGFjZRgSIAEoCRIUCgxwaXhlbF9mb3JtYXQYEyABKAkSKgoFY29sb3IYFCABKAsyGy5wZXJmZXR0by5wcm90b3MuQ29sb3JQcm90bxI0Cg9yZXF1ZXN0ZWRfY29sb3IYFSABKAsyGy5wZXJmZXR0by5wcm90b3MuQ29sb3JQcm90bxINCgVmbGFncxgWIAEoDRIyCgl0cmFuc2Zvcm0YFyABKAsyHy5wZXJmZXR0by5wcm90b3MuVHJhbnNmb3JtUHJvdG8SPAoTcmVxdWVzdGVkX3RyYW5zZm9ybRgYIAEoCzIfLnBlcmZldHRvLnByb3Rvcy5UcmFuc2Zvcm1Qcm90bxIOCgZwYXJlbnQYGSABKAUSGwoTel9vcmRlcl9yZWxhdGl2ZV9vZhgaIAEoBRI5Cg1hY3RpdmVfYnVmZmVyGBsgASgLMiIucGVyZmV0dG8ucHJvdG9zLkFjdGl2ZUJ1ZmZlclByb3RvEhUKDXF1ZXVlZF9mcmFtZXMYHCABKAUSFwoPcmVmcmVzaF9wZW5kaW5nGB0gASgIEi0KCWh3Y19mcmFtZRgeIAEoCzIaLnBlcmZldHRvLnByb3Rvcy5SZWN0UHJvdG8SMQoIaHdjX2Nyb3AYHyABKAsyHy5wZXJmZXR0by5wcm90b3MuRmxvYXRSZWN0UHJvdG8SFQoNaHdjX3RyYW5zZm9ybRggIAEoBRIXCgt3aW5kb3dfdHlwZRghIAEoBUICGAESEgoGYXBwX2lkGCIgASgFQgIYARJBChRod2NfY29tcG9zaXRpb25fdHlwZRgjIAEoDjIjLnBlcmZldHRvLnByb3Rvcy5Id2NDb21wb3NpdGlvblR5cGUSFAoMaXNfcHJvdGVjdGVkGCQgASgIEhIKCmN1cnJfZnJhbWUYJSABKAQSOQoNYmFycmllcl9sYXllchgmIAMoCzIiLnBlcmZldHRvLnByb3Rvcy5CYXJyaWVyTGF5ZXJQcm90bxI5ChBidWZmZXJfdHJhbnNmb3JtGCcgASgLMh8ucGVyZmV0dG8ucHJvdG9zLlRyYW5zZm9ybVByb3RvEh4KFmVmZmVjdGl2ZV9zY2FsaW5nX21vZGUYKCABKAUSFQoNY29ybmVyX3JhZGl1cxgpIAEoAhI7CghtZXRhZGF0YRgqIAMoCzIpLnBlcmZldHRvLnByb3Rvcy5MYXllclByb3RvLk1ldGFkYXRhRW50cnkSPAoTZWZmZWN0aXZlX3RyYW5zZm9ybRgrIAEoCzIfLnBlcmZldHRvLnByb3Rvcy5UcmFuc2Zvcm1Qcm90bxI2Cg1zb3VyY2VfYm91bmRzGCwgASgLMh8ucGVyZmV0dG8ucHJvdG9zLkZsb2F0UmVjdFByb3RvEi8KBmJvdW5kcxgtIAEoCzIfLnBlcmZldHRvLnByb3Rvcy5GbG9hdFJlY3RQcm90bxI2Cg1zY3JlZW5fYm91bmRzGC4gASgLMh8ucGVyZmV0dG8ucHJvdG9zLkZsb2F0UmVjdFByb3RvEkAKEWlucHV0X3dpbmRvd19pbmZvGC8gASgLMiUucGVyZmV0dG8ucHJvdG9zLklucHV0V2luZG93SW5mb1Byb3RvEjsKEmNvcm5lcl9yYWRpdXNfY3JvcBgwIAEoCzIfLnBlcmZldHRvLnByb3Rvcy5GbG9hdFJlY3RQcm90bxIVCg1zaGFkb3dfcmFkaXVzGDEgASgCEj0KD2NvbG9yX3RyYW5zZm9ybRgyIAEoCzIkLnBlcmZldHRvLnByb3Rvcy5Db2xvclRyYW5zZm9ybVByb3RvEhYKDmlzX3JlbGF0aXZlX29mGDMgASgIEh4KFmJhY2tncm91bmRfYmx1cl9yYWRpdXMYNCABKAUSEQoJb3duZXJfdWlkGDUgASgNEjEKDGJsdXJfcmVnaW9ucxg2IAMoCzIbLnBlcmZldHRvLnByb3Rvcy5CbHVyUmVnaW9uEhoKEmlzX3RydXN0ZWRfb3ZlcmxheRg3IAEoCBIfChdyZXF1ZXN0ZWRfY29ybmVyX3JhZGl1cxg4IAEoAhI1ChFkZXN0aW5hdGlvbl9mcmFtZRg5IAEoCzIaLnBlcmZldHRvLnByb3Rvcy5SZWN0UHJvdG8SEwoLb3JpZ2luYWxfaWQYOiABKA0SOAoPdHJ1c3RlZF9vdmVybGF5GDsgASgOMh8ucGVyZmV0dG8ucHJvdG9zLlRydXN0ZWRPdmVybGF5Gi8KDU1ldGFkYXRhRW50cnkSCwoDa2V5GAEgASgFEg0KBXZhbHVlGAIgASgJOgI4ASIlCg1Qb3NpdGlvblByb3RvEgkKAXgYASABKAISCQoBeRgCIAEoAiJKCg5GbG9hdFJlY3RQcm90bxIMCgRsZWZ0GAEgASgCEgsKA3RvcBgCIAEoAhINCgVyaWdodBgDIAEoAhIOCgZib3R0b20YBCABKAIiYQoRQWN0aXZlQnVmZmVyUHJvdG8SDQoFd2lkdGgYASABKA0SDgoGaGVpZ2h0GAIgASgNEg4KBnN0cmlkZRgDIAEoDRIOCgZmb3JtYXQYBCABKAUSDQoFdXNhZ2UYBSABKAQiNQoRQmFycmllckxheWVyUHJvdG8SCgoCaWQYASABKAUSFAoMZnJhbWVfbnVtYmVyGAIgASgEKr8BChJId2NDb21wb3NpdGlvblR5cGUSGAoUSFdDX1RZUEVfVU5TUEVDSUZJRUQQABITCg9IV0NfVFlQRV9DTElFTlQQARITCg9IV0NfVFlQRV9ERVZJQ0UQAhIYChRIV0NfVFlQRV9TT0xJRF9DT0xPUhADEhMKD0hXQ19UWVBFX0NVUlNPUhAEEhUKEUhXQ19UWVBFX1NJREVCQU5EEAUSHwobSFdDX1RZUEVfRElTUExBWV9ERUNPUkFUSU9OEAY", [file_protos_perfetto_trace_android_surfaceflinger_common, file_protos_perfetto_trace_android_graphics_rect]);

/**
 * Message used by Winscope to process legacy trace files.
 * Represents a file full of surface flinger trace entries.
 * Encoded, it should start with 0x4c 0x59 0x52 0x54 0x52 0x41 0x43 0x45
 * (.LYRTRACE), such that they can be easily identified.
 *
 * @generated from message perfetto.protos.LayersTraceFileProto
 */
export type LayersTraceFileProto = Message<"perfetto.protos.LayersTraceFileProto"> & {
  /**
   * Must be the first field, set to value in MagicNumber
   *
   * @generated from field: optional fixed64 magic_number = 1;
   */
  magicNumber: bigint;

  /**
   * @generated from field: repeated perfetto.protos.LayersSnapshotProto entry = 2;
   */
  entry: LayersSnapshotProto[];

  /**
   * Offset between real-time clock and elapsed time clock in nanoseconds.
   * Calculated as: systemTime(SYSTEM_TIME_REALTIME) -
   * systemTime(SYSTEM_TIME_MONOTONIC)
   *
   * @generated from field: optional fixed64 real_to_elapsed_time_offset_nanos = 3;
   */
  realToElapsedTimeOffsetNanos: bigint;
};

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

/**
 * constant; MAGIC_NUMBER = (long) MAGIC_NUMBER_H << 32 |
 * MagicNumber.MAGIC_NUMBER_L (this is needed because enums have to be 32 bits
 * and there's no nice way to put 64bit constants into .proto files.
 *
 * @generated from enum perfetto.protos.LayersTraceFileProto.MagicNumber
 */
export enum LayersTraceFileProto_MagicNumber {
  /**
   * @generated from enum value: INVALID = 0;
   */
  INVALID = 0,

  /**
   * LYRT (little-endian ASCII)
   *
   * @generated from enum value: MAGIC_NUMBER_L = 1414682956;
   */
  MAGIC_NUMBER_L = 1414682956,

  /**
   * RACE (little-endian ASCII)
   *
   * @generated from enum value: MAGIC_NUMBER_H = 1162035538;
   */
  MAGIC_NUMBER_H = 1162035538,
}

/**
 * Describes the enum perfetto.protos.LayersTraceFileProto.MagicNumber.
 */
export const LayersTraceFileProto_MagicNumberSchema: GenEnum<LayersTraceFileProto_MagicNumber> = /*@__PURE__*/
  enumDesc(file_protos_perfetto_trace_android_surfaceflinger_layers, 0, 0);

/**
 * @generated from message perfetto.protos.LayersSnapshotProto
 */
export type LayersSnapshotProto = Message<"perfetto.protos.LayersSnapshotProto"> & {
  /**
   * elapsed realtime in nanos since boot of when this entry was logged
   *
   * @generated from field: optional sfixed64 elapsed_realtime_nanos = 1;
   */
  elapsedRealtimeNanos: bigint;

  /**
   * SurfaceFlinger's stage where the snapshot was triggered.
   * Currently either "visibleRegionsDirty" or "bufferLatched".
   *
   * @generated from field: optional string where = 2;
   */
  where: string;

  /**
   * @generated from field: optional perfetto.protos.LayersProto layers = 3;
   */
  layers?: LayersProto;

  /**
   * Blob for the current HWC information for all layers, reported by dumpsys.
   * Example:
   *   "maxDownScale: 4, maxFullWidth: 8192, HWState: 1, AssignedState: 3, ..."
   *
   * @generated from field: optional string hwc_blob = 4;
   */
  hwcBlob: string;

  /**
   * Excludes state sent during composition like visible region and composition
   * type.
   *
   * @generated from field: optional bool excludes_composition_state = 5;
   */
  excludesCompositionState: boolean;

  /**
   * Number of missed entries since the last entry was recorded.
   *
   * @generated from field: optional uint32 missed_entries = 6;
   */
  missedEntries: number;

  /**
   * @generated from field: repeated perfetto.protos.DisplayProto displays = 7;
   */
  displays: DisplayProto[];

  /**
   * @generated from field: optional int64 vsync_id = 8;
   */
  vsyncId: bigint;
};

/**
 * Describes the message perfetto.protos.LayersSnapshotProto.
 * Use `create(LayersSnapshotProtoSchema)` to create a new message.
 */
export const LayersSnapshotProtoSchema: GenMessage<LayersSnapshotProto> = /*@__PURE__*/
  messageDesc(file_protos_perfetto_trace_android_surfaceflinger_layers, 1);

/**
 * Contains a list of all layers.
 *
 * @generated from message perfetto.protos.LayersProto
 */
export type LayersProto = Message<"perfetto.protos.LayersProto"> & {
  /**
   * @generated from field: repeated perfetto.protos.LayerProto layers = 1;
   */
  layers: LayerProto[];
};

/**
 * Describes the message perfetto.protos.LayersProto.
 * Use `create(LayersProtoSchema)` to create a new message.
 */
export const LayersProtoSchema: GenMessage<LayersProto> = /*@__PURE__*/
  messageDesc(file_protos_perfetto_trace_android_surfaceflinger_layers, 2);

/**
 * @generated from message perfetto.protos.DisplayProto
 */
export type DisplayProto = Message<"perfetto.protos.DisplayProto"> & {
  /**
   * @generated from field: optional uint64 id = 1;
   */
  id: bigint;

  /**
   * Display descriptor, e.g. "Built-In Screen"
   *
   * @generated from field: optional string name = 2;
   */
  name: string;

  /**
   * @generated from field: optional uint32 layer_stack = 3;
   */
  layerStack: number;

  /**
   * @generated from field: optional perfetto.protos.SizeProto size = 4;
   */
  size?: SizeProto;

  /**
   * @generated from field: optional perfetto.protos.RectProto layer_stack_space_rect = 5;
   */
  layerStackSpaceRect?: RectProto;

  /**
   * @generated from field: optional perfetto.protos.TransformProto transform = 6;
   */
  transform?: TransformProto;

  /**
   * @generated from field: optional bool is_virtual = 7;
   */
  isVirtual: boolean;

  /**
   * @generated from field: optional double dpi_x = 8;
   */
  dpiX: number;

  /**
   * @generated from field: optional double dpi_y = 9;
   */
  dpiY: number;
};

/**
 * Describes the message perfetto.protos.DisplayProto.
 * Use `create(DisplayProtoSchema)` to create a new message.
 */
export const DisplayProtoSchema: GenMessage<DisplayProto> = /*@__PURE__*/
  messageDesc(file_protos_perfetto_trace_android_surfaceflinger_layers, 3);

/**
 * Information about each layer.
 *
 * @generated from message perfetto.protos.LayerProto
 */
export type LayerProto = Message<"perfetto.protos.LayerProto"> & {
  /**
   * unique id per layer.
   *
   * @generated from field: optional int32 id = 1;
   */
  id: number;

  /**
   * unique name per layer.
   * Example: "Wallpaper".
   *
   * @generated from field: optional string name = 2;
   */
  name: string;

  /**
   * list of children this layer may have. May be empty.
   *
   * @generated from field: repeated int32 children = 3 [packed = true];
   */
  children: number[];

  /**
   * list of layers that are z order relative to this layer.
   *
   * @generated from field: repeated int32 relatives = 4 [packed = true];
   */
  relatives: number[];

  /**
   * The type of layer.
   * Examples: "ContainerLayer", "BufferStateLayer".
   *
   * @generated from field: optional string type = 5;
   */
  type: string;

  /**
   * @generated from field: optional perfetto.protos.RegionProto transparent_region = 6;
   */
  transparentRegion?: RegionProto;

  /**
   * @generated from field: optional perfetto.protos.RegionProto visible_region = 7;
   */
  visibleRegion?: RegionProto;

  /**
   * @generated from field: optional perfetto.protos.RegionProto damage_region = 8;
   */
  damageRegion?: RegionProto;

  /**
   * @generated from field: optional uint32 layer_stack = 9;
   */
  layerStack: number;

  /**
   * The layer's z order. Can be z order in layer stack, relative to parent,
   * or relative to another layer specified in zOrderRelative.
   *
   * @generated from field: optional int32 z = 10;
   */
  z: number;

  /**
   * The layer's position on the display.
   *
   * @generated from field: optional perfetto.protos.PositionProto position = 11;
   */
  position?: PositionProto;

  /**
   * The layer's requested position.
   *
   * @generated from field: optional perfetto.protos.PositionProto requested_position = 12;
   */
  requestedPosition?: PositionProto;

  /**
   * The layer's size.
   *
   * @generated from field: optional perfetto.protos.SizeProto size = 13;
   */
  size?: SizeProto;

  /**
   * The layer's crop in its own bounds.
   *
   * @generated from field: optional perfetto.protos.RectProto crop = 14;
   */
  crop?: RectProto;

  /**
   * The layer's crop in its parent's bounds.
   *
   * @generated from field: optional perfetto.protos.RectProto final_crop = 15 [deprecated = true];
   * @deprecated
   */
  finalCrop?: RectProto;

  /**
   * @generated from field: optional bool is_opaque = 16;
   */
  isOpaque: boolean;

  /**
   * @generated from field: optional bool invalidate = 17;
   */
  invalidate: boolean;

  /**
   * Composition states's dataspace.
   * Examples: "STANDARD_BT709", "STANDARD_BT601_625".
   * See full enum in
   * frameworks/native/libs/nativewindow/include/android/data_space.h
   *
   * @generated from field: optional string dataspace = 18;
   */
  dataspace: string;

  /**
   * Buffer's pixel format
   * Examples: "PIXEL_FORMAT_TRANSLUCENT", "PIXEL_FORMAT_RGBA_8888".
   * See full enum in frameworks/native/libs/ui/include/ui/PixelFormat.h
   *
   * @generated from field: optional string pixel_format = 19;
   */
  pixelFormat: string;

  /**
   * The layer's actual color.
   *
   * @generated from field: optional perfetto.protos.ColorProto color = 20;
   */
  color?: ColorProto;

  /**
   * The layer's requested color.
   *
   * @generated from field: optional perfetto.protos.ColorProto requested_color = 21;
   */
  requestedColor?: ColorProto;

  /**
   * Can be any combination of
   *    hidden = 0x01
   *    opaque = 0x02,
   *    secure = 0x80,
   *
   * @generated from field: optional uint32 flags = 22;
   */
  flags: number;

  /**
   * The layer's actual transform
   *
   * @generated from field: optional perfetto.protos.TransformProto transform = 23;
   */
  transform?: TransformProto;

  /**
   * The layer's requested transform.
   *
   * @generated from field: optional perfetto.protos.TransformProto requested_transform = 24;
   */
  requestedTransform?: TransformProto;

  /**
   * The parent layer. This value can be null if there is no parent.
   *
   * @generated from field: optional int32 parent = 25;
   */
  parent: number;

  /**
   * The layer that this layer has a z order relative to. This value can be
   * null.
   *
   * @generated from field: optional int32 z_order_relative_of = 26;
   */
  zOrderRelativeOf: number;

  /**
   * This value can be null if there's nothing to draw.
   *
   * @generated from field: optional perfetto.protos.ActiveBufferProto active_buffer = 27;
   */
  activeBuffer?: ActiveBufferProto;

  /**
   * The number of frames available.
   *
   * @generated from field: optional int32 queued_frames = 28;
   */
  queuedFrames: number;

  /**
   * @generated from field: optional bool refresh_pending = 29;
   */
  refreshPending: boolean;

  /**
   * The layer's composer backend destination frame
   *
   * @generated from field: optional perfetto.protos.RectProto hwc_frame = 30;
   */
  hwcFrame?: RectProto;

  /**
   * The layer's composer backend source crop
   *
   * @generated from field: optional perfetto.protos.FloatRectProto hwc_crop = 31;
   */
  hwcCrop?: FloatRectProto;

  /**
   * The layer's composer backend transform
   *
   * @generated from field: optional int32 hwc_transform = 32;
   */
  hwcTransform: number;

  /**
   * @generated from field: optional int32 window_type = 33 [deprecated = true];
   * @deprecated
   */
  windowType: number;

  /**
   * @generated from field: optional int32 app_id = 34 [deprecated = true];
   * @deprecated
   */
  appId: number;

  /**
   * The layer's composition type
   *
   * @generated from field: optional perfetto.protos.HwcCompositionType hwc_composition_type = 35;
   */
  hwcCompositionType: HwcCompositionType;

  /**
   * If it's a buffer layer, indicate if the content is protected
   *
   * @generated from field: optional bool is_protected = 36;
   */
  isProtected: boolean;

  /**
   * Current frame number being rendered.
   *
   * @generated from field: optional uint64 curr_frame = 37;
   */
  currFrame: bigint;

  /**
   * A list of barriers that the layer is waiting to update state.
   *
   * @generated from field: repeated perfetto.protos.BarrierLayerProto barrier_layer = 38;
   */
  barrierLayer: BarrierLayerProto[];

  /**
   * If active_buffer is not null, record its transform.
   *
   * @generated from field: optional perfetto.protos.TransformProto buffer_transform = 39;
   */
  bufferTransform?: TransformProto;

  /**
   * @generated from field: optional int32 effective_scaling_mode = 40;
   */
  effectiveScalingMode: number;

  /**
   * Layer's corner radius.
   *
   * @generated from field: optional float corner_radius = 41;
   */
  cornerRadius: number;

  /**
   * Metadata map. May be empty.
   *
   * @generated from field: map<int32, string> metadata = 42;
   */
  metadata: { [key: number]: string };

  /**
   * @generated from field: optional perfetto.protos.TransformProto effective_transform = 43;
   */
  effectiveTransform?: TransformProto;

  /**
   * @generated from field: optional perfetto.protos.FloatRectProto source_bounds = 44;
   */
  sourceBounds?: FloatRectProto;

  /**
   * @generated from field: optional perfetto.protos.FloatRectProto bounds = 45;
   */
  bounds?: FloatRectProto;

  /**
   * @generated from field: optional perfetto.protos.FloatRectProto screen_bounds = 46;
   */
  screenBounds?: FloatRectProto;

  /**
   * @generated from field: optional perfetto.protos.InputWindowInfoProto input_window_info = 47;
   */
  inputWindowInfo?: InputWindowInfoProto;

  /**
   * Crop used to draw the rounded corner.
   *
   * @generated from field: optional perfetto.protos.FloatRectProto corner_radius_crop = 48;
   */
  cornerRadiusCrop?: FloatRectProto;

  /**
   * length of the shadow to draw around the layer, it may be set on the
   * layer or set by a parent layer.
   *
   * @generated from field: optional float shadow_radius = 49;
   */
  shadowRadius: number;

  /**
   * @generated from field: optional perfetto.protos.ColorTransformProto color_transform = 50;
   */
  colorTransform?: ColorTransformProto;

  /**
   * @generated from field: optional bool is_relative_of = 51;
   */
  isRelativeOf: boolean;

  /**
   * Layer's background blur radius in pixels.
   *
   * @generated from field: optional int32 background_blur_radius = 52;
   */
  backgroundBlurRadius: number;

  /**
   * @generated from field: optional uint32 owner_uid = 53;
   */
  ownerUid: number;

  /**
   * Regions of a layer, where blur should be applied.
   *
   * @generated from field: repeated perfetto.protos.BlurRegion blur_regions = 54;
   */
  blurRegions: BlurRegion[];

  /**
   * @generated from field: optional bool is_trusted_overlay = 55;
   */
  isTrustedOverlay: boolean;

  /**
   * Corner radius explicitly set on layer rather than inherited
   *
   * @generated from field: optional float requested_corner_radius = 56;
   */
  requestedCornerRadius: number;

  /**
   * @generated from field: optional perfetto.protos.RectProto destination_frame = 57;
   */
  destinationFrame?: RectProto;

  /**
   * @generated from field: optional uint32 original_id = 58;
   */
  originalId: number;

  /**
   * @generated from field: optional perfetto.protos.TrustedOverlay trusted_overlay = 59;
   */
  trustedOverlay: TrustedOverlay;
};

/**
 * Describes the message perfetto.protos.LayerProto.
 * Use `create(LayerProtoSchema)` to create a new message.
 */
export const LayerProtoSchema: GenMessage<LayerProto> = /*@__PURE__*/
  messageDesc(file_protos_perfetto_trace_android_surfaceflinger_layers, 4);

/**
 * @generated from message perfetto.protos.PositionProto
 */
export type PositionProto = Message<"perfetto.protos.PositionProto"> & {
  /**
   * @generated from field: optional float x = 1;
   */
  x: number;

  /**
   * @generated from field: optional float y = 2;
   */
  y: number;
};

/**
 * Describes the message perfetto.protos.PositionProto.
 * Use `create(PositionProtoSchema)` to create a new message.
 */
export const PositionProtoSchema: GenMessage<PositionProto> = /*@__PURE__*/
  messageDesc(file_protos_perfetto_trace_android_surfaceflinger_layers, 5);

/**
 * @generated from message perfetto.protos.FloatRectProto
 */
export type FloatRectProto = Message<"perfetto.protos.FloatRectProto"> & {
  /**
   * @generated from field: optional float left = 1;
   */
  left: number;

  /**
   * @generated from field: optional float top = 2;
   */
  top: number;

  /**
   * @generated from field: optional float right = 3;
   */
  right: number;

  /**
   * @generated from field: optional float bottom = 4;
   */
  bottom: number;
};

/**
 * Describes the message perfetto.protos.FloatRectProto.
 * Use `create(FloatRectProtoSchema)` to create a new message.
 */
export const FloatRectProtoSchema: GenMessage<FloatRectProto> = /*@__PURE__*/
  messageDesc(file_protos_perfetto_trace_android_surfaceflinger_layers, 6);

/**
 * @generated from message perfetto.protos.ActiveBufferProto
 */
export type ActiveBufferProto = Message<"perfetto.protos.ActiveBufferProto"> & {
  /**
   * @generated from field: optional uint32 width = 1;
   */
  width: number;

  /**
   * @generated from field: optional uint32 height = 2;
   */
  height: number;

  /**
   * @generated from field: optional uint32 stride = 3;
   */
  stride: number;

  /**
   * @generated from field: optional int32 format = 4;
   */
  format: number;

  /**
   * @generated from field: optional uint64 usage = 5;
   */
  usage: bigint;
};

/**
 * Describes the message perfetto.protos.ActiveBufferProto.
 * Use `create(ActiveBufferProtoSchema)` to create a new message.
 */
export const ActiveBufferProtoSchema: GenMessage<ActiveBufferProto> = /*@__PURE__*/
  messageDesc(file_protos_perfetto_trace_android_surfaceflinger_layers, 7);

/**
 * @generated from message perfetto.protos.BarrierLayerProto
 */
export type BarrierLayerProto = Message<"perfetto.protos.BarrierLayerProto"> & {
  /**
   * layer id the barrier is waiting on.
   *
   * @generated from field: optional int32 id = 1;
   */
  id: number;

  /**
   * frame number the barrier is waiting on.
   *
   * @generated from field: optional uint64 frame_number = 2;
   */
  frameNumber: bigint;
};

/**
 * Describes the message perfetto.protos.BarrierLayerProto.
 * Use `create(BarrierLayerProtoSchema)` to create a new message.
 */
export const BarrierLayerProtoSchema: GenMessage<BarrierLayerProto> = /*@__PURE__*/
  messageDesc(file_protos_perfetto_trace_android_surfaceflinger_layers, 8);

/**
 * Must match definition in the IComposerClient HAL
 *
 * @generated from enum perfetto.protos.HwcCompositionType
 */
export enum HwcCompositionType {
  /**
   * Invalid composition type
   *
   * @generated from enum value: HWC_TYPE_UNSPECIFIED = 0;
   */
  HWC_TYPE_UNSPECIFIED = 0,

  /**
   * Layer was composited by the client into the client target buffer
   *
   * @generated from enum value: HWC_TYPE_CLIENT = 1;
   */
  HWC_TYPE_CLIENT = 1,

  /**
   * Layer was composited by the device through hardware overlays
   *
   * @generated from enum value: HWC_TYPE_DEVICE = 2;
   */
  HWC_TYPE_DEVICE = 2,

  /**
   * Layer was composited by the device using a color
   *
   * @generated from enum value: HWC_TYPE_SOLID_COLOR = 3;
   */
  HWC_TYPE_SOLID_COLOR = 3,

  /**
   * Similar to DEVICE, but the layer position may have been asynchronously set
   * through setCursorPosition
   *
   * @generated from enum value: HWC_TYPE_CURSOR = 4;
   */
  HWC_TYPE_CURSOR = 4,

  /**
   * Layer was composited by the device via a sideband stream
   *
   * @generated from enum value: HWC_TYPE_SIDEBAND = 5;
   */
  HWC_TYPE_SIDEBAND = 5,

  /**
   * Layer was composited by hardware optimized for display decoration
   *
   * @generated from enum value: HWC_TYPE_DISPLAY_DECORATION = 6;
   */
  HWC_TYPE_DISPLAY_DECORATION = 6,
}

/**
 * Describes the enum perfetto.protos.HwcCompositionType.
 */
export const HwcCompositionTypeSchema: GenEnum<HwcCompositionType> = /*@__PURE__*/
  enumDesc(file_protos_perfetto_trace_android_surfaceflinger_layers, 0);

