Skip to content

Commit e903a2e

Browse files
authored
tp: Add GpuCorrelation TrackEvent extension for host-GPU linking (#5425)
Add a GpuCorrelation TrackEvent extension (field 3000) that allows host-side track events to declare correlations with GPU render stage events: - render_stage_submission_event_ids: correlates this slice with the GPU render stage events it submitted (e.g. cudaLaunchKernel). - render_stage_wait_event_ids: indicates this slice waited on the specified GPU render stage events to complete (e.g. cudaMemcpy). The extension is defined in gpu_track_event.proto using the perfetto_gpu allocation (3000-3099) in track_event_extensions.json. The trace processor loads the extension descriptor and creates flow arrows between the correlated slices via GpuTracker.
1 parent c94604a commit e903a2e

17 files changed

Lines changed: 443 additions & 5 deletions

File tree

Android.bp

Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2852,6 +2852,7 @@ cc_test {
28522852
":perfetto_protos_perfetto_trace_generic_kernel_lite_gen",
28532853
":perfetto_protos_perfetto_trace_generic_kernel_zero_gen",
28542854
":perfetto_protos_perfetto_trace_gpu_cpp_gen",
2855+
":perfetto_protos_perfetto_trace_gpu_gpu_track_event_zero_gen",
28552856
":perfetto_protos_perfetto_trace_gpu_lite_gen",
28562857
":perfetto_protos_perfetto_trace_gpu_zero_gen",
28572858
":perfetto_protos_perfetto_trace_interned_data_cpp_gen",
@@ -3217,6 +3218,7 @@ cc_test {
32173218
"perfetto_protos_perfetto_trace_generic_kernel_lite_gen_headers",
32183219
"perfetto_protos_perfetto_trace_generic_kernel_zero_gen_headers",
32193220
"perfetto_protos_perfetto_trace_gpu_cpp_gen_headers",
3221+
"perfetto_protos_perfetto_trace_gpu_gpu_track_event_zero_gen_headers",
32203222
"perfetto_protos_perfetto_trace_gpu_lite_gen_headers",
32213223
"perfetto_protos_perfetto_trace_gpu_zero_gen_headers",
32223224
"perfetto_protos_perfetto_trace_interned_data_cpp_gen_headers",
@@ -3267,6 +3269,7 @@ cc_test {
32673269
"perfetto_src_base_version_gen_h",
32683270
"perfetto_src_trace_processor_importers_proto_gen_cc_android_track_event_descriptor",
32693271
"perfetto_src_trace_processor_importers_proto_gen_cc_chrome_track_event_descriptor",
3272+
"perfetto_src_trace_processor_importers_proto_gen_cc_gpu_track_event_descriptor",
32703273
"perfetto_src_trace_processor_importers_proto_gen_cc_statsd_atoms_descriptor",
32713274
"perfetto_src_trace_processor_importers_proto_gen_cc_trace_descriptor",
32723275
"perfetto_src_trace_processor_importers_proto_gen_cc_track_event_descriptor",
@@ -10292,6 +10295,94 @@ genrule {
1029210295
],
1029310296
}
1029410297

10298+
// GN: //protos/perfetto/trace/gpu:gpu_track_event_descriptor
10299+
genrule {
10300+
name: "perfetto_protos_perfetto_trace_gpu_gpu_track_event_descriptor",
10301+
srcs: [
10302+
"protos/perfetto/trace/gpu/gpu_track_event.proto",
10303+
"protos/perfetto/trace/track_event/chrome_active_processes.proto",
10304+
"protos/perfetto/trace/track_event/chrome_application_state_info.proto",
10305+
"protos/perfetto/trace/track_event/chrome_compositor_scheduler_state.proto",
10306+
"protos/perfetto/trace/track_event/chrome_content_settings_event_info.proto",
10307+
"protos/perfetto/trace/track_event/chrome_frame_reporter.proto",
10308+
"protos/perfetto/trace/track_event/chrome_histogram_sample.proto",
10309+
"protos/perfetto/trace/track_event/chrome_keyed_service.proto",
10310+
"protos/perfetto/trace/track_event/chrome_latency_info.proto",
10311+
"protos/perfetto/trace/track_event/chrome_legacy_ipc.proto",
10312+
"protos/perfetto/trace/track_event/chrome_message_pump.proto",
10313+
"protos/perfetto/trace/track_event/chrome_mojo_event_info.proto",
10314+
"protos/perfetto/trace/track_event/chrome_process_descriptor.proto",
10315+
"protos/perfetto/trace/track_event/chrome_renderer_scheduler_state.proto",
10316+
"protos/perfetto/trace/track_event/chrome_thread_descriptor.proto",
10317+
"protos/perfetto/trace/track_event/chrome_user_event.proto",
10318+
"protos/perfetto/trace/track_event/chrome_window_handle_event_info.proto",
10319+
"protos/perfetto/trace/track_event/counter_descriptor.proto",
10320+
"protos/perfetto/trace/track_event/debug_annotation.proto",
10321+
"protos/perfetto/trace/track_event/log_message.proto",
10322+
"protos/perfetto/trace/track_event/process_descriptor.proto",
10323+
"protos/perfetto/trace/track_event/range_of_interest.proto",
10324+
"protos/perfetto/trace/track_event/screenshot.proto",
10325+
"protos/perfetto/trace/track_event/source_location.proto",
10326+
"protos/perfetto/trace/track_event/task_execution.proto",
10327+
"protos/perfetto/trace/track_event/thread_descriptor.proto",
10328+
"protos/perfetto/trace/track_event/track_descriptor.proto",
10329+
"protos/perfetto/trace/track_event/track_event.proto",
10330+
],
10331+
tools: [
10332+
"aprotoc",
10333+
],
10334+
cmd: "mkdir -p $(genDir)/external/perfetto/ && $(location aprotoc) --proto_path=external/perfetto --descriptor_set_out=$(out) $(in)",
10335+
out: [
10336+
"perfetto_protos_perfetto_trace_gpu_gpu_track_event_descriptor.bin",
10337+
],
10338+
}
10339+
10340+
// GN: //protos/perfetto/trace/gpu:gpu_track_event_zero
10341+
filegroup {
10342+
name: "perfetto_protos_perfetto_trace_gpu_gpu_track_event_zero",
10343+
srcs: [
10344+
"protos/perfetto/trace/gpu/gpu_track_event.proto",
10345+
],
10346+
}
10347+
10348+
// GN: //protos/perfetto/trace/gpu:gpu_track_event_zero
10349+
genrule {
10350+
name: "perfetto_protos_perfetto_trace_gpu_gpu_track_event_zero_gen",
10351+
srcs: [
10352+
":perfetto_protos_perfetto_trace_gpu_gpu_track_event_zero",
10353+
":perfetto_protos_perfetto_trace_track_event_zero",
10354+
],
10355+
tools: [
10356+
"aprotoc",
10357+
"protozero_plugin",
10358+
],
10359+
cmd: "mkdir -p $(genDir)/external/perfetto/ && $(location aprotoc) --proto_path=external/perfetto --plugin=protoc-gen-plugin=$(location protozero_plugin) --plugin_out=wrapper_namespace=pbzero:$(genDir)/external/perfetto/ $(locations :perfetto_protos_perfetto_trace_gpu_gpu_track_event_zero)",
10360+
out: [
10361+
"external/perfetto/protos/perfetto/trace/gpu/gpu_track_event.pbzero.cc",
10362+
],
10363+
}
10364+
10365+
// GN: //protos/perfetto/trace/gpu:gpu_track_event_zero
10366+
genrule {
10367+
name: "perfetto_protos_perfetto_trace_gpu_gpu_track_event_zero_gen_headers",
10368+
srcs: [
10369+
":perfetto_protos_perfetto_trace_gpu_gpu_track_event_zero",
10370+
":perfetto_protos_perfetto_trace_track_event_zero",
10371+
],
10372+
tools: [
10373+
"aprotoc",
10374+
"protozero_plugin",
10375+
],
10376+
cmd: "mkdir -p $(genDir)/external/perfetto/ && $(location aprotoc) --proto_path=external/perfetto --plugin=protoc-gen-plugin=$(location protozero_plugin) --plugin_out=wrapper_namespace=pbzero:$(genDir)/external/perfetto/ $(locations :perfetto_protos_perfetto_trace_gpu_gpu_track_event_zero)",
10377+
out: [
10378+
"external/perfetto/protos/perfetto/trace/gpu/gpu_track_event.pbzero.h",
10379+
],
10380+
export_include_dirs: [
10381+
".",
10382+
"protos",
10383+
],
10384+
}
10385+
1029510386
// GN: //protos/perfetto/trace/gpu:lite
1029610387
filegroup {
1029710388
name: "perfetto_protos_perfetto_trace_gpu_lite",
@@ -15826,6 +15917,21 @@ genrule {
1582615917
],
1582715918
}
1582815919

15920+
// GN: //src/trace_processor/importers/proto:gen_cc_gpu_track_event_descriptor
15921+
genrule {
15922+
name: "perfetto_src_trace_processor_importers_proto_gen_cc_gpu_track_event_descriptor",
15923+
srcs: [
15924+
":perfetto_protos_perfetto_trace_gpu_gpu_track_event_descriptor",
15925+
],
15926+
cmd: "$(location tools/gen_cc_proto_descriptor.py) --gen_dir=$(genDir) --cpp_out=$(out) $(in)",
15927+
out: [
15928+
"src/trace_processor/importers/proto/gpu_track_event.descriptor.h",
15929+
],
15930+
tool_files: [
15931+
"tools/gen_cc_proto_descriptor.py",
15932+
],
15933+
}
15934+
1582915935
// GN: //src/trace_processor/importers/proto:gen_cc_statsd_atoms_descriptor
1583015936
genrule {
1583115937
name: "perfetto_src_trace_processor_importers_proto_gen_cc_statsd_atoms_descriptor",
@@ -17150,6 +17256,7 @@ cc_library_static {
1715017256
":perfetto_protos_perfetto_trace_filesystem_zero_gen",
1715117257
":perfetto_protos_perfetto_trace_ftrace_zero_gen",
1715217258
":perfetto_protos_perfetto_trace_generic_kernel_zero_gen",
17259+
":perfetto_protos_perfetto_trace_gpu_gpu_track_event_zero_gen",
1715317260
":perfetto_protos_perfetto_trace_gpu_zero_gen",
1715417261
":perfetto_protos_perfetto_trace_interned_data_zero_gen",
1715517262
":perfetto_protos_perfetto_trace_minimal_zero_gen",
@@ -17342,6 +17449,7 @@ cc_library_static {
1734217449
"perfetto_protos_perfetto_trace_filesystem_zero_gen_headers",
1734317450
"perfetto_protos_perfetto_trace_ftrace_zero_gen_headers",
1734417451
"perfetto_protos_perfetto_trace_generic_kernel_zero_gen_headers",
17452+
"perfetto_protos_perfetto_trace_gpu_gpu_track_event_zero_gen_headers",
1734517453
"perfetto_protos_perfetto_trace_gpu_zero_gen_headers",
1734617454
"perfetto_protos_perfetto_trace_interned_data_zero_gen_headers",
1734717455
"perfetto_protos_perfetto_trace_minimal_zero_gen_headers",
@@ -17366,6 +17474,7 @@ cc_library_static {
1736617474
"perfetto_src_base_version_gen_h",
1736717475
"perfetto_src_trace_processor_importers_proto_gen_cc_android_track_event_descriptor",
1736817476
"perfetto_src_trace_processor_importers_proto_gen_cc_chrome_track_event_descriptor",
17477+
"perfetto_src_trace_processor_importers_proto_gen_cc_gpu_track_event_descriptor",
1736917478
"perfetto_src_trace_processor_importers_proto_gen_cc_statsd_atoms_descriptor",
1737017479
"perfetto_src_trace_processor_importers_proto_gen_cc_trace_descriptor",
1737117480
"perfetto_src_trace_processor_importers_proto_gen_cc_track_event_descriptor",
@@ -17414,6 +17523,7 @@ cc_library_static {
1741417523
"perfetto_protos_perfetto_trace_filesystem_zero_gen_headers",
1741517524
"perfetto_protos_perfetto_trace_ftrace_zero_gen_headers",
1741617525
"perfetto_protos_perfetto_trace_generic_kernel_zero_gen_headers",
17526+
"perfetto_protos_perfetto_trace_gpu_gpu_track_event_zero_gen_headers",
1741717527
"perfetto_protos_perfetto_trace_gpu_zero_gen_headers",
1741817528
"perfetto_protos_perfetto_trace_interned_data_zero_gen_headers",
1741917529
"perfetto_protos_perfetto_trace_minimal_zero_gen_headers",
@@ -17438,6 +17548,7 @@ cc_library_static {
1743817548
"perfetto_src_base_version_gen_h",
1743917549
"perfetto_src_trace_processor_importers_proto_gen_cc_android_track_event_descriptor",
1744017550
"perfetto_src_trace_processor_importers_proto_gen_cc_chrome_track_event_descriptor",
17551+
"perfetto_src_trace_processor_importers_proto_gen_cc_gpu_track_event_descriptor",
1744117552
"perfetto_src_trace_processor_importers_proto_gen_cc_statsd_atoms_descriptor",
1744217553
"perfetto_src_trace_processor_importers_proto_gen_cc_trace_descriptor",
1744317554
"perfetto_src_trace_processor_importers_proto_gen_cc_track_event_descriptor",
@@ -19510,6 +19621,7 @@ cc_test {
1951019621
":perfetto_protos_perfetto_trace_generic_kernel_lite_gen",
1951119622
":perfetto_protos_perfetto_trace_generic_kernel_zero_gen",
1951219623
":perfetto_protos_perfetto_trace_gpu_cpp_gen",
19624+
":perfetto_protos_perfetto_trace_gpu_gpu_track_event_zero_gen",
1951319625
":perfetto_protos_perfetto_trace_gpu_lite_gen",
1951419626
":perfetto_protos_perfetto_trace_gpu_zero_gen",
1951519627
":perfetto_protos_perfetto_trace_interned_data_cpp_gen",
@@ -19988,6 +20100,7 @@ cc_test {
1998820100
"perfetto_protos_perfetto_trace_generic_kernel_lite_gen_headers",
1998920101
"perfetto_protos_perfetto_trace_generic_kernel_zero_gen_headers",
1999020102
"perfetto_protos_perfetto_trace_gpu_cpp_gen_headers",
20103+
"perfetto_protos_perfetto_trace_gpu_gpu_track_event_zero_gen_headers",
1999120104
"perfetto_protos_perfetto_trace_gpu_lite_gen_headers",
1999220105
"perfetto_protos_perfetto_trace_gpu_zero_gen_headers",
1999320106
"perfetto_protos_perfetto_trace_interned_data_cpp_gen_headers",
@@ -20056,6 +20169,7 @@ cc_test {
2005620169
"perfetto_src_trace_processor_gen_cc_test_messages_descriptor",
2005720170
"perfetto_src_trace_processor_importers_proto_gen_cc_android_track_event_descriptor",
2005820171
"perfetto_src_trace_processor_importers_proto_gen_cc_chrome_track_event_descriptor",
20172+
"perfetto_src_trace_processor_importers_proto_gen_cc_gpu_track_event_descriptor",
2005920173
"perfetto_src_trace_processor_importers_proto_gen_cc_statsd_atoms_descriptor",
2006020174
"perfetto_src_trace_processor_importers_proto_gen_cc_trace_descriptor",
2006120175
"perfetto_src_trace_processor_importers_proto_gen_cc_track_event_descriptor",
@@ -20575,6 +20689,7 @@ cc_library_static {
2057520689
":perfetto_protos_perfetto_trace_filesystem_zero_gen",
2057620690
":perfetto_protos_perfetto_trace_ftrace_zero_gen",
2057720691
":perfetto_protos_perfetto_trace_generic_kernel_zero_gen",
20692+
":perfetto_protos_perfetto_trace_gpu_gpu_track_event_zero_gen",
2057820693
":perfetto_protos_perfetto_trace_gpu_zero_gen",
2057920694
":perfetto_protos_perfetto_trace_interned_data_zero_gen",
2058020695
":perfetto_protos_perfetto_trace_minimal_zero_gen",
@@ -20752,6 +20867,7 @@ cc_library_static {
2075220867
"perfetto_protos_perfetto_trace_filesystem_zero_gen_headers",
2075320868
"perfetto_protos_perfetto_trace_ftrace_zero_gen_headers",
2075420869
"perfetto_protos_perfetto_trace_generic_kernel_zero_gen_headers",
20870+
"perfetto_protos_perfetto_trace_gpu_gpu_track_event_zero_gen_headers",
2075520871
"perfetto_protos_perfetto_trace_gpu_zero_gen_headers",
2075620872
"perfetto_protos_perfetto_trace_interned_data_zero_gen_headers",
2075720873
"perfetto_protos_perfetto_trace_minimal_zero_gen_headers",
@@ -20775,6 +20891,7 @@ cc_library_static {
2077520891
"perfetto_protos_third_party_simpleperf_zero_gen_headers",
2077620892
"perfetto_src_trace_processor_importers_proto_gen_cc_android_track_event_descriptor",
2077720893
"perfetto_src_trace_processor_importers_proto_gen_cc_chrome_track_event_descriptor",
20894+
"perfetto_src_trace_processor_importers_proto_gen_cc_gpu_track_event_descriptor",
2077820895
"perfetto_src_trace_processor_importers_proto_gen_cc_statsd_atoms_descriptor",
2077920896
"perfetto_src_trace_processor_importers_proto_gen_cc_trace_descriptor",
2078020897
"perfetto_src_trace_processor_importers_proto_gen_cc_track_event_descriptor",
@@ -20821,6 +20938,7 @@ cc_library_static {
2082120938
"perfetto_protos_perfetto_trace_filesystem_zero_gen_headers",
2082220939
"perfetto_protos_perfetto_trace_ftrace_zero_gen_headers",
2082320940
"perfetto_protos_perfetto_trace_generic_kernel_zero_gen_headers",
20941+
"perfetto_protos_perfetto_trace_gpu_gpu_track_event_zero_gen_headers",
2082420942
"perfetto_protos_perfetto_trace_gpu_zero_gen_headers",
2082520943
"perfetto_protos_perfetto_trace_interned_data_zero_gen_headers",
2082620944
"perfetto_protos_perfetto_trace_minimal_zero_gen_headers",
@@ -20844,6 +20962,7 @@ cc_library_static {
2084420962
"perfetto_protos_third_party_simpleperf_zero_gen_headers",
2084520963
"perfetto_src_trace_processor_importers_proto_gen_cc_android_track_event_descriptor",
2084620964
"perfetto_src_trace_processor_importers_proto_gen_cc_chrome_track_event_descriptor",
20965+
"perfetto_src_trace_processor_importers_proto_gen_cc_gpu_track_event_descriptor",
2084720966
"perfetto_src_trace_processor_importers_proto_gen_cc_statsd_atoms_descriptor",
2084820967
"perfetto_src_trace_processor_importers_proto_gen_cc_trace_descriptor",
2084920968
"perfetto_src_trace_processor_importers_proto_gen_cc_track_event_descriptor",
@@ -21115,6 +21234,7 @@ cc_binary_host {
2111521234
":perfetto_protos_perfetto_trace_filesystem_zero_gen",
2111621235
":perfetto_protos_perfetto_trace_ftrace_zero_gen",
2111721236
":perfetto_protos_perfetto_trace_generic_kernel_zero_gen",
21237+
":perfetto_protos_perfetto_trace_gpu_gpu_track_event_zero_gen",
2111821238
":perfetto_protos_perfetto_trace_gpu_zero_gen",
2111921239
":perfetto_protos_perfetto_trace_interned_data_zero_gen",
2112021240
":perfetto_protos_perfetto_trace_minimal_zero_gen",
@@ -21303,6 +21423,7 @@ cc_binary_host {
2130321423
"perfetto_protos_perfetto_trace_filesystem_zero_gen_headers",
2130421424
"perfetto_protos_perfetto_trace_ftrace_zero_gen_headers",
2130521425
"perfetto_protos_perfetto_trace_generic_kernel_zero_gen_headers",
21426+
"perfetto_protos_perfetto_trace_gpu_gpu_track_event_zero_gen_headers",
2130621427
"perfetto_protos_perfetto_trace_gpu_zero_gen_headers",
2130721428
"perfetto_protos_perfetto_trace_interned_data_zero_gen_headers",
2130821429
"perfetto_protos_perfetto_trace_minimal_zero_gen_headers",
@@ -21327,6 +21448,7 @@ cc_binary_host {
2132721448
"perfetto_src_base_version_gen_h",
2132821449
"perfetto_src_trace_processor_importers_proto_gen_cc_android_track_event_descriptor",
2132921450
"perfetto_src_trace_processor_importers_proto_gen_cc_chrome_track_event_descriptor",
21451+
"perfetto_src_trace_processor_importers_proto_gen_cc_gpu_track_event_descriptor",
2133021452
"perfetto_src_trace_processor_importers_proto_gen_cc_statsd_atoms_descriptor",
2133121453
"perfetto_src_trace_processor_importers_proto_gen_cc_trace_descriptor",
2133221454
"perfetto_src_trace_processor_importers_proto_gen_cc_track_event_descriptor",

0 commit comments

Comments
 (0)