| Index: cc/trees/thread_proxy.cc
|
| diff --git a/cc/trees/thread_proxy.cc b/cc/trees/thread_proxy.cc
|
| index a757a82bae40db9b42012094aab6469165b8289b..860144b6151adc3f4adf99f2c3212f164f516cd9 100644
|
| --- a/cc/trees/thread_proxy.cc
|
| +++ b/cc/trees/thread_proxy.cc
|
| @@ -32,11 +32,6 @@ namespace {
|
| // Measured in seconds.
|
| const double kSmoothnessTakesPriorityExpirationDelay = 0.25;
|
|
|
| -const size_t kDurationHistorySize = 60;
|
| -const double kCommitAndActivationDurationEstimationPercentile = 50.0;
|
| -const double kDrawDurationEstimationPercentile = 100.0;
|
| -const int kDrawDurationEstimatePaddingInMicroseconds = 0;
|
| -
|
| class SwapPromiseChecker {
|
| public:
|
| explicit SwapPromiseChecker(cc::LayerTreeHost* layer_tree_host)
|
| @@ -132,9 +127,6 @@ ThreadProxy::CompositorThreadOnly::CompositorThreadOnly(ThreadProxy* proxy)
|
| input_throttled_until_commit(false),
|
| animations_frozen_until_next_draw(false),
|
| renew_tree_priority_pending(false),
|
| - draw_duration_history(kDurationHistorySize),
|
| - begin_main_frame_to_commit_duration_history(kDurationHistorySize),
|
| - commit_to_activate_duration_history(kDurationHistorySize),
|
| weak_factory(proxy) {}
|
|
|
| ThreadProxy::CompositorThreadOnly::~CompositorThreadOnly() {}
|
| @@ -787,7 +779,7 @@ void ThreadProxy::ScheduledActionSendBeginMainFrame() {
|
| impl().begin_main_frame_sent_completion_event->Signal();
|
| impl().begin_main_frame_sent_completion_event = NULL;
|
| }
|
| - impl().begin_main_frame_sent_time = base::TimeTicks::HighResNow();
|
| + impl().timing_history.DidBeginMainFrame();
|
| }
|
|
|
| void ThreadProxy::BeginMainFrame(
|
| @@ -1093,9 +1085,7 @@ void ThreadProxy::ScheduledActionCommit() {
|
|
|
| impl().next_frame_is_newly_committed_frame = true;
|
|
|
| - impl().commit_complete_time = base::TimeTicks::HighResNow();
|
| - impl().begin_main_frame_to_commit_duration_history.InsertSample(
|
| - impl().commit_complete_time - impl().begin_main_frame_sent_time);
|
| + impl().timing_history.DidCommit();
|
|
|
| // SetVisible kicks off the next scheduler action, so this must be last.
|
| impl().scheduler->SetVisible(impl().layer_tree_host_impl->visible());
|
| @@ -1132,7 +1122,7 @@ DrawSwapReadbackResult ThreadProxy::DrawSwapReadbackInternal(
|
| DCHECK(IsImplThread());
|
| DCHECK(impl().layer_tree_host_impl.get());
|
|
|
| - base::TimeTicks start_time = base::TimeTicks::HighResNow();
|
| + impl().timing_history.DidStartDrawing();
|
| base::TimeDelta draw_duration_estimate = DrawDurationEstimate();
|
| base::AutoReset<bool> mark_inside(&impl().inside_draw, true);
|
|
|
| @@ -1242,8 +1232,8 @@ DrawSwapReadbackResult ThreadProxy::DrawSwapReadbackInternal(
|
| if (draw_frame) {
|
| CheckOutputSurfaceStatusOnImplThread();
|
|
|
| - base::TimeDelta draw_duration = base::TimeTicks::HighResNow() - start_time;
|
| - impl().draw_duration_history.InsertSample(draw_duration);
|
| + base::TimeDelta draw_duration = impl().timing_history.DidFinishDrawing();
|
| +
|
| base::TimeDelta draw_duration_overestimate;
|
| base::TimeDelta draw_duration_underestimate;
|
| if (draw_duration > draw_duration_estimate)
|
| @@ -1350,21 +1340,15 @@ void ThreadProxy::DidAnticipatedDrawTimeChange(base::TimeTicks time) {
|
| }
|
|
|
| base::TimeDelta ThreadProxy::DrawDurationEstimate() {
|
| - base::TimeDelta historical_estimate = impl().draw_duration_history.Percentile(
|
| - kDrawDurationEstimationPercentile);
|
| - base::TimeDelta padding = base::TimeDelta::FromMicroseconds(
|
| - kDrawDurationEstimatePaddingInMicroseconds);
|
| - return historical_estimate + padding;
|
| + return impl().timing_history.DrawDurationEstimate();
|
| }
|
|
|
| base::TimeDelta ThreadProxy::BeginMainFrameToCommitDurationEstimate() {
|
| - return impl().begin_main_frame_to_commit_duration_history.Percentile(
|
| - kCommitAndActivationDurationEstimationPercentile);
|
| + return impl().timing_history.BeginMainFrameToCommitDurationEstimate();
|
| }
|
|
|
| base::TimeDelta ThreadProxy::CommitToActivateDurationEstimate() {
|
| - return impl().commit_to_activate_duration_history.Percentile(
|
| - kCommitAndActivationDurationEstimationPercentile);
|
| + return impl().timing_history.CommitToActivateDurationEstimate();
|
| }
|
|
|
| void ThreadProxy::PostBeginImplFrameDeadline(const base::Closure& closure,
|
| @@ -1709,8 +1693,7 @@ void ThreadProxy::DidActivatePendingTree() {
|
|
|
| UpdateBackgroundAnimateTicking();
|
|
|
| - impl().commit_to_activate_duration_history.InsertSample(
|
| - base::TimeTicks::HighResNow() - impl().commit_complete_time);
|
| + impl().timing_history.DidActivatePendingTree();
|
| }
|
|
|
| void ThreadProxy::DidManageTiles() {
|
|
|