micromegas 0.1.2__tar.gz → 0.1.6__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (215) hide show
  1. {micromegas-0.1.2 → micromegas-0.1.6}/PKG-INFO +3 -1
  2. micromegas-0.1.6/micromegas/__init__.py +10 -0
  3. micromegas-0.1.6/micromegas/client.py +182 -0
  4. micromegas-0.1.6/micromegas/perfetto.py +205 -0
  5. {micromegas-0.1.2 → micromegas-0.1.6}/micromegas/request.py +16 -0
  6. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/common/android_energy_consumer_descriptor_pb2.py +38 -0
  7. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/common/android_log_constants_pb2.py +38 -0
  8. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/common/builtin_clock_pb2.py +36 -0
  9. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/common/descriptor_pb2.py +62 -0
  10. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/common/gpu_counter_descriptor_pb2.py +44 -0
  11. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/common/perf_events_pb2.py +46 -0
  12. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/common/protolog_common_pb2.py +36 -0
  13. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/common/sys_stats_counters_pb2.py +38 -0
  14. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/common/trace_stats_pb2.py +48 -0
  15. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/config/android/android_game_intervention_list_config_pb2.py +36 -0
  16. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/config/android/android_input_event_config_pb2.py +42 -0
  17. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/config/android/android_log_config_pb2.py +37 -0
  18. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/config/android/android_polled_state_config_pb2.py +36 -0
  19. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/config/android/android_sdk_sysprop_guard_config_pb2.py +36 -0
  20. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/config/android/android_system_property_config_pb2.py +36 -0
  21. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/config/android/network_trace_config_pb2.py +36 -0
  22. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/config/android/packages_list_config_pb2.py +36 -0
  23. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/config/android/pixel_modem_config_pb2.py +38 -0
  24. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/config/android/protolog_config_pb2.py +41 -0
  25. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/config/android/surfaceflinger_layers_config_pb2.py +40 -0
  26. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/config/android/surfaceflinger_transactions_config_pb2.py +38 -0
  27. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/config/chrome/chrome_config_pb2.py +38 -0
  28. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/config/chrome/v8_config_pb2.py +36 -0
  29. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/config/data_source_config_pb2.py +120 -0
  30. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/config/etw/etw_config_pb2.py +38 -0
  31. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/config/ftrace/ftrace_config_pb2.py +48 -0
  32. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/config/gpu/gpu_counter_config_pb2.py +36 -0
  33. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/config/gpu/vulkan_memory_config_pb2.py +36 -0
  34. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/config/inode_file/inode_file_config_pb2.py +38 -0
  35. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/config/interceptor_config_pb2.py +37 -0
  36. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/config/interceptors/console_config_pb2.py +38 -0
  37. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/config/power/android_power_config_pb2.py +38 -0
  38. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/config/process_stats/process_stats_config_pb2.py +40 -0
  39. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/config/profiling/heapprofd_config_pb2.py +38 -0
  40. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/config/profiling/java_hprof_config_pb2.py +38 -0
  41. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/config/profiling/perf_event_config_pb2.py +43 -0
  42. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/config/statsd/atom_ids_pb2.py +36 -0
  43. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/config/statsd/statsd_tracing_config_pb2.py +39 -0
  44. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/config/sys_stats/sys_stats_config_pb2.py +39 -0
  45. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/config/system_info/system_info_pb2.py +36 -0
  46. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/config/test_config_pb2.py +38 -0
  47. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/config/trace_config_pb2.py +90 -0
  48. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/config/track_event/track_event_config_pb2.py +36 -0
  49. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/android/android_game_intervention_list_pb2.py +40 -0
  50. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/android/android_log_pb2.py +43 -0
  51. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/android/android_system_property_pb2.py +38 -0
  52. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/android/camera_event_pb2.py +48 -0
  53. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/android/frame_timeline_event_pb2.py +54 -0
  54. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/android/gpu_mem_event_pb2.py +36 -0
  55. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/android/graphics/rect_pb2.py +36 -0
  56. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/android/graphics_frame_event_pb2.py +40 -0
  57. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/android/initial_display_state_pb2.py +36 -0
  58. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/android/network_trace_pb2.py +46 -0
  59. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/android/packages_list_pb2.py +38 -0
  60. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/android/pixel_modem_events_pb2.py +38 -0
  61. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/android/protolog_pb2.py +43 -0
  62. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/android/shell_transition_pb2.py +42 -0
  63. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/android/surfaceflinger_common_pb2.py +59 -0
  64. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/android/surfaceflinger_layers_pb2.py +72 -0
  65. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/android/surfaceflinger_transactions_pb2.py +76 -0
  66. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/android/winscope_extensions_pb2.py +36 -0
  67. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/chrome/chrome_benchmark_metadata_pb2.py +36 -0
  68. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/chrome/chrome_metadata_pb2.py +50 -0
  69. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/chrome/chrome_trace_event_pb2.py +56 -0
  70. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/chrome/chrome_trigger_pb2.py +36 -0
  71. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/chrome/v8_pb2.py +70 -0
  72. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/clock_snapshot_pb2.py +41 -0
  73. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/etw/etw_event_bundle_pb2.py +37 -0
  74. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/etw/etw_event_pb2.py +37 -0
  75. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/etw/etw_pb2.py +48 -0
  76. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/extension_descriptor_pb2.py +37 -0
  77. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/filesystem/inode_file_map_pb2.py +40 -0
  78. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/android_fs_pb2.py +46 -0
  79. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/binder_pb2.py +52 -0
  80. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/block_pb2.py +72 -0
  81. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/cgroup_pb2.py +52 -0
  82. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/clk_pb2.py +40 -0
  83. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/cma_pb2.py +38 -0
  84. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/compaction_pb2.py +62 -0
  85. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/cpuhp_pb2.py +44 -0
  86. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/cros_ec_pb2.py +36 -0
  87. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/dcvsh_pb2.py +36 -0
  88. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/dma_fence_pb2.py +44 -0
  89. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/dmabuf_heap_pb2.py +36 -0
  90. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/dpu_pb2.py +42 -0
  91. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/drm_pb2.py +38 -0
  92. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/ext4_pb2.py +224 -0
  93. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/f2fs_pb2.py +106 -0
  94. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/fastrpc_pb2.py +44 -0
  95. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/fence_pb2.py +42 -0
  96. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/filemap_pb2.py +38 -0
  97. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/ftrace_event_bundle_pb2.py +66 -0
  98. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/ftrace_event_pb2.py +105 -0
  99. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/ftrace_pb2.py +40 -0
  100. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/ftrace_stats_pb2.py +42 -0
  101. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/g2d_pb2.py +36 -0
  102. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/generic_pb2.py +38 -0
  103. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/google_icc_trace_pb2.py +36 -0
  104. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/google_irm_trace_pb2.py +36 -0
  105. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/gpu_mem_pb2.py +36 -0
  106. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/gpu_scheduler_pb2.py +40 -0
  107. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/hyp_pb2.py +44 -0
  108. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/i2c_pb2.py +50 -0
  109. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/ion_pb2.py +36 -0
  110. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/ipi_pb2.py +40 -0
  111. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/irq_pb2.py +44 -0
  112. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/kgsl_pb2.py +36 -0
  113. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/kmem_pb2.py +122 -0
  114. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/kvm_pb2.py +106 -0
  115. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/lowmemorykiller_pb2.py +36 -0
  116. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/lwis_pb2.py +36 -0
  117. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/mali_pb2.py +98 -0
  118. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/mdss_pb2.py +76 -0
  119. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/mm_event_pb2.py +36 -0
  120. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/net_pb2.py +42 -0
  121. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/oom_pb2.py +38 -0
  122. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/panel_pb2.py +42 -0
  123. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/perf_trace_counters_pb2.py +36 -0
  124. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/power_pb2.py +60 -0
  125. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/printk_pb2.py +36 -0
  126. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/raw_syscalls_pb2.py +38 -0
  127. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/regulator_pb2.py +48 -0
  128. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/rpm_pb2.py +36 -0
  129. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/samsung_pb2.py +36 -0
  130. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/sched_pb2.py +64 -0
  131. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/scm_pb2.py +38 -0
  132. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/sde_pb2.py +46 -0
  133. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/signal_pb2.py +38 -0
  134. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/skb_pb2.py +36 -0
  135. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/sock_pb2.py +36 -0
  136. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/sync_pb2.py +40 -0
  137. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/synthetic_pb2.py +38 -0
  138. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/systrace_pb2.py +36 -0
  139. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/task_pb2.py +38 -0
  140. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/tcp_pb2.py +36 -0
  141. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/thermal_exynos_pb2.py +38 -0
  142. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/thermal_pb2.py +38 -0
  143. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/trusty_pb2.py +70 -0
  144. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/ufs_pb2.py +38 -0
  145. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/v4l2_pb2.py +46 -0
  146. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/virtio_gpu_pb2.py +38 -0
  147. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/virtio_video_pb2.py +42 -0
  148. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/vmscan_pb2.py +46 -0
  149. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ftrace/workqueue_pb2.py +42 -0
  150. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/gpu/gpu_counter_event_pb2.py +39 -0
  151. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/gpu/gpu_log_pb2.py +38 -0
  152. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/gpu/gpu_render_stage_event_pb2.py +58 -0
  153. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/gpu/vulkan_api_event_pb2.py +40 -0
  154. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/gpu/vulkan_memory_event_pb2.py +44 -0
  155. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/interned_data/interned_data_pb2.py +45 -0
  156. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/memory_graph_pb2.py +48 -0
  157. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/perfetto/perfetto_metatrace_pb2.py +40 -0
  158. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/perfetto/tracing_service_event_pb2.py +36 -0
  159. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/power/android_energy_estimation_breakdown_pb2.py +39 -0
  160. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/power/android_entity_state_residency_pb2.py +40 -0
  161. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/power/battery_counters_pb2.py +36 -0
  162. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/power/power_rails_pb2.py +40 -0
  163. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/profiling/deobfuscation_pb2.py +40 -0
  164. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/profiling/heap_graph_pb2.py +57 -0
  165. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/profiling/profile_common_pb2.py +50 -0
  166. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/profiling/profile_packet_pb2.py +72 -0
  167. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/profiling/smaps_pb2.py +38 -0
  168. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ps/process_stats_pb2.py +42 -0
  169. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ps/process_tree_pb2.py +40 -0
  170. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/remote_clock_sync_pb2.py +39 -0
  171. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/statsd/statsd_atom_pb2.py +38 -0
  172. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/sys_stats/sys_stats_pb2.py +55 -0
  173. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/system_info/cpu_info_pb2.py +38 -0
  174. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/system_info_pb2.py +38 -0
  175. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/test_event_pb2.py +39 -0
  176. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/trace_packet_defaults_pb2.py +39 -0
  177. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/trace_packet_pb2.py +107 -0
  178. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/trace_pb2.py +37 -0
  179. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/trace_uuid_pb2.py +36 -0
  180. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/track_event/chrome_active_processes_pb2.py +36 -0
  181. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/track_event/chrome_application_state_info_pb2.py +38 -0
  182. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/track_event/chrome_compositor_scheduler_state_pb2.py +75 -0
  183. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/track_event/chrome_content_settings_event_info_pb2.py +36 -0
  184. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/track_event/chrome_frame_reporter_pb2.py +44 -0
  185. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/track_event/chrome_histogram_sample_pb2.py +38 -0
  186. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/track_event/chrome_keyed_service_pb2.py +36 -0
  187. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/track_event/chrome_latency_info_pb2.py +42 -0
  188. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/track_event/chrome_legacy_ipc_pb2.py +38 -0
  189. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/track_event/chrome_message_pump_pb2.py +36 -0
  190. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/track_event/chrome_mojo_event_info_pb2.py +36 -0
  191. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/track_event/chrome_process_descriptor_pb2.py +38 -0
  192. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/track_event/chrome_renderer_scheduler_state_pb2.py +38 -0
  193. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/track_event/chrome_thread_descriptor_pb2.py +38 -0
  194. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/track_event/chrome_user_event_pb2.py +36 -0
  195. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/track_event/chrome_window_handle_event_info_pb2.py +36 -0
  196. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/track_event/counter_descriptor_pb2.py +40 -0
  197. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/track_event/debug_annotation_pb2.py +44 -0
  198. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/track_event/log_message_pb2.py +40 -0
  199. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/track_event/pixel_modem_pb2.py +36 -0
  200. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/track_event/process_descriptor_pb2.py +38 -0
  201. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/track_event/range_of_interest_pb2.py +36 -0
  202. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/track_event/screenshot_pb2.py +36 -0
  203. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/track_event/source_location_pb2.py +38 -0
  204. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/track_event/task_execution_pb2.py +36 -0
  205. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/track_event/thread_descriptor_pb2.py +38 -0
  206. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/track_event/track_descriptor_pb2.py +41 -0
  207. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/track_event/track_event_pb2.py +74 -0
  208. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/translation/translation_table_pb2.py +70 -0
  209. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/trigger_pb2.py +36 -0
  210. micromegas-0.1.6/micromegas/thirdparty/perfetto/protos/perfetto/trace/ui_state_pb2.py +38 -0
  211. micromegas-0.1.6/micromegas/time.py +30 -0
  212. {micromegas-0.1.2 → micromegas-0.1.6}/pyproject.toml +5 -3
  213. micromegas-0.1.2/micromegas/__init__.py +0 -2
  214. micromegas-0.1.2/micromegas/client.py +0 -67
  215. {micromegas-0.1.2 → micromegas-0.1.6}/README.md +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: micromegas
