blob: cf3809dbaacc66afe22a14108f39d47a644e2dd8 [file] [log] [blame]
syntax = "proto2";
package perfetto.protos;
import "protos/perfetto/metrics/metrics.proto";
import "protos/perfetto/metrics/android/hwui_metric.proto";
// Android HWUI graphics performance and graphics memory usage metrics augmented with
// perf data which is specific to the Skottie player. Skottie app has an additional
// render thread named "SkottieAnimator" in the traces. Perf metrics are filtered for
// 'org.skia.skottie' process only.
message ProcessRenderInfoEx {
// original HWUI metric as defined by built-in perfetto proto.
optional ProcessRenderInfo hwui_process_info = 1;
// Number of times the Skottie GL thread rendered a frame and max/min/avg time for Skottie GL
// renderer to finish rendering in
// in nanoseconds. These values have 0 value for lottie player, because it does it renders only
// in RenderThread.
optional uint32 skottie_animator_count = 2;
optional int64 skottie_animator_max = 3;
optional int64 skottie_animator_min = 4;
optional double skottie_animator_avg = 5;
optional uint32 dequeue_buffer_count = 6;
optional int64 dequeue_buffer_max = 7;
optional int64 dequeue_buffer_min = 8;
optional double dequeue_buffer_avg = 9;
// The following 2 fields are useful to compare render thread performance between Lottie and
// Skottie players.
// Skottie metric is a sum of the time on RenderThread and SkottieAnimator threads, while Lottie
// is only the time on RenderThread.
optional double render_time_avg = 10; // draw_frame_avg + skottie_animator_avg
// "render_time_avg_no_dequeue" tries to compensate the time spent to wait for a new buffer.
// It equals draw_frame_avg + skottie_animator_avg - dequeue_buffer_avg.
optional double render_time_avg_no_dequeue = 11;
optional int64 ui_thread_cpu_time = 12; // CPU time spent on UI thread in nanoseconds
optional int64 rt_thread_cpu_time = 13; // CPU time spent on RenderThread in nanoseconds
optional int64 hwui_tasks_cpu_time = 14; // CPU time spent on hwuiTask0/1 threads in nanoseconds
optional int64 skottie_animator_cpu_time = 15; // CPU time spent on SkottieAnimator in ns
optional int64 total_cpu_time = 16; // Total CPU time in nanoseconds. Equals
// ui_thread_cpu_time + rt_thread_cpu_time + skottie_animator_cpu_time + hwui_tasks_cpu_time
optional int64 total_gpu_time = 17; // GPU time spent to render all content in nanoseconds.
// This one number is the "ultimate" benchmark to compare airbnb lottie vs skottie player.
// performance. It is the total time for any rendering related work on CPU and GPU combined.
optional int64 total_time = 18; // This is total_cpu_time + total_gpu_time in nanoseconds.
// time between setSurface and second DrawFrame tag.
optional int64 startup_time = 19;
}
message SkottieMetric {
repeated ProcessRenderInfoEx process_info = 1;
}
extend TraceMetrics {
optional SkottieMetric skottie_metric = 460;
}