//
// Copyright (C) 2019 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/common/gpu_counter_descriptor.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 { Message } from "@bufbuild/protobuf";

/**
 * Describes the file protos/perfetto/common/gpu_counter_descriptor.proto.
 */
export const file_protos_perfetto_common_gpu_counter_descriptor: GenFile = /*@__PURE__*/
  fileDesc("CjNwcm90b3MvcGVyZmV0dG8vY29tbW9uL2dwdV9jb3VudGVyX2Rlc2NyaXB0b3IucHJvdG8SD3BlcmZldHRvLnByb3RvcyK2CwoUR3B1Q291bnRlckRlc2NyaXB0b3ISQwoFc3BlY3MYASADKAsyNC5wZXJmZXR0by5wcm90b3MuR3B1Q291bnRlckRlc2NyaXB0b3IuR3B1Q291bnRlclNwZWMSRQoGYmxvY2tzGAIgAygLMjUucGVyZmV0dG8ucHJvdG9zLkdwdUNvdW50ZXJEZXNjcmlwdG9yLkdwdUNvdW50ZXJCbG9jaxIeChZtaW5fc2FtcGxpbmdfcGVyaW9kX25zGAMgASgEEh4KFm1heF9zYW1wbGluZ19wZXJpb2RfbnMYBCABKAQSJgoec3VwcG9ydHNfaW5zdHJ1bWVudGVkX3NhbXBsaW5nGAUgASgIGo4DCg5HcHVDb3VudGVyU3BlYxISCgpjb3VudGVyX2lkGAEgASgNEgwKBG5hbWUYAiABKAkSEwoLZGVzY3JpcHRpb24YAyABKAkSGAoOaW50X3BlYWtfdmFsdWUYBSABKANIABIbChFkb3VibGVfcGVha192YWx1ZRgGIAEoAUgAEkoKD251bWVyYXRvcl91bml0cxgHIAMoDjIxLnBlcmZldHRvLnByb3Rvcy5HcHVDb3VudGVyRGVzY3JpcHRvci5NZWFzdXJlVW5pdBJMChFkZW5vbWluYXRvcl91bml0cxgIIAMoDjIxLnBlcmZldHRvLnByb3Rvcy5HcHVDb3VudGVyRGVzY3JpcHRvci5NZWFzdXJlVW5pdBIZChFzZWxlY3RfYnlfZGVmYXVsdBgJIAEoCBJFCgZncm91cHMYCiADKA4yNS5wZXJmZXR0by5wcm90b3MuR3B1Q291bnRlckRlc2NyaXB0b3IuR3B1Q291bnRlckdyb3VwQgwKCnBlYWtfdmFsdWVKBAgEEAUacwoPR3B1Q291bnRlckJsb2NrEhAKCGJsb2NrX2lkGAEgASgNEhYKDmJsb2NrX2NhcGFjaXR5GAIgASgNEgwKBG5hbWUYAyABKAkSEwoLZGVzY3JpcHRpb24YBCABKAkSEwoLY291bnRlcl9pZHMYBSADKA0idQoPR3B1Q291bnRlckdyb3VwEhAKDFVOQ0xBU1NJRklFRBAAEgoKBlNZU1RFTRABEgwKCFZFUlRJQ0VTEAISDQoJRlJBR01FTlRTEAMSDgoKUFJJTUlUSVZFUxAEEgoKBk1FTU9SWRAFEgsKB0NPTVBVVEUQBiKsBAoLTWVhc3VyZVVuaXQSCAoETk9ORRAAEgcKA0JJVBABEgsKB0tJTE9CSVQQAhILCgdNRUdBQklUEAMSCwoHR0lHQUJJVBAEEgsKB1RFUkFCSVQQBRILCgdQRVRBQklUEAYSCAoEQllURRAHEgwKCEtJTE9CWVRFEAgSDAoITUVHQUJZVEUQCRIMCghHSUdBQllURRAKEgwKCFRFUkFCWVRFEAsSDAoIUEVUQUJZVEUQDBIJCgVIRVJUWhANEg0KCUtJTE9IRVJUWhAOEg0KCU1FR0FIRVJUWhAPEg0KCUdJR0FIRVJUWhAQEg0KCVRFUkFIRVJUWhAREg0KCVBFVEFIRVJUWhASEg4KCk5BTk9TRUNPTkQQExIPCgtNSUNST1NFQ09ORBAUEg8KC01JTExJU0VDT05EEBUSCgoGU0VDT05EEBYSCgoGTUlOVVRFEBcSCAoESE9VUhAYEgoKBlZFUlRFWBAZEgkKBVBJWEVMEBoSDAoIVFJJQU5HTEUQGxINCglQUklNSVRJVkUQJhIMCghGUkFHTUVOVBAnEg0KCU1JTExJV0FUVBAcEggKBFdBVFQQHRIMCghLSUxPV0FUVBAeEgkKBUpPVUxFEB8SCAoEVk9MVBAgEgoKBkFNUEVSRRAhEgsKB0NFTFNJVVMQIhIOCgpGQUhSRU5IRUlUECMSCgoGS0VMVklOECQSCwoHUEVSQ0VOVBAlEg8KC0lOU1RSVUNUSU9OECg");