3
- Version: 0.1.2
3
+ Version: 0.1.6
4
4
  Summary: Python analytics client for https://github.com/madesroches/micromegas/
5
5
  Author: Marc-Antoine Desroches
6
6
  Author-email: madesroches@gmail.com
@@ -10,7 +10,9 @@ Classifier: Programming Language :: Python :: 3.10
10
10
  Classifier: Programming Language :: Python :: 3.11
11
11
  Classifier: Programming Language :: Python :: 3.12
12
12
  Requires-Dist: cbor2 (>=5.6.3,<6.0.0)
13
+ Requires-Dist: crc (>=7.0.0,<8.0.0)
13
14
  Requires-Dist: pandas (>=2.2.2,<3.0.0)
15
+ Requires-Dist: protobuf (>=5.27.1,<6.0.0)
14
16
  Requires-Dist: pyarrow (>=16.0.0,<17.0.0)
15
17
  Requires-Dist: requests (>=2.31.0,<3.0.0)
16
18
  Requires-Dist: tabulate (>=0.9.0,<0.10.0)
@@ -0,0 +1,10 @@
1
+ import os
2
+ from . import time
3
+ from . import request
4
+ from . import client
5
+ from . import perfetto
6
+
7
+ def connect():
8
+ "connect to the analytics service using default values"
9
+ BASE_URL = "http://localhost:8082/"
10
+ return client.Client(BASE_URL)
@@ -0,0 +1,182 @@
1
+ from . import request
2
+ from . import time
3
+ import cbor2
4
+
5
+
6
+ class Client:
7
+ def __init__(self, base_url, headers={}):
8
+ self.analytics_base_url = base_url + "analytics/"
9
+ self.headers = headers
10
+
11
+ def find_process(self, process_id):
12
+ return request.request(
13
+ self.analytics_base_url + "find_process",
14
+ {"process_id": process_id},
15
+ headers=self.headers,
16
+ )
17
+
18
+ def query_processes(self, begin, end, limit):
19
+ return request.request(
20
+ self.analytics_base_url + "query_processes",
21
+ {
22
+ "begin": time.format_datetime(begin),
23
+ "end": time.format_datetime(end),
24
+ "limit": limit,
25
+ },
26
+ headers=self.headers,
27
+ )
28
+
29
+ def query_streams(self, begin, end, limit, process_id=None, tag_filter=None):
30
+ args = {
31
+ "begin": time.format_datetime(begin),
32
+ "end": time.format_datetime(end),
33
+ "limit": limit,
34
+ "process_id": process_id,
35
+ "tag_filter": tag_filter,
36
+ }
37
+
38
+ return request.request(
39
+ self.analytics_base_url + "query_streams",
40
+ args,
41
+ headers=self.headers,
42
+ )
43
+
44
+ def query_blocks(self, begin, end, limit, stream_id):
45
+ args = {
46
+ "begin": time.format_datetime(begin),
47
+ "end": time.format_datetime(end),
48
+ "limit": limit,
49
+ "stream_id": stream_id,
50
+ }
51
+
52
+ return request.request(
53
+ self.analytics_base_url + "query_blocks",
54
+ args,
55
+ headers=self.headers,
56
+ )
57
+
58
+ def query_spans(self, begin, end, limit, stream_id):
59
+ return request.request(
60
+ self.analytics_base_url + "query_spans",
61
+ {
62
+ "begin": time.format_datetime(begin),
63
+ "end": time.format_datetime(end),
64
+ "limit": limit,
65
+ "stream_id": stream_id,
66
+ },
67
+ headers=self.headers,
68
+ )
69
+
70
+ def query_thread_events(self, begin, end, limit, stream_id):
71
+ return request.request(
72
+ self.analytics_base_url + "query_thread_events",
73
+ {
74
+ "begin": time.format_datetime(begin),
75
+ "end": time.format_datetime(end),
76
+ "limit": limit,
77
+ "stream_id": stream_id,
78
+ },
79
+ headers=self.headers,
80
+ )
81
+
82
+ def query_log_entries(
83
+ self,
84
+ begin,
85
+ end,
86
+ limit=None, # Necessary if stream_id is specified, ignored otherwise
87
+ stream_id=None, # If none, query is run on cached lakehouse using query engine
88
+ sql=None, # Necessary if stream_id is None, ignored otherwise
89
+ ):
90
+ return request.request(
91
+ self.analytics_base_url + "query_log_entries",
92
+ {
93
+ "begin": time.format_datetime(begin),
94
+ "end": time.format_datetime(end),
95
+ "limit": limit,
96
+ "stream_id": stream_id,
97
+ "sql": sql,
98
+ },
99
+ headers=self.headers,
100
+ )
101
+
102
+ def query_metrics(self, begin, end, limit=None, stream_id=None, sql=None):
103
+ return request.request(
104
+ self.analytics_base_url + "query_metrics",
105
+ {
106
+ "begin": time.format_datetime(begin),
107
+ "end": time.format_datetime(end),
108
+ "limit": limit,
109
+ "stream_id": stream_id,
110
+ "sql": sql,
111
+ },
112
+ headers=self.headers,
113
+ )
114
+
115
+ def query_view(self, view_set_name, view_instance_id, begin, end, sql):
116
+ return request.request(
117
+ self.analytics_base_url + "query_view",
118
+ {
119
+ "view_set_name": view_set_name,
120
+ "view_instance_id": view_instance_id,
121
+ "begin": time.format_datetime(begin),
122
+ "end": time.format_datetime(end),
123
+ "sql": sql,
124
+ },
125
+ headers=self.headers,
126
+ )
127
+
128
+ def query_partitions(self):
129
+ args = {}
130
+ return request.request(
131
+ self.analytics_base_url + "query_partitions",
132
+ args,
133
+ headers=self.headers,
134
+ )
135
+
136
+ def __stream_request(self, endpoint, args):
137
+ response = request.streamed_request(
138
+ self.analytics_base_url + endpoint,
139
+ args,
140
+ headers=self.headers,
141
+ )
142
+ while response.raw.readable():
143
+ try:
144
+ print(cbor2.load(response.raw))
145
+ except cbor2.CBORDecodeEOF:
146
+ break
147
+
148
+ def create_or_update_partitions(
149
+ self, view_set_name, view_instance_id, begin, end, partition_delta_seconds
150
+ ):
151
+ args = {
152
+ "view_set_name": view_set_name,
153
+ "view_instance_id": view_instance_id,
154
+ "begin": time.format_datetime(begin),
155
+ "end": time.format_datetime(end),
156
+ "partition_delta_seconds": partition_delta_seconds,
157
+ }
158
+ self.__stream_request("create_or_update_partitions", args)
159
+
160
+ def merge_partitions(
161
+ self, view_set_name, view_instance_id, begin, end, partition_delta_seconds
162
+ ):
163
+ args = {
164
+ "view_set_name": view_set_name,
165
+ "view_instance_id": view_instance_id,
166
+ "begin": time.format_datetime(begin),
167
+ "end": time.format_datetime(end),
168
+ "partition_delta_seconds": partition_delta_seconds,
169
+ }
170
+ self.__stream_request("merge_partitions", args)
171
+
172
+ def retire_partitions(
173
+ self, view_set_name, view_instance_id, begin, end, partition_delta_seconds
174
+ ):
175
+ args = {
176
+ "view_set_name": view_set_name,
177
+ "view_instance_id": view_instance_id,
178
+ "begin": time.format_datetime(begin),
179
+ "end": time.format_datetime(end),
180
+ "partition_delta_seconds": partition_delta_seconds,
181
+ }
182
+ self.__stream_request("retire_partitions", args)
@@ -0,0 +1,205 @@
1
+ import crc
2
+ from tqdm import tqdm
3
+
4
+
5
+ # hack to allow perfetto proto imports
6
+ # you can then import the protos like this: from protos.perfetto.trace import trace_pb2
7
+ def load_perfetto_protos():
8
+ import sys
9
+ import pathlib
10
+
11
+ perfetto_folder = pathlib.Path(__file__).parent.absolute() / "thirdparty/perfetto"
12
+ sys.path.append(str(perfetto_folder))
13
+
14
+
15
+ def crc64_str(s):
16
+ calculator = crc.Calculator(crc.Crc64.CRC64)
17
+ return calculator.checksum(str.encode(s))
18
+
19
+
20
+ def generate_batches(df_blocks):
21
+ nb_events_threshold = 1024 * 1024
22
+ begin = df_blocks.iloc[0]["begin_time"]
23
+ end = df_blocks.iloc[0]["end_time"]
24
+ nb_events = 0
25
+ for index, block in df_blocks.iterrows():
26
+ nb_events += block["nb_objects"]
27
+ end = block["end_time"]
28
+ if nb_events > nb_events_threshold:
29
+ yield (begin, end, nb_events)
30
+ begin = block["end_time"]
31
+ nb_events = 0
32
+ if nb_events > 0:
33
+ yield (begin, end, nb_events)
34
+
35
+
36
+ class Writer:
37
+ """
38
+ Fetches thread events from the analytics server and formats them in the perfetto format.
39
+ Traces can be viewed using https://ui.perfetto.dev/
40
+ """
41
+
42
+ def __init__(self, client, process_id, exe):
43
+ load_perfetto_protos()
44
+ from protos.perfetto.trace import trace_pb2, trace_packet_pb2
45
+
46
+ self.names = {}
47
+ self.categories = {}
48
+ self.source_locations = {}
49
+ self.first = True
50
+ self.client = client
51
+ self.trace = trace_pb2.Trace()
52
+ self.packets = self.trace.packet
53
+ self.process_uuid = crc64_str(process_id)
54
+
55
+ packet = trace_packet_pb2.TracePacket()
56
+ packet.track_descriptor.uuid = self.process_uuid
57
+ packet.track_descriptor.process.pid = 1
58
+ packet.track_descriptor.process.process_name = exe
59
+ self.packets.append(packet)
60
+
61
+ def get_name_iid(self, name):
62
+ iid = self.names.get(name)
63
+ is_new = False
64
+ if iid is None:
65
+ is_new = True
66
+ iid = len(self.names) + 1
67
+ self.names[name] = iid
68
+ return iid, is_new
69
+
70
+ def get_category_iid(self, cat):
71
+ iid = self.categories.get(cat)
72
+ is_new = False
73
+ if iid is None:
74
+ is_new = True
75
+ iid = len(self.categories) + 1
76
+ self.categories[cat] = iid
77
+ return iid, is_new
78
+
79
+ def get_location_iid(self, loc):
80
+ iid = self.source_locations.get(loc)
81
+ is_new = False
82
+ if iid is None:
83
+ is_new = True
84
+ iid = len(self.source_locations) + 1
85
+ self.source_locations[loc] = iid
86
+ return iid, is_new
87
+
88
+ def append_thread(self, stream_id, thread_name, thread_id):
89
+ from protos.perfetto.trace import trace_pb2, trace_packet_pb2, track_event
90
+
91
+ df_blocks = self.client.query_blocks(
92
+ begin=None, end=None, limit=100_000, stream_id=stream_id
93
+ )
94
+ if df_blocks.empty:
95
+ return
96
+
97
+ packet = trace_packet_pb2.TracePacket()
98
+ thread_uuid = crc64_str(stream_id)
99
+ packet.track_descriptor.uuid = thread_uuid
100
+ packet.track_descriptor.parent_uuid = self.process_uuid
101
+ packet.track_descriptor.thread.pid = 1
102
+ packet.track_descriptor.thread.tid = thread_id
103
+ packet.track_descriptor.thread.thread_name = thread_name
104
+ self.packets.append(packet)
105
+ trusted_packet_sequence_id = 1
106
+
107
+ batches = list(generate_batches(df_blocks))
108
+ for begin, end, limit in tqdm(batches, unit="event batches"):
109
+ df_spans = self.client.query_spans(
110
+ begin, end, limit=limit, stream_id=stream_id
111
+ )
112
+ begin_ns = df_spans["begin"].astype("int64")
113
+ end_ns = df_spans["end"].astype("int64")
114
+ for index, span in df_spans.iterrows():
115
+ packet = trace_packet_pb2.TracePacket()
116
+ packet.timestamp = begin_ns[index]
117
+ packet.track_event.type = (
118
+ track_event.track_event_pb2.TrackEvent.Type.TYPE_SLICE_BEGIN
119
+ )
120
+ packet.track_event.track_uuid = thread_uuid
121
+ span_name = span["name"]
122
+ name_iid, new_name = self.get_name_iid(span_name)
123
+ packet.track_event.name_iid = name_iid
124
+ category_iid, new_category = self.get_category_iid(span["target"])
125
+ packet.track_event.category_iids.append(category_iid)
126
+
127
+ source_location = (span["filename"], span["line"])
128
+ source_location_iid, new_source_location = self.get_location_iid(source_location)
129
+ packet.track_event.source_location_iid = source_location_iid
130
+ if self.first:
131
+ # this is necessary for interning to work
132
+ self.first = False
133
+ packet.first_packet_on_sequence = True
134
+ packet.sequence_flags = 3
135
+ else:
136
+ packet.sequence_flags = 2
137
+
138
+ if new_name:
139
+ event_name = packet.interned_data.event_names.add()
140
+ event_name.iid = name_iid
141
+ event_name.name = span_name
142
+ if new_category:
143
+ cat_name = packet.interned_data.event_categories.add()
144
+ cat_name.iid = category_iid
145
+ cat_name.name = span["target"]
146
+ if new_source_location:
147
+ loc = packet.interned_data.source_locations.add()
148
+ loc.iid = source_location_iid
149
+ loc.file_name = source_location[0]
150
+ loc.line_number = source_location[1]
151
+
152
+ packet.trusted_packet_sequence_id = trusted_packet_sequence_id
153
+ self.packets.append(packet)
154
+
155
+ packet = trace_packet_pb2.TracePacket()
156
+ packet.timestamp = end_ns[index]
157
+ packet.track_event.type = (
158
+ track_event.track_event_pb2.TrackEvent.Type.TYPE_SLICE_END
159
+ )
160
+ packet.track_event.track_uuid = thread_uuid
161
+ packet.track_event.name_iid = name_iid
162
+ packet.track_event.category_iids.append(category_iid)
163
+ packet.track_event.source_location_iid = source_location_iid
164
+ packet.sequence_flags = 2
165
+ packet.trusted_packet_sequence_id = trusted_packet_sequence_id
166
+
167
+ self.packets.append(packet)
168
+
169
+ def write_file(self, filename):
170
+ with open(filename, "wb") as f:
171
+ f.write(self.trace.SerializeToString())
172
+
173
+
174
+ def get_process_cpu_streams(client, process_id):
175
+ def prop_to_dict(props):
176
+ prop_dict = {}
177
+ for p in props:
178
+ prop_dict[p["key"]] = p["value"]
179
+ return prop_dict
180
+
181
+ def get_thread_name(prop_dict):
182
+ return prop_dict["thread-name"]
183
+
184
+ def get_thread_id(prop_dict):
185
+ return int(prop_dict["thread-id"])
186
+
187
+ df_streams = client.query_streams(
188
+ begin=None, end=None, limit=1024, tag_filter="cpu", process_id=process_id
189
+ )
190
+ df_streams["properties"] = df_streams["properties"].apply(prop_to_dict)
191
+ df_streams["thread_name"] = df_streams["properties"].apply(get_thread_name)
192
+ df_streams["thread_id"] = df_streams["properties"].apply(get_thread_id)
193
+ return df_streams
194
+
195
+
196
+ def write_process_trace(client, process_id, trace_filepath):
197
+ process_df = client.find_process(process_id)
198
+ assert process_df.shape[0] == 1
199
+ process = process_df.iloc[0]
200
+ streams = get_process_cpu_streams(client, process_id)
201
+ writer = Writer(client, process_id, process["exe"])
202
+ for index, stream in tqdm(list(streams.iterrows()), unit="threads"):
203
+ stream_id = stream["thread_id"]
204
+ writer.append_thread(stream["stream_id"], stream["thread_name"], stream_id)
205
+ writer.write_file(trace_filepath)
@@ -18,3 +18,19 @@ def request(url, args, headers={}):
18
18
  )
