blob: 4907508b4ac52372bdf03784d3b16b8f0ce91da5 [file] [log] [blame]
// dot -Tpdf ui/latency/latency_info.dot > latency_info.pdf
digraph LatencyInfo {
node[shape=box];
// Set shape and label of metric names.
{
node[style="dotted,rounded"];
"Event.Latency.EventToRender.TouchpadPinch";
end_to_end_metrics
[label="\
Event.Latency.EndToEnd.KeyPress\n\
Event.Latency.EndToEnd.Mouse\n\
Event.Latency.EndToEnd.TouchpadPinch\n"];
scroll_to_gpu_swap_metrics
[label="\
Event.Latency.<scroll_name>.TimeToScrollUpdateSwapBegin2\n\
Event.Latency.<scroll_name>.<input_modality>.TimeToScrollUpdateSwapBegin4\n\
UKM: Event.<scroll_name>.<input_modality>.TimeToScrollUpdateSwapBegin\n"]
scroll_to_schedule_metrics
[label="\
Event.Latency.<scroll_name>.<input_modality>.TimeToHandled2_<thread_name>\n\
Event.Latency.Scroll.Wheel.TimeToHandled2_<thread_name>\n\
UKM: Event.<scroll_name>.<input_modality>.TimeToHandled\n"];
"Event.Latency.<scroll_name>.<input_modality>.HandledToRendererSwap2_<thread_name>";
"Event.Latency.<scroll_name>.<input_modality>.RendererSwapToBrowserNotified2";
"Event.Latency.<scroll_name>.<input_modality>.BrowserNotifiedToBeforeGpuSwap2";
"Event.Latency.<scroll_name>.<input_modality>.GpuSwap2";
}
// Set labels for nodes with multiple components.
scroll_original
[label="\
INPUT_EVENT_LATENCY_FIRST_SCROLL_UPDATE_ORIGINAL_COMPONENT\n\
INPUT_EVENT_LATENCY_SCROLL_UPDATE_ORIGINAL_COMPONENT"];
rendering_scheduled
[label="\
INPUT_EVENT_LATENCY_RENDERING_SCHEDULED_MAIN_COMPONENT\n\
INPUT_EVENT_LATENCY_RENDERING_SCHEDULED_IMPL_COMPONENT"];
// Layout "original" components at the top.
{
rank=same;
edge[style=dotted,minlen=8];
INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT->
scroll_original;
}
// Layout the rest of the components.
INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT->
"Event.Latency.EventToRender.TouchpadPinch"->
INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT
[weight=3];
INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT->
end_to_end_metrics->
INPUT_EVENT_GPU_SWAP_BUFFER_COMPONENT;
scroll_original->
scroll_to_gpu_swap_metrics->
INPUT_EVENT_GPU_SWAP_BUFFER_COMPONENT;
scroll_original->
scroll_to_schedule_metrics->
rendering_scheduled;
rendering_scheduled->
"Event.Latency.<scroll_name>.<input_modality>.HandledToRendererSwap2_<thread_name>"->
INPUT_EVENT_LATENCY_RENDERER_SWAP_COMPONENT->
"Event.Latency.<scroll_name>.<input_modality>.RendererSwapToBrowserNotified2"->
DISPLAY_COMPOSITOR_RECEIVED_FRAME_COMPONENT->
"Event.Latency.<scroll_name>.<input_modality>.BrowserNotifiedToBeforeGpuSwap2"->
INPUT_EVENT_GPU_SWAP_BUFFER_COMPONENT->
"Event.Latency.<scroll_name>.<input_modality>.GpuSwap2"->
INPUT_EVENT_LATENCY_FRAME_SWAP_COMPONENT
[weight=4];
// Add legend and position it under INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT.
legend
[shape=plaintext,label="\
LEGEND:\l\
<default_action_status> = (DefaultPrevented | DefaultAllowed)\l\
<input_modality> = (Wheel | Touch)\l\
<scroll_name> = (ScrollBegin | ScrollUpdate)\l\
<thread_name> = (Main | Impl)\l"];
INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT->
legend
[style=invis,minlen=7];
}