Commit 7e36928e authored by yiyix's avatar yiyix Committed by Commit Bot

graphic metrics: add metrics to measure BeginFrame travel time

Add metrics to measure the amount of time it takes for the BeginFrame
to travel to the Client from the DisplayCompositor.

Bug:814909

related design doc:
https://docs.google.com/document/d/1XIaAPkajbML0s0neajasWzvt856dUjF_1zAWO5KykCQ/edit

Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel;master.tryserver.blink:linux_trusty_blink_rel
Change-Id: I6a13b5fcdbfc458e2d2dc84312e2e37459c11ac4
Reviewed-on: https://chromium-review.googlesource.com/1146337
Commit-Queue: Yi Xu <yiyix@chromium.org>
Reviewed-by: default avatarMark Pearson <mpearson@chromium.org>
Reviewed-by: default avatarFady Samuel <fsamuel@chromium.org>
Reviewed-by: default avatarSadrul Chowdhury <sadrul@chromium.org>
Cr-Commit-Position: refs/heads/master@{#579313}
parent 91629b37
...@@ -7,7 +7,9 @@ ...@@ -7,7 +7,9 @@
#include <utility> #include <utility>
#include "base/bind.h" #include "base/bind.h"
#include "base/metrics/histogram_macros.h"
#include "base/trace_event/trace_event.h" #include "base/trace_event/trace_event.h"
#include "cc/base/histograms.h"
#include "cc/trees/layer_tree_frame_sink_client.h" #include "cc/trees/layer_tree_frame_sink_client.h"
#include "components/viz/client/hit_test_data_provider.h" #include "components/viz/client/hit_test_data_provider.h"
#include "components/viz/client/local_surface_id_provider.h" #include "components/viz/client/local_surface_id_provider.h"
...@@ -207,6 +209,16 @@ void AsyncLayerTreeFrameSink::DidPresentCompositorFrame( ...@@ -207,6 +209,16 @@ void AsyncLayerTreeFrameSink::DidPresentCompositorFrame(
} }
void AsyncLayerTreeFrameSink::OnBeginFrame(const viz::BeginFrameArgs& args) { void AsyncLayerTreeFrameSink::OnBeginFrame(const viz::BeginFrameArgs& args) {
// Note that client_name is constant during the lifetime of the process and
// it's either "Browser" or "Renderer".
if (const char* client_name = GetClientNameForMetrics()) {
base::TimeDelta frame_difference = base::TimeTicks::Now() - args.frame_time;
UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES(
base::StringPrintf("GraphicsPipeline.%s.ReceivedBeginFrame",
client_name),
frame_difference, base::TimeDelta::FromMicroseconds(1),
base::TimeDelta::FromMilliseconds(100), 50);
}
if (!needs_begin_frames_) { if (!needs_begin_frames_) {
TRACE_EVENT_WITH_FLOW1("viz,benchmark", "Graphics.Pipeline", TRACE_EVENT_WITH_FLOW1("viz,benchmark", "Graphics.Pipeline",
TRACE_ID_GLOBAL(args.trace_id), TRACE_ID_GLOBAL(args.trace_id),
......
...@@ -33529,6 +33529,18 @@ uploading your change for review. ...@@ -33529,6 +33529,18 @@ uploading your change for review.
</summary> </summary>
</histogram> </histogram>
<histogram name="GraphicsPipeline.ReceivedBeginFrame" units="microseconds">
<owner>yiyix@chromium.org</owner>
<owner>chrome-gpu-metrics@google.com</owner>
<summary>
The amount of time it takes for the BeginFrame to travel to the Client from
the DisplayCompositor.
Note that this metrics is only recorded on clients on which a
high-resolution clock is available
</summary>
</histogram>
<histogram name="Hardware.Display.Count.OnChange"> <histogram name="Hardware.Display.Count.OnChange">
<owner>erikchen@chromium.org</owner> <owner>erikchen@chromium.org</owner>
<summary> <summary>
...@@ -119094,6 +119106,12 @@ uploading your change for review. ...@@ -119094,6 +119106,12 @@ uploading your change for review.
<affected-histogram name="GPU.BlacklistFeatureTestResultsWindows2"/> <affected-histogram name="GPU.BlacklistFeatureTestResultsWindows2"/>
</histogram_suffixes> </histogram_suffixes>
<histogram_suffixes name="GraphicsPipeline" separator="." ordering="prefix">
<suffix name="Browser" label="for browser process."/>
<suffix name="Renderer" label="for renderer process."/>
<affected-histogram name="GraphicsPipeline.ReceivedBeginFrame"/>
</histogram_suffixes>
<histogram_suffixes name="GWSChromeJointExperiment" separator="_"> <histogram_suffixes name="GWSChromeJointExperiment" separator="_">
<suffix name="Experiment1" <suffix name="Experiment1"
label="Only page loads that are a result of a navigation from a web label="Only page loads that are a result of a navigation from a web
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment