Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(125)

Side by Side Diff: cc/scheduler/scheduler.cc

Issue 1349633006: Revert "cc: Don't record first two frames in CompositorTimingHistory" (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « cc/scheduler/compositor_timing_history_unittest.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2011 The Chromium Authors. All rights reserved. 1 // Copyright 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "cc/scheduler/scheduler.h" 5 #include "cc/scheduler/scheduler.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/auto_reset.h" 9 #include "base/auto_reset.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after
271 271
272 void Scheduler::SetupNextBeginFrameIfNeeded() { 272 void Scheduler::SetupNextBeginFrameIfNeeded() {
273 // Never call SetNeedsBeginFrames if the frame source already has the right 273 // Never call SetNeedsBeginFrames if the frame source already has the right
274 // value. 274 // value.
275 if (frame_source_->NeedsBeginFrames() != state_machine_.BeginFrameNeeded()) { 275 if (frame_source_->NeedsBeginFrames() != state_machine_.BeginFrameNeeded()) {
276 if (state_machine_.BeginFrameNeeded()) { 276 if (state_machine_.BeginFrameNeeded()) {
277 // Call SetNeedsBeginFrames(true) as soon as possible. 277 // Call SetNeedsBeginFrames(true) as soon as possible.
278 frame_source_->SetNeedsBeginFrames(true); 278 frame_source_->SetNeedsBeginFrames(true);
279 devtools_instrumentation::NeedsBeginFrameChanged(layer_tree_host_id_, 279 devtools_instrumentation::NeedsBeginFrameChanged(layer_tree_host_id_,
280 true); 280 true);
281 UpdateCompositorTimingHistoryRecordingEnabled();
282 } else if (state_machine_.begin_impl_frame_state() == 281 } else if (state_machine_.begin_impl_frame_state() ==
283 SchedulerStateMachine::BEGIN_IMPL_FRAME_STATE_IDLE) { 282 SchedulerStateMachine::BEGIN_IMPL_FRAME_STATE_IDLE) {
284 // Call SetNeedsBeginFrames(false) in between frames only. 283 // Call SetNeedsBeginFrames(false) in between frames only.
285 frame_source_->SetNeedsBeginFrames(false); 284 frame_source_->SetNeedsBeginFrames(false);
286 client_->SendBeginMainFrameNotExpectedSoon(); 285 client_->SendBeginMainFrameNotExpectedSoon();
287 devtools_instrumentation::NeedsBeginFrameChanged(layer_tree_host_id_, 286 devtools_instrumentation::NeedsBeginFrameChanged(layer_tree_host_id_,
288 false); 287 false);
289 UpdateCompositorTimingHistoryRecordingEnabled();
290 } 288 }
291 } 289 }
292 290
293 PostBeginRetroFrameIfNeeded(); 291 PostBeginRetroFrameIfNeeded();
294 } 292 }
295 293
296 // BeginFrame is the mechanism that tells us that now is a good time to start 294 // BeginFrame is the mechanism that tells us that now is a good time to start
297 // making a frame. Usually this means that user input for the frame is complete. 295 // making a frame. Usually this means that user input for the frame is complete.
298 // If the scheduler is busy, we queue the BeginFrame to be handled later as 296 // If the scheduler is busy, we queue the BeginFrame to be handled later as
299 // a BeginRetroFrame. 297 // a BeginRetroFrame.
(...skipping 434 matching lines...) Expand 10 before | Expand all | Expand 10 after
734 &frame_tracing_enabled); 732 &frame_tracing_enabled);
735 if (frame_tracing_enabled) { 733 if (frame_tracing_enabled) {
736 state->BeginDictionary("frame_source_"); 734 state->BeginDictionary("frame_source_");
737 frame_source_->AsValueInto(state); 735 frame_source_->AsValueInto(state);
738 state->EndDictionary(); 736 state->EndDictionary();
739 } 737 }
740 738
741 state->BeginDictionary("scheduler_state"); 739 state->BeginDictionary("scheduler_state");
742 state->SetDouble("estimated_parent_draw_time_ms", 740 state->SetDouble("estimated_parent_draw_time_ms",
743 estimated_parent_draw_time_.InMillisecondsF()); 741 estimated_parent_draw_time_.InMillisecondsF());
742 state->SetBoolean("last_set_needs_begin_frame_",
743 frame_source_->NeedsBeginFrames());
744 state->SetInteger("begin_retro_frame_args", 744 state->SetInteger("begin_retro_frame_args",
745 static_cast<int>(begin_retro_frame_args_.size())); 745 static_cast<int>(begin_retro_frame_args_.size()));
746 state->SetBoolean("begin_retro_frame_task", 746 state->SetBoolean("begin_retro_frame_task",
747 !begin_retro_frame_task_.IsCancelled()); 747 !begin_retro_frame_task_.IsCancelled());
748 state->SetBoolean("begin_impl_frame_deadline_task", 748 state->SetBoolean("begin_impl_frame_deadline_task",
749 !begin_impl_frame_deadline_task_.IsCancelled()); 749 !begin_impl_frame_deadline_task_.IsCancelled());
750 state->SetString("inside_action", 750 state->SetString("inside_action",
751 SchedulerStateMachine::ActionToString(inside_action_)); 751 SchedulerStateMachine::ActionToString(inside_action_));
752 752
753 state->BeginDictionary("begin_impl_frame_args"); 753 state->BeginDictionary("begin_impl_frame_args");
754 begin_impl_frame_tracker_.AsValueInto(now, state); 754 begin_impl_frame_tracker_.AsValueInto(now, state);
755 state->EndDictionary(); 755 state->EndDictionary();
756 756
757 state->SetString("begin_impl_frame_deadline_mode_", 757 state->SetString("begin_impl_frame_deadline_mode_",
758 SchedulerStateMachine::BeginImplFrameDeadlineModeToString( 758 SchedulerStateMachine::BeginImplFrameDeadlineModeToString(
759 begin_impl_frame_deadline_mode_)); 759 begin_impl_frame_deadline_mode_));
760 state->EndDictionary(); 760 state->EndDictionary();
761 761
762 state->BeginDictionary("compositor_timing_history"); 762 state->BeginDictionary("compositor_timing_history");
763 compositor_timing_history_->AsValueInto(state); 763 compositor_timing_history_->AsValueInto(state);
764 state->EndDictionary(); 764 state->EndDictionary();
765 } 765 }
766 766
767 void Scheduler::UpdateCompositorTimingHistoryRecordingEnabled() { 767 void Scheduler::UpdateCompositorTimingHistoryRecordingEnabled() {
768 compositor_timing_history_->SetRecordingEnabled( 768 compositor_timing_history_->SetRecordingEnabled(
769 state_machine_.HasInitializedOutputSurface() && 769 state_machine_.HasInitializedOutputSurface() && state_machine_.visible());
770 state_machine_.visible() && frame_source_->NeedsBeginFrames());
771 } 770 }
772 771
773 bool Scheduler::ShouldRecoverMainLatency(const BeginFrameArgs& args) const { 772 bool Scheduler::ShouldRecoverMainLatency(const BeginFrameArgs& args) const {
774 DCHECK(!settings_.using_synchronous_renderer_compositor); 773 DCHECK(!settings_.using_synchronous_renderer_compositor);
775 774
776 if (!state_machine_.main_thread_missed_last_deadline()) 775 if (!state_machine_.main_thread_missed_last_deadline())
777 return false; 776 return false;
778 777
779 // When prioritizing impl thread latency, we currently put the 778 // When prioritizing impl thread latency, we currently put the
780 // main thread in a high latency mode. Don't try to fight it. 779 // main thread in a high latency mode. Don't try to fight it.
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
833 } 832 }
834 833
835 bool Scheduler::IsBeginMainFrameSentOrStarted() const { 834 bool Scheduler::IsBeginMainFrameSentOrStarted() const {
836 return (state_machine_.begin_main_frame_state() == 835 return (state_machine_.begin_main_frame_state() ==
837 SchedulerStateMachine::BEGIN_MAIN_FRAME_STATE_SENT || 836 SchedulerStateMachine::BEGIN_MAIN_FRAME_STATE_SENT ||
838 state_machine_.begin_main_frame_state() == 837 state_machine_.begin_main_frame_state() ==
839 SchedulerStateMachine::BEGIN_MAIN_FRAME_STATE_STARTED); 838 SchedulerStateMachine::BEGIN_MAIN_FRAME_STATE_STARTED);
840 } 839 }
841 840
842 } // namespace cc 841 } // namespace cc
OLDNEW
« no previous file with comments | « cc/scheduler/compositor_timing_history_unittest.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698