/**
 * Description of GPU counters.
 * This message is sent by a GPU counter producer to specify the counters
 * available in the hardware.
 *
 * @generated from message perfetto.protos.GpuCounterDescriptor
 */
export type GpuCounterDescriptor = Message<"perfetto.protos.GpuCounterDescriptor"> & {
  /**
   * @generated from field: repeated perfetto.protos.GpuCounterDescriptor.GpuCounterSpec specs = 1;
   */
  specs: GpuCounterDescriptor_GpuCounterSpec[];

  /**
   * @generated from field: repeated perfetto.protos.GpuCounterDescriptor.GpuCounterBlock blocks = 2;
   */
  blocks: GpuCounterDescriptor_GpuCounterBlock[];

  /**
   * optional.  Minimum sampling period supported by the producer in
   * nanoseconds.
   *
   * @generated from field: optional uint64 min_sampling_period_ns = 3;
   */
  minSamplingPeriodNs: bigint;

  /**
   * optional.  Maximum sampling period supported by the producer in
   * nanoseconds.
   *
   * @generated from field: optional uint64 max_sampling_period_ns = 4;
   */
  maxSamplingPeriodNs: bigint;

  /**
   * optional.  The producer supports counter sampling by instrumenting the
   * command buffer.
   *
   * @generated from field: optional bool supports_instrumented_sampling = 5;
   */
  supportsInstrumentedSampling: boolean;
};

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

/**
 * @generated from message perfetto.protos.GpuCounterDescriptor.GpuCounterSpec
 */
export type GpuCounterDescriptor_GpuCounterSpec = Message<"perfetto.protos.GpuCounterDescriptor.GpuCounterSpec"> & {
  /**
   * @generated from field: optional uint32 counter_id = 1;
   */
  counterId: number;

  /**
   * @generated from field: optional string name = 2;
   */
  name: string;

  /**
   * @generated from field: optional string description = 3;
   */
  description: string;

  /**
   * @generated from oneof perfetto.protos.GpuCounterDescriptor.GpuCounterSpec.peak_value
   */
  peakValue: {
    /**
     * @generated from field: int64 int_peak_value = 5;
     */
    value: bigint;
    case: "intPeakValue";
  } | {
    /**
     * @generated from field: double double_peak_value = 6;
     */
    value: number;
    case: "doublePeakValue";
  } | { case: undefined; value?: undefined };

  /**
   * @generated from field: repeated perfetto.protos.GpuCounterDescriptor.MeasureUnit numerator_units = 7;
   */
  numeratorUnits: GpuCounterDescriptor_MeasureUnit[];

  /**
   * @generated from field: repeated perfetto.protos.GpuCounterDescriptor.MeasureUnit denominator_units = 8;
   */
  denominatorUnits: GpuCounterDescriptor_MeasureUnit[];

  /**
   * @generated from field: optional bool select_by_default = 9;
   */
  selectByDefault: boolean;

  /**
   * @generated from field: repeated perfetto.protos.GpuCounterDescriptor.GpuCounterGroup groups = 10;
   */
  groups: GpuCounterDescriptor_GpuCounterGroup[];
};