19
19
  table = pq.read_table(io.BytesIO(response.content))
20
20
  return table.to_pandas()
21
+
22
+ def streamed_request(url, args, headers={}):
23
+ response = requests.post(
24
+ url,
25
+ headers=headers,
26
+ data=cbor2.dumps(args),
27
+ stream=True,
28
+ timeout=300,
29
+ )
30
+ if response.status_code != 200:
31
+ raise Exception(
32
+ "http request url={2} failed with code={0} text={1}".format(
33
+ response.status_code, response.text, url
34
+ )
35
+ )
36
+ return response
@@ -0,0 +1,38 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # NO CHECKED-IN PROTOBUF GENCODE
4
+ # source: protos/perfetto/common/android_energy_consumer_descriptor.proto
5
+ # Protobuf Python Version: 5.27.1
6
+ """Generated protocol buffer code."""
7
+ from google.protobuf import descriptor as _descriptor
8
+ from google.protobuf import descriptor_pool as _descriptor_pool
9
+ from google.protobuf import runtime_version as _runtime_version
10
+ from google.protobuf import symbol_database as _symbol_database
11
+ from google.protobuf.internal import builder as _builder
12
+ _runtime_version.ValidateProtobufRuntimeVersion(
13
+ _runtime_version.Domain.PUBLIC,
14
+ 5,
15
+ 27,
16
+ 1,
17
+ '',
18
+ 'protos/perfetto/common/android_energy_consumer_descriptor.proto'
19
+ )
20
+ # @@protoc_insertion_point(imports)
21
+
22
+ _sym_db = _symbol_database.Default()
23
+
24
+
25
+
26
+
27
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n?protos/perfetto/common/android_energy_consumer_descriptor.proto\x12\x0fperfetto.protos\"`\n\x15\x41ndroidEnergyConsumer\x12\x1a\n\x12\x65nergy_consumer_id\x18\x01 \x01(\x05\x12\x0f\n\x07ordinal\x18\x02 \x01(\x05\x12\x0c\n\x04type\x18\x03 \x01(\t\x12\x0c\n\x04name\x18\x04 \x01(\t\"c\n\x1f\x41ndroidEnergyConsumerDescriptor\x12@\n\x10\x65nergy_consumers\x18\x01 \x03(\x0b\x32&.perfetto.protos.AndroidEnergyConsumer')
28
+
29
+ _globals = globals()
30
+ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
31
+ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'protos.perfetto.common.android_energy_consumer_descriptor_pb2', _globals)
32
+ if not _descriptor._USE_C_DESCRIPTORS:
33
+ DESCRIPTOR._loaded_options = None
34
+ _globals['_ANDROIDENERGYCONSUMER']._serialized_start=84
35
+ _globals['_ANDROIDENERGYCONSUMER']._serialized_end=180
36
+ _globals['_ANDROIDENERGYCONSUMERDESCRIPTOR']._serialized_start=182
37
+ _globals['_ANDROIDENERGYCONSUMERDESCRIPTOR']._serialized_end=281
38
+ # @@protoc_insertion_point(module_scope)
@@ -0,0 +1,38 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # NO CHECKED-IN PROTOBUF GENCODE
4
+ # source: protos/perfetto/common/android_log_constants.proto
5
+ # Protobuf Python Version: 5.27.1
6
+ """Generated protocol buffer code."""
7
+ from google.protobuf import descriptor as _descriptor
8
+ from google.protobuf import descriptor_pool as _descriptor_pool
9
+ from google.protobuf import runtime_version as _runtime_version
10
+ from google.protobuf import symbol_database as _symbol_database
11
+ from google.protobuf.internal import builder as _builder
12
+ _runtime_version.ValidateProtobufRuntimeVersion(
13
+ _runtime_version.Domain.PUBLIC,
14
+ 5,
15
+ 27,
16
+ 1,
17
+ '',
18
+ 'protos/perfetto/common/android_log_constants.proto'
19
+ )
20
+ # @@protoc_insertion_point(imports)
21
+
22
+ _sym_db = _symbol_database.Default()
23
+
24
+
25
+
26
+
27
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n2protos/perfetto/common/android_log_constants.proto\x12\x0fperfetto.protos*\x8e\x01\n\x0c\x41ndroidLogId\x12\x0f\n\x0bLID_DEFAULT\x10\x00\x12\r\n\tLID_RADIO\x10\x01\x12\x0e\n\nLID_EVENTS\x10\x02\x12\x0e\n\nLID_SYSTEM\x10\x03\x12\r\n\tLID_CRASH\x10\x04\x12\r\n\tLID_STATS\x10\x05\x12\x10\n\x0cLID_SECURITY\x10\x06\x12\x0e\n\nLID_KERNEL\x10\x07*\x9b\x01\n\x12\x41ndroidLogPriority\x12\x14\n\x10PRIO_UNSPECIFIED\x10\x00\x12\x0f\n\x0bPRIO_UNUSED\x10\x01\x12\x10\n\x0cPRIO_VERBOSE\x10\x02\x12\x0e\n\nPRIO_DEBUG\x10\x03\x12\r\n\tPRIO_INFO\x10\x04\x12\r\n\tPRIO_WARN\x10\x05\x12\x0e\n\nPRIO_ERROR\x10\x06\x12\x0e\n\nPRIO_FATAL\x10\x07')
28
+
29
+ _globals = globals()
30
+ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
31
+ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'protos.perfetto.common.android_log_constants_pb2', _globals)
32
+ if not _descriptor._USE_C_DESCRIPTORS:
33
+ DESCRIPTOR._loaded_options = None
34
+ _globals['_ANDROIDLOGID']._serialized_start=72
35
+ _globals['_ANDROIDLOGID']._serialized_end=214
36
+ _globals['_ANDROIDLOGPRIORITY']._serialized_start=217
37
+ _globals['_ANDROIDLOGPRIORITY']._serialized_end=372
38
+ # @@protoc_insertion_point(module_scope)
@@ -0,0 +1,36 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # NO CHECKED-IN PROTOBUF GENCODE
4
+ # source: protos/perfetto/common/builtin_clock.proto
5
+ # Protobuf Python Version: 5.27.1
6
+ """Generated protocol buffer code."""
7
+ from google.protobuf import descriptor as _descriptor
8
+ from google.protobuf import descriptor_pool as _descriptor_pool
9
+ from google.protobuf import runtime_version as _runtime_version
10
+ from google.protobuf import symbol_database as _symbol_database
11
+ from google.protobuf.internal import builder as _builder
12
+ _runtime_version.ValidateProtobufRuntimeVersion(
13
+ _runtime_version.Domain.PUBLIC,
14
+ 5,
15
+ 27,
16
+ 1,
17
+ '',
18
+ 'protos/perfetto/common/builtin_clock.proto'
19
+ )
20
+ # @@protoc_insertion_point(imports)
21
+
22
+ _sym_db = _symbol_database.Default()
23
+
24
+
25
+
26
+
27
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n*protos/perfetto/common/builtin_clock.proto\x12\x0fperfetto.protos*\xa3\x02\n\x0c\x42uiltinClock\x12\x19\n\x15\x42UILTIN_CLOCK_UNKNOWN\x10\x00\x12\x1a\n\x16\x42UILTIN_CLOCK_REALTIME\x10\x01\x12!\n\x1d\x42UILTIN_CLOCK_REALTIME_COARSE\x10\x02\x12\x1b\n\x17\x42UILTIN_CLOCK_MONOTONIC\x10\x03\x12\"\n\x1e\x42UILTIN_CLOCK_MONOTONIC_COARSE\x10\x04\x12\x1f\n\x1b\x42UILTIN_CLOCK_MONOTONIC_RAW\x10\x05\x12\x1a\n\x16\x42UILTIN_CLOCK_BOOTTIME\x10\x06\x12\x15\n\x11\x42UILTIN_CLOCK_TSC\x10\t\x12\x18\n\x14\x42UILTIN_CLOCK_MAX_ID\x10?\"\x04\x08\x07\x10\x07\"\x04\x08\x08\x10\x08')
28
+
29
+ _globals = globals()
30
+ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
31
+ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'protos.perfetto.common.builtin_clock_pb2', _globals)
32
+ if not _descriptor._USE_C_DESCRIPTORS:
33
+ DESCRIPTOR._loaded_options = None
34
+ _globals['_BUILTINCLOCK']._serialized_start=64
35
+ _globals['_BUILTINCLOCK']._serialized_end=355
36
+ # @@protoc_insertion_point(module_scope)
@@ -0,0 +1,62 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # NO CHECKED-IN PROTOBUF GENCODE
4
+ # source: protos/perfetto/common/descriptor.proto
5
+ # Protobuf Python Version: 5.27.1
6
+ """Generated protocol buffer code."""
7
+ from google.protobuf import descriptor as _descriptor
8
+ from google.protobuf import descriptor_pool as _descriptor_pool
9
+ from google.protobuf import runtime_version as _runtime_version
10
+ from google.protobuf import symbol_database as _symbol_database
11
+ from google.protobuf.internal import builder as _builder
12
+ _runtime_version.ValidateProtobufRuntimeVersion(
13
+ _runtime_version.Domain.PUBLIC,
14
+ 5,
15
+ 27,
16
+ 1,
17
+ '',
18
+ 'protos/perfetto/common/descriptor.proto'
19
+ )
20
+ # @@protoc_insertion_point(imports)
21
+
22
+ _sym_db = _symbol_database.Default()
23
+
24
+
25
+
26
+
27
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\'protos/perfetto/common/descriptor.proto\x12\x0fperfetto.protos\"G\n\x11\x46ileDescriptorSet\x12\x32\n\x04\x66ile\x18\x01 \x03(\x0b\x32$.perfetto.protos.FileDescriptorProto\"\xbf\x02\n\x13\x46ileDescriptorProto\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0f\n\x07package\x18\x02 \x01(\t\x12\x12\n\ndependency\x18\x03 \x03(\t\x12\x19\n\x11public_dependency\x18\n \x03(\x05\x12\x17\n\x0fweak_dependency\x18\x0b \x03(\x05\x12\x36\n\x0cmessage_type\x18\x04 \x03(\x0b\x32 .perfetto.protos.DescriptorProto\x12\x37\n\tenum_type\x18\x05 \x03(\x0b\x32$.perfetto.protos.EnumDescriptorProto\x12\x38\n\textension\x18\x07 \x03(\x0b\x32%.perfetto.protos.FieldDescriptorProtoJ\x04\x08\x06\x10\x07J\x04\x08\x08\x10\tJ\x04\x08\t\x10\nJ\x04\x08\x0c\x10\r\"\xd2\x03\n\x0f\x44\x65scriptorProto\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x34\n\x05\x66ield\x18\x02 \x03(\x0b\x32%.perfetto.protos.FieldDescriptorProto\x12\x38\n\textension\x18\x06 \x03(\x0b\x32%.perfetto.protos.FieldDescriptorProto\x12\x35\n\x0bnested_type\x18\x03 \x03(\x0b\x32 .perfetto.protos.DescriptorProto\x12\x37\n\tenum_type\x18\x04 \x03(\x0b\x32$.perfetto.protos.EnumDescriptorProto\x12\x39\n\noneof_decl\x18\x08 \x03(\x0b\x32%.perfetto.protos.OneofDescriptorProto\x12\x46\n\x0ereserved_range\x18\t \x03(\x0b\x32..perfetto.protos.DescriptorProto.ReservedRange\x12\x15\n\rreserved_name\x18\n \x03(\t\x1a+\n\rReservedRange\x12\r\n\x05start\x18\x01 \x01(\x05\x12\x0b\n\x03\x65nd\x18\x02 \x01(\x05J\x04\x08\x05\x10\x06J\x04\x08\x07\x10\x08\"\x9e\x02\n\x13UninterpretedOption\x12;\n\x04name\x18\x02 \x03(\x0b\x32-.perfetto.protos.UninterpretedOption.NamePart\x12\x18\n\x10identifier_value\x18\x03 \x01(\t\x12\x1a\n\x12positive_int_value\x18\x04 \x01(\x04\x12\x1a\n\x12negative_int_value\x18\x05 \x01(\x03\x12\x14\n\x0c\x64ouble_value\x18\x06 \x01(\x01\x12\x14\n\x0cstring_value\x18\x07 \x01(\x0c\x12\x17\n\x0f\x61ggregate_value\x18\x08 \x01(\t\x1a\x33\n\x08NamePart\x12\x11\n\tname_part\x18\x01 \x01(\t\x12\x14\n\x0cis_extension\x18\x02 \x01(\x08\"c\n\x0c\x46ieldOptions\x12\x0e\n\x06packed\x18\x02 \x01(\x08\x12\x43\n\x14uninterpreted_option\x18\xe7\x07 \x03(\x0b\x32$.perfetto.protos.UninterpretedOption\"\xaf\x05\n\x14\x46ieldDescriptorProto\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0e\n\x06number\x18\x03 \x01(\x05\x12:\n\x05label\x18\x04 \x01(\x0e\x32+.perfetto.protos.FieldDescriptorProto.Label\x12\x38\n\x04type\x18\x05 \x01(\x0e\x32*.perfetto.protos.FieldDescriptorProto.Type\x12\x11\n\ttype_name\x18\x06 \x01(\t\x12\x10\n\x08\x65xtendee\x18\x02 \x01(\t\x12\x15\n\rdefault_value\x18\x07 \x01(\t\x12.\n\x07options\x18\x08 \x01(\x0b\x32\x1d.perfetto.protos.FieldOptions\x12\x13\n\x0boneof_index\x18\t \x01(\x05\"\xb6\x02\n\x04Type\x12\x0f\n\x0bTYPE_DOUBLE\x10\x01\x12\x0e\n\nTYPE_FLOAT\x10\x02\x12\x0e\n\nTYPE_INT64\x10\x03\x12\x0f\n\x0bTYPE_UINT64\x10\x04\x12\x0e\n\nTYPE_INT32\x10\x05\x12\x10\n\x0cTYPE_FIXED64\x10\x06\x12\x10\n\x0cTYPE_FIXED32\x10\x07\x12\r\n\tTYPE_BOOL\x10\x08\x12\x0f\n\x0bTYPE_STRING\x10\t\x12\x0e\n\nTYPE_GROUP\x10\n\x12\x10\n\x0cTYPE_MESSAGE\x10\x0b\x12\x0e\n\nTYPE_BYTES\x10\x0c\x12\x0f\n\x0bTYPE_UINT32\x10\r\x12\r\n\tTYPE_ENUM\x10\x0e\x12\x11\n\rTYPE_SFIXED32\x10\x0f\x12\x11\n\rTYPE_SFIXED64\x10\x10\x12\x0f\n\x0bTYPE_SINT32\x10\x11\x12\x0f\n\x0bTYPE_SINT64\x10\x12\"C\n\x05Label\x12\x12\n\x0eLABEL_OPTIONAL\x10\x01\x12\x12\n\x0eLABEL_REQUIRED\x10\x02\x12\x12\n\x0eLABEL_REPEATED\x10\x03J\x04\x08\n\x10\x0b\"T\n\x14OneofDescriptorProto\x12\x0c\n\x04name\x18\x01 \x01(\t\x12.\n\x07options\x18\x02 \x01(\x0b\x32\x1d.perfetto.protos.OneofOptions\"\x80\x01\n\x13\x45numDescriptorProto\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x38\n\x05value\x18\x02 \x03(\x0b\x32).perfetto.protos.EnumValueDescriptorProto\x12\x15\n\rreserved_name\x18\x05 \x03(\tJ\x04\x08\x03\x10\x04J\x04\x08\x04\x10\x05\">\n\x18\x45numValueDescriptorProto\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0e\n\x06number\x18\x02 \x01(\x05J\x04\x08\x03\x10\x04\"!\n\x0cOneofOptions*\t\x08\xe8\x07\x10\x80\x80\x80\x80\x02J\x06\x08\xe7\x07\x10\xe8\x07')
28
+
29
+ _globals = globals()
30
+ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
31
+ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'protos.perfetto.common.descriptor_pb2', _globals)
32
+ if not _descriptor._USE_C_DESCRIPTORS:
33
+ DESCRIPTOR._loaded_options = None
34
+ _globals['_FILEDESCRIPTORSET']._serialized_start=60
35
+ _globals['_FILEDESCRIPTORSET']._serialized_end=131
36
+ _globals['_FILEDESCRIPTORPROTO']._serialized_start=134
37
+ _globals['_FILEDESCRIPTORPROTO']._serialized_end=453
38
+ _globals['_DESCRIPTORPROTO']._serialized_start=456
39
+ _globals['_DESCRIPTORPROTO']._serialized_end=922
40
+ _globals['_DESCRIPTORPROTO_RESERVEDRANGE']._serialized_start=867
41
+ _globals['_DESCRIPTORPROTO_RESERVEDRANGE']._serialized_end=910
42
+ _globals['_UNINTERPRETEDOPTION']._serialized_start=925
43
+ _globals['_UNINTERPRETEDOPTION']._serialized_end=1211
44
+ _globals['_UNINTERPRETEDOPTION_NAMEPART']._serialized_start=1160
45
+ _globals['_UNINTERPRETEDOPTION_NAMEPART']._serialized_end=1211
46
+ _globals['_FIELDOPTIONS']._serialized_start=1213
47
+ _globals['_FIELDOPTIONS']._serialized_end=1312
48
+ _globals['_FIELDDESCRIPTORPROTO']._serialized_start=1315
49
+ _globals['_FIELDDESCRIPTORPROTO']._serialized_end=2002
50
+ _globals['_FIELDDESCRIPTORPROTO_TYPE']._serialized_start=1617
51
+ _globals['_FIELDDESCRIPTORPROTO_TYPE']._serialized_end=1927
52
+ _globals['_FIELDDESCRIPTORPROTO_LABEL']._serialized_start=1929
53
+ _globals['_FIELDDESCRIPTORPROTO_LABEL']._serialized_end=1996
54
+ _globals['_ONEOFDESCRIPTORPROTO']._serialized_start=2004
55
+ _globals['_ONEOFDESCRIPTORPROTO']._serialized_end=2088
56
+ _globals['_ENUMDESCRIPTORPROTO']._serialized_start=2091
57
+ _globals['_ENUMDESCRIPTORPROTO']._serialized_end=2219
58
+ _globals['_ENUMVALUEDESCRIPTORPROTO']._serialized_start=2221
59
+ _globals['_ENUMVALUEDESCRIPTORPROTO']._serialized_end=2283
60
+ _globals['_ONEOFOPTIONS']._serialized_start=2285
61
+ _globals['_ONEOFOPTIONS']._serialized_end=2318
62
+ # @@protoc_insertion_point(module_scope)
@@ -0,0 +1,44 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # NO CHECKED-IN PROTOBUF GENCODE
4
+ # source: protos/perfetto/common/gpu_counter_descriptor.proto
5
+ # Protobuf Python Version: 5.27.1
6
+ """Generated protocol buffer code."""
7
+ from google.protobuf import descriptor as _descriptor
8
+ from google.protobuf import descriptor_pool as _descriptor_pool
9
+ from google.protobuf import runtime_version as _runtime_version
10
+ from google.protobuf import symbol_database as _symbol_database
11
+ from google.protobuf.internal import builder as _builder
12
+ _runtime_version.ValidateProtobufRuntimeVersion(
13
+ _runtime_version.Domain.PUBLIC,
14
+ 5,
15
+ 27,
16
+ 1,
17
+ '',
18
+ 'protos/perfetto/common/gpu_counter_descriptor.proto'
19
+ )
20
+ # @@protoc_insertion_point(imports)
21
+
22
+ _sym_db = _symbol_database.Default()
23
+
24
+
25
+
26
+
27
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n3protos/perfetto/common/gpu_counter_descriptor.proto\x12\x0fperfetto.protos\"\xb6\x0b\n\x14GpuCounterDescriptor\x12\x43\n\x05specs\x18\x01 \x03(\x0b\x32\x34.perfetto.protos.GpuCounterDescriptor.GpuCounterSpec\x12\x45\n\x06\x62locks\x18\x02 \x03(\x0b\x32\x35.perfetto.protos.GpuCounterDescriptor.GpuCounterBlock\x12\x1e\n\x16min_sampling_period_ns\x18\x03 \x01(\x04\x12\x1e\n\x16max_sampling_period_ns\x18\x04 \x01(\x04\x12&\n\x1esupports_instrumented_sampling\x18\x05 \x01(\x08\x1a\x8e\x03\n\x0eGpuCounterSpec\x12\x12\n\ncounter_id\x18\x01 \x01(\r\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x03 \x01(\t\x12\x18\n\x0eint_peak_value\x18\x05 \x01(\x03H\x00\x12\x1b\n\x11\x64ouble_peak_value\x18\x06 \x01(\x01H\x00\x12J\n\x0fnumerator_units\x18\x07 \x03(\x0e\x32\x31.perfetto.protos.GpuCounterDescriptor.MeasureUnit\x12L\n\x11\x64\x65nominator_units\x18\x08 \x03(\x0e\x32\x31.perfetto.protos.GpuCounterDescriptor.MeasureUnit\x12\x19\n\x11select_by_default\x18\t \x01(\x08\x12\x45\n\x06groups\x18\n \x03(\x0e\x32\x35.perfetto.protos.GpuCounterDescriptor.GpuCounterGroupB\x0c\n\npeak_valueJ\x04\x08\x04\x10\x05\x1as\n\x0fGpuCounterBlock\x12\x10\n\x08\x62lock_id\x18\x01 \x01(\r\x12\x16\n\x0e\x62lock_capacity\x18\x02 \x01(\r\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x04 \x01(\t\x12\x13\n\x0b\x63ounter_ids\x18\x05 \x03(\r\"u\n\x0fGpuCounterGroup\x12\x10\n\x0cUNCLASSIFIED\x10\x00\x12\n\n\x06SYSTEM\x10\x01\x12\x0c\n\x08VERTICES\x10\x02\x12\r\n\tFRAGMENTS\x10\x03\x12\x0e\n\nPRIMITIVES\x10\x04\x12\n\n\x06MEMORY\x10\x05\x12\x0b\n\x07\x43OMPUTE\x10\x06\"\xac\x04\n\x0bMeasureUnit\x12\x08\n\x04NONE\x10\x00\x12\x07\n\x03\x42IT\x10\x01\x12\x0b\n\x07KILOBIT\x10\x02\x12\x0b\n\x07MEGABIT\x10\x03\x12\x0b\n\x07GIGABIT\x10\x04\x12\x0b\n\x07TERABIT\x10\x05\x12\x0b\n\x07PETABIT\x10\x06\x12\x08\n\x04\x42YTE\x10\x07\x12\x0c\n\x08KILOBYTE\x10\x08\x12\x0c\n\x08MEGABYTE\x10\t\x12\x0c\n\x08GIGABYTE\x10\n\x12\x0c\n\x08TERABYTE\x10\x0b\x12\x0c\n\x08PETABYTE\x10\x0c\x12\t\n\x05HERTZ\x10\r\x12\r\n\tKILOHERTZ\x10\x0e\x12\r\n\tMEGAHERTZ\x10\x0f\x12\r\n\tGIGAHERTZ\x10\x10\x12\r\n\tTERAHERTZ\x10\x11\x12\r\n\tPETAHERTZ\x10\x12\x12\x0e\n\nNANOSECOND\x10\x13\x12\x0f\n\x0bMICROSECOND\x10\x14\x12\x0f\n\x0bMILLISECOND\x10\x15\x12\n\n\x06SECOND\x10\x16\x12\n\n\x06MINUTE\x10\x17\x12\x08\n\x04HOUR\x10\x18\x12\n\n\x06VERTEX\x10\x19\x12\t\n\x05PIXEL\x10\x1a\x12\x0c\n\x08TRIANGLE\x10\x1b\x12\r\n\tPRIMITIVE\x10&\x12\x0c\n\x08\x46RAGMENT\x10\'\x12\r\n\tMILLIWATT\x10\x1c\x12\x08\n\x04WATT\x10\x1d\x12\x0c\n\x08KILOWATT\x10\x1e\x12\t\n\x05JOULE\x10\x1f\x12\x08\n\x04VOLT\x10 \x12\n\n\x06\x41MPERE\x10!\x12\x0b\n\x07\x43\x45LSIUS\x10\"\x12\x0e\n\nFAHRENHEIT\x10#\x12\n\n\x06KELVIN\x10$\x12\x0b\n\x07PERCENT\x10%\x12\x0f\n\x0bINSTRUCTION\x10(')
28
+
29
+ _globals = globals()
30
+ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
31
+ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'protos.perfetto.common.gpu_counter_descriptor_pb2', _globals)
32
+ if not _descriptor._USE_C_DESCRIPTORS:
33
+ DESCRIPTOR._loaded_options = None
34
+ _globals['_GPUCOUNTERDESCRIPTOR']._serialized_start=73
35
+ _globals['_GPUCOUNTERDESCRIPTOR']._serialized_end=1535
36
+ _globals['_GPUCOUNTERDESCRIPTOR_GPUCOUNTERSPEC']._serialized_start=342
37
+ _globals['_GPUCOUNTERDESCRIPTOR_GPUCOUNTERSPEC']._serialized_end=740
38
+ _globals['_GPUCOUNTERDESCRIPTOR_GPUCOUNTERBLOCK']._serialized_start=742
39
+ _globals['_GPUCOUNTERDESCRIPTOR_GPUCOUNTERBLOCK']._serialized_end=857
40
+ _globals['_GPUCOUNTERDESCRIPTOR_GPUCOUNTERGROUP']._serialized_start=859
41
+ _globals['_GPUCOUNTERDESCRIPTOR_GPUCOUNTERGROUP']._serialized_end=976
42
+ _globals['_GPUCOUNTERDESCRIPTOR_MEASUREUNIT']._serialized_start=979
43
+ _globals['_GPUCOUNTERDESCRIPTOR_MEASUREUNIT']._serialized_end=1535
44
+ # @@protoc_insertion_point(module_scope)