Merge "Add support for initial_display_state to the trace processor."
diff --git a/src/trace_processor/importers/proto/android_probes_module.cc b/src/trace_processor/importers/proto/android_probes_module.cc
index 7fca0dd..28405d1 100644
--- a/src/trace_processor/importers/proto/android_probes_module.cc
+++ b/src/trace_processor/importers/proto/android_probes_module.cc
@@ -37,6 +37,7 @@
RegisterForField(TracePacket::kPowerRailsFieldNumber, context);
RegisterForField(TracePacket::kAndroidLogFieldNumber, context);
RegisterForField(TracePacket::kPackagesListFieldNumber, context);
+ RegisterForField(TracePacket::kInitialDisplayStateFieldNumber, context);
}
ModuleResult AndroidProbesModule::TokenizePacket(
@@ -127,6 +128,10 @@
case TracePacket::kPackagesListFieldNumber:
parser_.ParseAndroidPackagesList(decoder.packages_list());
return;
+ case TracePacket::kInitialDisplayStateFieldNumber:
+ parser_.ParseInitialDisplayState(ttp.timestamp,
+ decoder.initial_display_state());
+ return;
}
}
diff --git a/src/trace_processor/importers/proto/android_probes_parser.cc b/src/trace_processor/importers/proto/android_probes_parser.cc
index fba0c10..f03d3e3 100644
--- a/src/trace_processor/importers/proto/android_probes_parser.cc
+++ b/src/trace_processor/importers/proto/android_probes_parser.cc
@@ -29,6 +29,7 @@
#include "protos/perfetto/common/android_log_constants.pbzero.h"
#include "protos/perfetto/config/trace_config.pbzero.h"
#include "protos/perfetto/trace/android/android_log.pbzero.h"
+#include "protos/perfetto/trace/android/initial_display_state.pbzero.h"
#include "protos/perfetto/trace/android/packages_list.pbzero.h"
#include "protos/perfetto/trace/clock_snapshot.pbzero.h"
#include "protos/perfetto/trace/power/battery_counters.pbzero.h"
@@ -49,7 +50,8 @@
batt_capacity_id_(context->storage->InternString("batt.capacity_pct")),
batt_current_id_(context->storage->InternString("batt.current_ua")),
batt_current_avg_id_(
- context->storage->InternString("batt.current.avg_ua")) {}
+ context->storage->InternString("batt.current.avg_ua")),
+ screen_state_id_(context->storage->InternString("ScreenState")) {}
void AndroidProbesParser::ParseBatteryCounters(int64_t ts, ConstBytes blob) {
protos::pbzero::BatteryCounters::Decoder evt(blob.data, blob.size);
@@ -239,5 +241,14 @@
}
}
+void AndroidProbesParser::ParseInitialDisplayState(int64_t ts,
+ ConstBytes blob) {
+ protos::pbzero::InitialDisplayState::Decoder state(blob.data, blob.size);
+
+ TrackId track =
+ context_->track_tracker->InternGlobalCounterTrack(screen_state_id_);
+ context_->event_tracker->PushCounter(ts, state.display_state(), track);
+}
+
} // namespace trace_processor
} // namespace perfetto
diff --git a/src/trace_processor/importers/proto/android_probes_parser.h b/src/trace_processor/importers/proto/android_probes_parser.h
index 2a85c11..8c4994d 100644
--- a/src/trace_processor/importers/proto/android_probes_parser.h
+++ b/src/trace_processor/importers/proto/android_probes_parser.h
@@ -40,6 +40,7 @@
void ParseAndroidLogStats(ConstBytes);
void ParseStatsdMetadata(ConstBytes);
void ParseAndroidPackagesList(ConstBytes);
+ void ParseInitialDisplayState(int64_t ts, ConstBytes);
private:
TraceProcessorContext* const context_;
@@ -48,6 +49,7 @@
const StringId batt_capacity_id_;
const StringId batt_current_id_;
const StringId batt_current_avg_id_;
+ const StringId screen_state_id_;
std::vector<StringId> power_rails_strs_id_;
};
} // namespace trace_processor
diff --git a/src/trace_processor/importers/systrace/systrace_parser.cc b/src/trace_processor/importers/systrace/systrace_parser.cc
index ddeb4c0..f31dcfd 100644
--- a/src/trace_processor/importers/systrace/systrace_parser.cc
+++ b/src/trace_processor/importers/systrace/systrace_parser.cc
@@ -26,7 +26,9 @@
namespace trace_processor {
SystraceParser::SystraceParser(TraceProcessorContext* ctx)
- : context_(ctx), lmk_id_(ctx->storage->InternString("mem.lmk")) {}
+ : context_(ctx),
+ lmk_id_(ctx->storage->InternString("mem.lmk")),
+ screen_state_id_(ctx->storage->InternString("ScreenState")) {}
SystraceParser::~SystraceParser() = default;
@@ -182,6 +184,12 @@
}
// TODO(lalitm): we should not add LMK events to the counters table
// once the UI has support for displaying instants.
+ } else if (point.name == "ScreenState") {
+ // Promote ScreenState to its own top level counter.
+ TrackId track =
+ context_->track_tracker->InternGlobalCounterTrack(screen_state_id_);
+ context_->event_tracker->PushCounter(ts, point.value, track);
+ return;
}
// This is per upid on purpose. Some counters are pushed from arbitrary
// threads but are really per process.
diff --git a/src/trace_processor/importers/systrace/systrace_parser.h b/src/trace_processor/importers/systrace/systrace_parser.h
index eaa6f15..ae5eec6 100644
--- a/src/trace_processor/importers/systrace/systrace_parser.h
+++ b/src/trace_processor/importers/systrace/systrace_parser.h
@@ -253,6 +253,7 @@
TraceProcessorContext* const context_;
const StringId lmk_id_;
+ const StringId screen_state_id_;
};
} // namespace trace_processor
diff --git a/test/trace_processor/index b/test/trace_processor/index
index 255481b..2d7d73e 100644
--- a/test/trace_processor/index
+++ b/test/trace_processor/index
@@ -211,3 +211,6 @@
# Thread time_in_state
thread_time_in_state.textproto thread_time_in_state.sql thread_time_in_state.out
+
+# Initial display state
+initial_display_state.textproto initial_display_state.sql initial_display_state.out
diff --git a/test/trace_processor/initial_display_state.out b/test/trace_processor/initial_display_state.out
new file mode 100644
index 0000000..a3a19b0
--- /dev/null
+++ b/test/trace_processor/initial_display_state.out
@@ -0,0 +1,3 @@
+"name","ts","value"
+"ScreenState",1,2.000000
+"ScreenState",1000,0.000000
diff --git a/test/trace_processor/initial_display_state.sql b/test/trace_processor/initial_display_state.sql
new file mode 100644
index 0000000..bec5a87
--- /dev/null
+++ b/test/trace_processor/initial_display_state.sql
@@ -0,0 +1,6 @@
+SELECT t.name,
+ c.ts,
+ c.value
+FROM counter_track t
+ JOIN counter c ON t.id = c.track_id
+WHERE t.name = 'ScreenState';
diff --git a/test/trace_processor/initial_display_state.textproto b/test/trace_processor/initial_display_state.textproto
new file mode 100644
index 0000000..31cf253
--- /dev/null
+++ b/test/trace_processor/initial_display_state.textproto
@@ -0,0 +1,19 @@
+packet: {
+ timestamp: 1
+ initial_display_state: {
+ display_state: 2
+ brightness: 0.5
+ }
+}
+packet {
+ ftrace_events {
+ cpu: 0
+ event {
+ timestamp: 1000
+ pid: 1234
+ print {
+ buf: "C|5678|ScreenState|0\n"
+ }
+ }
+ }
+}