/**
 * Describes the message perfetto.protos.GpuCounterDescriptor.GpuCounterSpec.
 * Use `create(GpuCounterDescriptor_GpuCounterSpecSchema)` to create a new message.
 */
export const GpuCounterDescriptor_GpuCounterSpecSchema: GenMessage<GpuCounterDescriptor_GpuCounterSpec> = /*@__PURE__*/
  messageDesc(file_protos_perfetto_common_gpu_counter_descriptor, 0, 0);

/**
 * Allow producer to group counters into block to represent counter islands.
 * A capacity may be specified to indicate the number of counters that can be
 * enable simultaneously in that block.
 *
 * @generated from message perfetto.protos.GpuCounterDescriptor.GpuCounterBlock
 */
export type GpuCounterDescriptor_GpuCounterBlock = Message<"perfetto.protos.GpuCounterDescriptor.GpuCounterBlock"> & {
  /**
   * required. Unique ID for the counter group.
   *
   * @generated from field: optional uint32 block_id = 1;
   */
  blockId: number;

  /**
   * optional. Number of counters supported by the block. No limit if unset.
   *
   * @generated from field: optional uint32 block_capacity = 2;
   */
  blockCapacity: number;

  /**
   * optional. Name of block.
   *
   * @generated from field: optional string name = 3;
   */
  name: string;

  /**
   * optional. Description for the block.
   *
   * @generated from field: optional string description = 4;
   */
  description: string;

  /**
   * list of counters that are part of the block.
   *
   * @generated from field: repeated uint32 counter_ids = 5;
   */
  counterIds: number[];
};

/**
 * Describes the message perfetto.protos.GpuCounterDescriptor.GpuCounterBlock.
 * Use `create(GpuCounterDescriptor_GpuCounterBlockSchema)` to create a new message.
 */
export const GpuCounterDescriptor_GpuCounterBlockSchema: GenMessage<GpuCounterDescriptor_GpuCounterBlock> = /*@__PURE__*/
  messageDesc(file_protos_perfetto_common_gpu_counter_descriptor, 0, 1);

/**
 * Logical groups for a counter.  This is used in the UI to present the
 * related counters together.
 *
 * @generated from enum perfetto.protos.GpuCounterDescriptor.GpuCounterGroup
 */
export enum GpuCounterDescriptor_GpuCounterGroup {
  /**
   * @generated from enum value: UNCLASSIFIED = 0;
   */
  UNCLASSIFIED = 0,

  /**
   * @generated from enum value: SYSTEM = 1;
   */
  SYSTEM = 1,

  /**
   * @generated from enum value: VERTICES = 2;
   */
  VERTICES = 2,

  /**
   * @generated from enum value: FRAGMENTS = 3;
   */
  FRAGMENTS = 3,

  /**
   * @generated from enum value: PRIMITIVES = 4;
   */
  PRIMITIVES = 4,

  /**
   * Includes counters relating to caching and bandwidth.
   *
   * @generated from enum value: MEMORY = 5;
   */
  MEMORY = 5,

  /**
   * @generated from enum value: COMPUTE = 6;
   */
  COMPUTE = 6,
}

/**
 * Describes the enum perfetto.protos.GpuCounterDescriptor.GpuCounterGroup.
 */
export const GpuCounterDescriptor_GpuCounterGroupSchema: GenEnum<GpuCounterDescriptor_GpuCounterGroup> = /*@__PURE__*/
  enumDesc(file_protos_perfetto_common_gpu_counter_descriptor, 0, 0);

/**
 * next id: 41
 *
 * @generated from enum perfetto.protos.GpuCounterDescriptor.MeasureUnit
 */
export enum GpuCounterDescriptor_MeasureUnit {
  /**
   * @generated from enum value: NONE = 0;
   */
  NONE = 0,

  /**
   * @generated from enum value: BIT = 1;
   */
  BIT = 1,

  /**
   * @generated from enum value: KILOBIT = 2;
   */
  KILOBIT = 2,

  /**
   * @generated from enum value: MEGABIT = 3;
   */
  MEGABIT = 3,

