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; }