add config proto for android.windowmanager data source
Bug: 323165543
Test: presubmit
Change-Id: I5f1c887253f92dd3e67a55aa733d4ae1cc615314
diff --git a/Android.bp b/Android.bp
index 8c3083d..92caf75 100644
--- a/Android.bp
+++ b/Android.bp
@@ -1351,6 +1351,7 @@
"protos/perfetto/config/android/protolog_config.proto",
"protos/perfetto/config/android/surfaceflinger_layers_config.proto",
"protos/perfetto/config/android/surfaceflinger_transactions_config.proto",
+ "protos/perfetto/config/android/windowmanager_config.proto",
"protos/perfetto/config/chrome/chrome_config.proto",
"protos/perfetto/config/chrome/scenario_config.proto",
"protos/perfetto/config/chrome/v8_config.proto",
@@ -2965,6 +2966,7 @@
"protos/perfetto/config/android/protolog_config.proto",
"protos/perfetto/config/android/surfaceflinger_layers_config.proto",
"protos/perfetto/config/android/surfaceflinger_transactions_config.proto",
+ "protos/perfetto/config/android/windowmanager_config.proto",
],
}
@@ -2993,6 +2995,7 @@
"external/perfetto/protos/perfetto/config/android/protolog_config.gen.cc",
"external/perfetto/protos/perfetto/config/android/surfaceflinger_layers_config.gen.cc",
"external/perfetto/protos/perfetto/config/android/surfaceflinger_transactions_config.gen.cc",
+ "external/perfetto/protos/perfetto/config/android/windowmanager_config.gen.cc",
],
}
@@ -3021,6 +3024,7 @@
"external/perfetto/protos/perfetto/config/android/protolog_config.gen.h",
"external/perfetto/protos/perfetto/config/android/surfaceflinger_layers_config.gen.h",
"external/perfetto/protos/perfetto/config/android/surfaceflinger_transactions_config.gen.h",
+ "external/perfetto/protos/perfetto/config/android/windowmanager_config.gen.h",
],
export_include_dirs: [
".",
@@ -3044,6 +3048,7 @@
"protos/perfetto/config/android/protolog_config.proto",
"protos/perfetto/config/android/surfaceflinger_layers_config.proto",
"protos/perfetto/config/android/surfaceflinger_transactions_config.proto",
+ "protos/perfetto/config/android/windowmanager_config.proto",
],
}
@@ -3071,6 +3076,7 @@
"external/perfetto/protos/perfetto/config/android/protolog_config.pb.cc",
"external/perfetto/protos/perfetto/config/android/surfaceflinger_layers_config.pb.cc",
"external/perfetto/protos/perfetto/config/android/surfaceflinger_transactions_config.pb.cc",
+ "external/perfetto/protos/perfetto/config/android/windowmanager_config.pb.cc",
],
}
@@ -3098,6 +3104,7 @@
"external/perfetto/protos/perfetto/config/android/protolog_config.pb.h",
"external/perfetto/protos/perfetto/config/android/surfaceflinger_layers_config.pb.h",
"external/perfetto/protos/perfetto/config/android/surfaceflinger_transactions_config.pb.h",
+ "external/perfetto/protos/perfetto/config/android/windowmanager_config.pb.h",
],
export_include_dirs: [
".",
@@ -3121,6 +3128,7 @@
"protos/perfetto/config/android/protolog_config.proto",
"protos/perfetto/config/android/surfaceflinger_layers_config.proto",
"protos/perfetto/config/android/surfaceflinger_transactions_config.proto",
+ "protos/perfetto/config/android/windowmanager_config.proto",
],
}
@@ -3149,6 +3157,7 @@
"external/perfetto/protos/perfetto/config/android/protolog_config.pbzero.cc",
"external/perfetto/protos/perfetto/config/android/surfaceflinger_layers_config.pbzero.cc",
"external/perfetto/protos/perfetto/config/android/surfaceflinger_transactions_config.pbzero.cc",
+ "external/perfetto/protos/perfetto/config/android/windowmanager_config.pbzero.cc",
],
}
@@ -3177,6 +3186,7 @@
"external/perfetto/protos/perfetto/config/android/protolog_config.pbzero.h",
"external/perfetto/protos/perfetto/config/android/surfaceflinger_layers_config.pbzero.h",
"external/perfetto/protos/perfetto/config/android/surfaceflinger_transactions_config.pbzero.h",
+ "external/perfetto/protos/perfetto/config/android/windowmanager_config.pbzero.h",
],
export_include_dirs: [
".",
@@ -3311,6 +3321,7 @@
"protos/perfetto/config/android/protolog_config.proto",
"protos/perfetto/config/android/surfaceflinger_layers_config.proto",
"protos/perfetto/config/android/surfaceflinger_transactions_config.proto",
+ "protos/perfetto/config/android/windowmanager_config.proto",
"protos/perfetto/config/chrome/chrome_config.proto",
"protos/perfetto/config/chrome/scenario_config.proto",
"protos/perfetto/config/chrome/v8_config.proto",
@@ -6486,6 +6497,7 @@
"protos/perfetto/config/android/protolog_config.proto",
"protos/perfetto/config/android/surfaceflinger_layers_config.proto",
"protos/perfetto/config/android/surfaceflinger_transactions_config.proto",
+ "protos/perfetto/config/android/windowmanager_config.proto",
"protos/perfetto/config/chrome/chrome_config.proto",
"protos/perfetto/config/chrome/scenario_config.proto",
"protos/perfetto/config/chrome/v8_config.proto",
@@ -14629,6 +14641,7 @@
"protos/perfetto/config/android/protolog_config.proto",
"protos/perfetto/config/android/surfaceflinger_layers_config.proto",
"protos/perfetto/config/android/surfaceflinger_transactions_config.proto",
+ "protos/perfetto/config/android/windowmanager_config.proto",
"protos/perfetto/config/chrome/chrome_config.proto",
"protos/perfetto/config/chrome/scenario_config.proto",
"protos/perfetto/config/chrome/v8_config.proto",
@@ -15905,6 +15918,7 @@
"protos/perfetto/config/android/protolog_config.proto",
"protos/perfetto/config/android/surfaceflinger_layers_config.proto",
"protos/perfetto/config/android/surfaceflinger_transactions_config.proto",
+ "protos/perfetto/config/android/windowmanager_config.proto",
"protos/perfetto/config/chrome/chrome_config.proto",
"protos/perfetto/config/chrome/scenario_config.proto",
"protos/perfetto/config/chrome/v8_config.proto",
@@ -17513,7 +17527,7 @@
cmd: "mkdir -p $(genDir)/$(in) " +
"&& $(location aprotoc) " +
"--plugin=$(location protoc-gen-javastream) " +
- "--javastream_opt=include_filter:perfetto.protos.TracePacket,perfetto.protos.ShellTransition,perfetto.protos.ShellHandlerMappings,perfetto.protos.ProtoLogMessage,perfetto.protos.ProtoLogViewerConfig,perfetto.protos.ShellHandlerMapping,perfetto.protos.ShellHandlerMappings,perfetto.protos.ProtoLogGroup,perfetto.protos.ProtoLogConfig,perfetto.protos.DataSourceConfig,perfetto.protos.InternedString,perfetto.protos.InternedData,perfetto.protos.ProtoLogLevel,perfetto.protos.TestEvent,perfetto.protos.TestEvent.TestPayload,perfetto.protos.TestConfig,perfetto.protos.TestConfig.DummyFields,perfetto.protos.WinscopeExtensionsImpl,perfetto.protos.InputMethodClientsTraceProto,perfetto.protos.InputMethodManagerServiceTraceProto,perfetto.protos.InputMethodServiceTraceProto,perfetto.protos.ViewCapture,perfetto.protos.WindowManagerTraceEntry " +
+ "--javastream_opt=include_filter:perfetto.protos.TracePacket,perfetto.protos.ShellTransition,perfetto.protos.ShellHandlerMappings,perfetto.protos.ProtoLogMessage,perfetto.protos.ProtoLogViewerConfig,perfetto.protos.ShellHandlerMapping,perfetto.protos.ShellHandlerMappings,perfetto.protos.ProtoLogGroup,perfetto.protos.ProtoLogConfig,perfetto.protos.DataSourceConfig,perfetto.protos.InternedString,perfetto.protos.InternedData,perfetto.protos.ProtoLogLevel,perfetto.protos.TestEvent,perfetto.protos.TestEvent.TestPayload,perfetto.protos.TestConfig,perfetto.protos.TestConfig.DummyFields,perfetto.protos.WinscopeExtensionsImpl,perfetto.protos.InputMethodClientsTraceProto,perfetto.protos.InputMethodManagerServiceTraceProto,perfetto.protos.InputMethodServiceTraceProto,perfetto.protos.ViewCapture,perfetto.protos.WindowManagerConfig,perfetto.protos.WindowManagerTraceEntry " +
"--javastream_out=$(genDir)/$(in) " +
"-Iexternal/protobuf/src " +
"-Iexternal/perfetto " +
diff --git a/Android.bp.extras b/Android.bp.extras
index 6d479e8..51a9345 100644
--- a/Android.bp.extras
+++ b/Android.bp.extras
@@ -185,7 +185,7 @@
cmd: "mkdir -p $(genDir)/$(in) " +
"&& $(location aprotoc) " +
"--plugin=$(location protoc-gen-javastream) " +
- "--javastream_opt=include_filter:perfetto.protos.TracePacket,perfetto.protos.ShellTransition,perfetto.protos.ShellHandlerMappings,perfetto.protos.ProtoLogMessage,perfetto.protos.ProtoLogViewerConfig,perfetto.protos.ShellHandlerMapping,perfetto.protos.ShellHandlerMappings,perfetto.protos.ProtoLogGroup,perfetto.protos.ProtoLogConfig,perfetto.protos.DataSourceConfig,perfetto.protos.InternedString,perfetto.protos.InternedData,perfetto.protos.ProtoLogLevel,perfetto.protos.TestEvent,perfetto.protos.TestEvent.TestPayload,perfetto.protos.TestConfig,perfetto.protos.TestConfig.DummyFields,perfetto.protos.WinscopeExtensionsImpl,perfetto.protos.InputMethodClientsTraceProto,perfetto.protos.InputMethodManagerServiceTraceProto,perfetto.protos.InputMethodServiceTraceProto,perfetto.protos.ViewCapture,perfetto.protos.WindowManagerTraceEntry " +
+ "--javastream_opt=include_filter:perfetto.protos.TracePacket,perfetto.protos.ShellTransition,perfetto.protos.ShellHandlerMappings,perfetto.protos.ProtoLogMessage,perfetto.protos.ProtoLogViewerConfig,perfetto.protos.ShellHandlerMapping,perfetto.protos.ShellHandlerMappings,perfetto.protos.ProtoLogGroup,perfetto.protos.ProtoLogConfig,perfetto.protos.DataSourceConfig,perfetto.protos.InternedString,perfetto.protos.InternedData,perfetto.protos.ProtoLogLevel,perfetto.protos.TestEvent,perfetto.protos.TestEvent.TestPayload,perfetto.protos.TestConfig,perfetto.protos.TestConfig.DummyFields,perfetto.protos.WinscopeExtensionsImpl,perfetto.protos.InputMethodClientsTraceProto,perfetto.protos.InputMethodManagerServiceTraceProto,perfetto.protos.InputMethodServiceTraceProto,perfetto.protos.ViewCapture,perfetto.protos.WindowManagerConfig,perfetto.protos.WindowManagerTraceEntry " +
"--javastream_out=$(genDir)/$(in) " +
"-Iexternal/protobuf/src " +
"-Iexternal/perfetto " +
diff --git a/BUILD b/BUILD
index 5e4dc5a..bb2709c 100644
--- a/BUILD
+++ b/BUILD
@@ -4159,6 +4159,7 @@
"protos/perfetto/config/android/protolog_config.proto",
"protos/perfetto/config/android/surfaceflinger_layers_config.proto",
"protos/perfetto/config/android/surfaceflinger_transactions_config.proto",
+ "protos/perfetto/config/android/windowmanager_config.proto",
],
visibility = [
PERFETTO_CONFIG.proto_library_visibility,
diff --git a/protos/perfetto/config/android/BUILD.gn b/protos/perfetto/config/android/BUILD.gn
index ec4f7ce..b8d9764 100644
--- a/protos/perfetto/config/android/BUILD.gn
+++ b/protos/perfetto/config/android/BUILD.gn
@@ -30,5 +30,6 @@
"protolog_config.proto",
"surfaceflinger_layers_config.proto",
"surfaceflinger_transactions_config.proto",
+ "windowmanager_config.proto",
]
}
diff --git a/protos/perfetto/config/android/windowmanager_config.proto b/protos/perfetto/config/android/windowmanager_config.proto
new file mode 100644
index 0000000..1b16890
--- /dev/null
+++ b/protos/perfetto/config/android/windowmanager_config.proto
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2024 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.
+ */
+
+syntax = "proto2";
+
+package perfetto.protos;
+
+// Custom configuration for the "android.windowmanager" data source.
+message WindowManagerConfig {
+ enum LogFrequency {
+ LOG_FREQUENCY_UNSPECIFIED = 0;
+
+ // Trace state snapshots when a frame is committed.
+ LOG_FREQUENCY_FRAME = 1;
+
+ // Trace state snapshots every time a transaction is committed.
+ LOG_FREQUENCY_TRANSACTION = 2;
+ }
+ optional LogFrequency log_frequency = 1;
+
+ enum LogLevel {
+ LOG_LEVEL_UNSPECIFIED = 0;
+
+ // Logs all elements with maximum amount of information.
+ LOG_LEVEL_VERBOSE = 1;
+
+ // Logs all elements but doesn't write all configuration data.
+ LOG_LEVEL_DEBUG = 2;
+
+ // Logs only visible elements, with the minimum amount of performance
+ // overhead
+ LOG_LEVEL_CRITICAL = 3;
+ }
+ optional LogLevel log_level = 2;
+}
diff --git a/protos/perfetto/config/data_source_config.proto b/protos/perfetto/config/data_source_config.proto
index b52f83f..5249100 100644
--- a/protos/perfetto/config/data_source_config.proto
+++ b/protos/perfetto/config/data_source_config.proto
@@ -30,6 +30,7 @@
import "protos/perfetto/config/android/protolog_config.proto";
import "protos/perfetto/config/android/surfaceflinger_layers_config.proto";
import "protos/perfetto/config/android/surfaceflinger_transactions_config.proto";
+import "protos/perfetto/config/android/windowmanager_config.proto";
import "protos/perfetto/config/chrome/chrome_config.proto";
import "protos/perfetto/config/chrome/v8_config.proto";
import "protos/perfetto/config/etw/etw_config.proto";
@@ -50,7 +51,7 @@
import "protos/perfetto/config/system_info/system_info.proto";
// The configuration that is passed to each data source when starting tracing.
-// Next id: 130
+// Next id: 131
message DataSourceConfig {
enum SessionInitiator {
SESSION_INITIATOR_UNSPECIFIED = 0;
@@ -202,6 +203,9 @@
// Data source name: android.pixel.modem
optional PixelModemConfig pixel_modem_config = 129 [lazy = true];
+ // Data source name: android.windowmanager
+ optional WindowManagerConfig windowmanager_config = 130 [lazy = true];
+
// This is a fallback mechanism to send a free-form text config to the
// producer. In theory this should never be needed. All the code that
// is part of the platform (i.e. traced service) is supposed to *not* truncate
diff --git a/protos/perfetto/config/perfetto_config.proto b/protos/perfetto/config/perfetto_config.proto
index c096924..b8c5a86 100644
--- a/protos/perfetto/config/perfetto_config.proto
+++ b/protos/perfetto/config/perfetto_config.proto
@@ -815,6 +815,39 @@
// End of protos/perfetto/config/android/surfaceflinger_transactions_config.proto
+// Begin of protos/perfetto/config/android/windowmanager_config.proto
+
+// Custom configuration for the "android.windowmanager" data source.
+message WindowManagerConfig {
+ enum LogFrequency {
+ LOG_FREQUENCY_UNSPECIFIED = 0;
+
+ // Trace state snapshots when a frame is committed.
+ LOG_FREQUENCY_FRAME = 1;
+
+ // Trace state snapshots every time a transaction is committed.
+ LOG_FREQUENCY_TRANSACTION = 2;
+ }
+ optional LogFrequency log_frequency = 1;
+
+ enum LogLevel {
+ LOG_LEVEL_UNSPECIFIED = 0;
+
+ // Logs all elements with maximum amount of information.
+ LOG_LEVEL_VERBOSE = 1;
+
+ // Logs all elements but doesn't write all configuration data.
+ LOG_LEVEL_DEBUG = 2;
+
+ // Logs only visible elements, with the minimum amount of performance
+ // overhead
+ LOG_LEVEL_CRITICAL = 3;
+ }
+ optional LogLevel log_level = 2;
+}
+
+// End of protos/perfetto/config/android/windowmanager_config.proto
+
// Begin of protos/perfetto/config/chrome/chrome_config.proto
message ChromeConfig {
@@ -3279,7 +3312,7 @@
// Begin of protos/perfetto/config/data_source_config.proto
// The configuration that is passed to each data source when starting tracing.
-// Next id: 130
+// Next id: 131
message DataSourceConfig {
enum SessionInitiator {
SESSION_INITIATOR_UNSPECIFIED = 0;
@@ -3431,6 +3464,9 @@
// Data source name: android.pixel.modem
optional PixelModemConfig pixel_modem_config = 129 [lazy = true];
+ // Data source name: android.windowmanager
+ optional WindowManagerConfig windowmanager_config = 130 [lazy = true];
+
// This is a fallback mechanism to send a free-form text config to the
// producer. In theory this should never be needed. All the code that
// is part of the platform (i.e. traced service) is supposed to *not* truncate
diff --git a/protos/perfetto/trace/perfetto_trace.proto b/protos/perfetto/trace/perfetto_trace.proto
index 93379d3..87d0184 100644
--- a/protos/perfetto/trace/perfetto_trace.proto
+++ b/protos/perfetto/trace/perfetto_trace.proto
@@ -815,6 +815,39 @@
// End of protos/perfetto/config/android/surfaceflinger_transactions_config.proto
+// Begin of protos/perfetto/config/android/windowmanager_config.proto
+
+// Custom configuration for the "android.windowmanager" data source.
+message WindowManagerConfig {
+ enum LogFrequency {
+ LOG_FREQUENCY_UNSPECIFIED = 0;
+
+ // Trace state snapshots when a frame is committed.
+ LOG_FREQUENCY_FRAME = 1;
+
+ // Trace state snapshots every time a transaction is committed.
+ LOG_FREQUENCY_TRANSACTION = 2;
+ }
+ optional LogFrequency log_frequency = 1;
+
+ enum LogLevel {
+ LOG_LEVEL_UNSPECIFIED = 0;
+
+ // Logs all elements with maximum amount of information.
+ LOG_LEVEL_VERBOSE = 1;
+
+ // Logs all elements but doesn't write all configuration data.
+ LOG_LEVEL_DEBUG = 2;
+
+ // Logs only visible elements, with the minimum amount of performance
+ // overhead
+ LOG_LEVEL_CRITICAL = 3;
+ }
+ optional LogLevel log_level = 2;
+}
+
+// End of protos/perfetto/config/android/windowmanager_config.proto
+
// Begin of protos/perfetto/config/chrome/chrome_config.proto
message ChromeConfig {
@@ -3279,7 +3312,7 @@
// Begin of protos/perfetto/config/data_source_config.proto
// The configuration that is passed to each data source when starting tracing.
-// Next id: 130
+// Next id: 131
message DataSourceConfig {
enum SessionInitiator {
SESSION_INITIATOR_UNSPECIFIED = 0;
@@ -3431,6 +3464,9 @@
// Data source name: android.pixel.modem
optional PixelModemConfig pixel_modem_config = 129 [lazy = true];
+ // Data source name: android.windowmanager
+ optional WindowManagerConfig windowmanager_config = 130 [lazy = true];
+
// This is a fallback mechanism to send a free-form text config to the
// producer. In theory this should never be needed. All the code that
// is part of the platform (i.e. traced service) is supposed to *not* truncate