  /**
   * @generated from enum value: GIGABIT = 4;
   */
  GIGABIT = 4,

  /**
   * @generated from enum value: TERABIT = 5;
   */
  TERABIT = 5,

  /**
   * @generated from enum value: PETABIT = 6;
   */
  PETABIT = 6,

  /**
   * @generated from enum value: BYTE = 7;
   */
  BYTE = 7,

  /**
   * @generated from enum value: KILOBYTE = 8;
   */
  KILOBYTE = 8,

  /**
   * @generated from enum value: MEGABYTE = 9;
   */
  MEGABYTE = 9,

  /**
   * @generated from enum value: GIGABYTE = 10;
   */
  GIGABYTE = 10,

  /**
   * @generated from enum value: TERABYTE = 11;
   */
  TERABYTE = 11,

  /**
   * @generated from enum value: PETABYTE = 12;
   */
  PETABYTE = 12,

  /**
   * @generated from enum value: HERTZ = 13;
   */
  HERTZ = 13,

  /**
   * @generated from enum value: KILOHERTZ = 14;
   */
  KILOHERTZ = 14,

  /**
   * @generated from enum value: MEGAHERTZ = 15;
   */
  MEGAHERTZ = 15,

  /**
   * @generated from enum value: GIGAHERTZ = 16;
   */
  GIGAHERTZ = 16,

  /**
   * @generated from enum value: TERAHERTZ = 17;
   */
  TERAHERTZ = 17,

  /**
   * @generated from enum value: PETAHERTZ = 18;
   */
  PETAHERTZ = 18,

  /**
   * @generated from enum value: NANOSECOND = 19;
   */
  NANOSECOND = 19,

  /**
   * @generated from enum value: MICROSECOND = 20;
   */
  MICROSECOND = 20,

  /**
   * @generated from enum value: MILLISECOND = 21;
   */
  MILLISECOND = 21,

  /**
   * @generated from enum value: SECOND = 22;
   */
  SECOND = 22,

  /**
   * @generated from enum value: MINUTE = 23;
   */
  MINUTE = 23,

  /**
   * @generated from enum value: HOUR = 24;
   */
  HOUR = 24,

  /**
   * @generated from enum value: VERTEX = 25;
   */
  VERTEX = 25,

  /**
   * @generated from enum value: PIXEL = 26;
   */
  PIXEL = 26,

  /**
   * @generated from enum value: TRIANGLE = 27;
   */
  TRIANGLE = 27,

  /**
   * @generated from enum value: PRIMITIVE = 38;
   */
  PRIMITIVE = 38,

  /**
   * @generated from enum value: FRAGMENT = 39;
   */
  FRAGMENT = 39,

  /**
   * @generated from enum value: MILLIWATT = 28;
   */
  MILLIWATT = 28,

  /**
   * @generated from enum value: WATT = 29;
   */
  WATT = 29,

  /**
   * @generated from enum value: KILOWATT = 30;
   */
  KILOWATT = 30,

  /**
   * @generated from enum value: JOULE = 31;
   */
  JOULE = 31,

  /**
   * @generated from enum value: VOLT = 32;
   */
  VOLT = 32,

  /**
   * @generated from enum value: AMPERE = 33;
   */
  AMPERE = 33,

  /**
   * @generated from enum value: CELSIUS = 34;
   */
  CELSIUS = 34,

  /**
   * @generated from enum value: FAHRENHEIT = 35;
   */
  FAHRENHEIT = 35,

  /**
   * @generated from enum value: KELVIN = 36;
   */
  KELVIN = 36,

  /**
   * Values should be out of 100.
   *
   * @generated from enum value: PERCENT = 37;
   */
  PERCENT = 37,

  /**
   * @generated from enum value: INSTRUCTION = 40;
   */
  INSTRUCTION = 40,
}

/**
 * Describes the enum perfetto.protos.GpuCounterDescriptor.MeasureUnit.
 */
export const GpuCounterDescriptor_MeasureUnitSchema: GenEnum<GpuCounterDescriptor_MeasureUnit> = /*@__PURE__*/
  enumDesc(file_protos_perfetto_common_gpu_counter_descriptor, 0, 1);

