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

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

Issue 988693005: Chromium roll (https://codereview.chromium.org/976353002) (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: fixed bad android build patch Created 5 years, 9 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/scheduler_state_machine.h ('k') | cc/scheduler/scheduler_unittest.cc » ('j') | 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_state_machine.h" 5 #include "cc/scheduler/scheduler_state_machine.h"
6 6
7 #include "base/format_macros.h" 7 #include "base/format_macros.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "base/strings/stringprintf.h" 9 #include "base/strings/stringprintf.h"
10 #include "base/trace_event/trace_event.h" 10 #include "base/trace_event/trace_event.h"
(...skipping 29 matching lines...) Expand all
40 can_draw_(false), 40 can_draw_(false),
41 has_pending_tree_(false), 41 has_pending_tree_(false),
42 pending_tree_is_ready_for_activation_(false), 42 pending_tree_is_ready_for_activation_(false),
43 active_tree_needs_first_draw_(false), 43 active_tree_needs_first_draw_(false),
44 did_commit_after_animating_(false), 44 did_commit_after_animating_(false),
45 did_create_and_initialize_first_output_surface_(false), 45 did_create_and_initialize_first_output_surface_(false),
46 impl_latency_takes_priority_(false), 46 impl_latency_takes_priority_(false),
47 skip_next_begin_main_frame_to_reduce_latency_(false), 47 skip_next_begin_main_frame_to_reduce_latency_(false),
48 skip_begin_main_frame_to_reduce_latency_(false), 48 skip_begin_main_frame_to_reduce_latency_(false),
49 continuous_painting_(false), 49 continuous_painting_(false),
50 impl_latency_takes_priority_on_battery_(false),
51 children_need_begin_frames_(false), 50 children_need_begin_frames_(false),
52 defer_commits_(false) { 51 defer_commits_(false) {
53 } 52 }
54 53
55 const char* SchedulerStateMachine::OutputSurfaceStateToString( 54 const char* SchedulerStateMachine::OutputSurfaceStateToString(
56 OutputSurfaceState state) { 55 OutputSurfaceState state) {
57 switch (state) { 56 switch (state) {
58 case OUTPUT_SURFACE_ACTIVE: 57 case OUTPUT_SURFACE_ACTIVE:
59 return "OUTPUT_SURFACE_ACTIVE"; 58 return "OUTPUT_SURFACE_ACTIVE";
60 case OUTPUT_SURFACE_LOST: 59 case OUTPUT_SURFACE_LOST:
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
229 did_create_and_initialize_first_output_surface_); 228 did_create_and_initialize_first_output_surface_);
230 state->SetBoolean("impl_latency_takes_priority", 229 state->SetBoolean("impl_latency_takes_priority",
231 impl_latency_takes_priority_); 230 impl_latency_takes_priority_);
232 state->SetBoolean("main_thread_is_in_high_latency_mode", 231 state->SetBoolean("main_thread_is_in_high_latency_mode",
233 MainThreadIsInHighLatencyMode()); 232 MainThreadIsInHighLatencyMode());
234 state->SetBoolean("skip_begin_main_frame_to_reduce_latency", 233 state->SetBoolean("skip_begin_main_frame_to_reduce_latency",
235 skip_begin_main_frame_to_reduce_latency_); 234 skip_begin_main_frame_to_reduce_latency_);
236 state->SetBoolean("skip_next_begin_main_frame_to_reduce_latency", 235 state->SetBoolean("skip_next_begin_main_frame_to_reduce_latency",
237 skip_next_begin_main_frame_to_reduce_latency_); 236 skip_next_begin_main_frame_to_reduce_latency_);
238 state->SetBoolean("continuous_painting", continuous_painting_); 237 state->SetBoolean("continuous_painting", continuous_painting_);
239 state->SetBoolean("impl_latency_takes_priority_on_battery",
240 impl_latency_takes_priority_on_battery_);
241 state->SetBoolean("children_need_begin_frames", children_need_begin_frames_); 238 state->SetBoolean("children_need_begin_frames", children_need_begin_frames_);
242 state->SetBoolean("defer_commits", defer_commits_); 239 state->SetBoolean("defer_commits", defer_commits_);
243 state->EndDictionary(); 240 state->EndDictionary();
244 } 241 }
245 242
246 void SchedulerStateMachine::AdvanceCurrentFrameNumber() { 243 void SchedulerStateMachine::AdvanceCurrentFrameNumber() {
247 current_frame_number_++; 244 current_frame_number_++;
248 245
249 // "Drain" the PrepareTiles funnel. 246 // "Drain" the PrepareTiles funnel.
250 if (prepare_tiles_funnel_ > 0) 247 if (prepare_tiles_funnel_ > 0)
(...skipping 645 matching lines...) Expand 10 before | Expand all | Expand 10 after
896 // don't have a pending tree -- otherwise we should give it a chance to 893 // don't have a pending tree -- otherwise we should give it a chance to
897 // activate. 894 // activate.
898 // TODO(skyostil): Revisit this when we have more accurate deadline estimates. 895 // TODO(skyostil): Revisit this when we have more accurate deadline estimates.
899 if (commit_state_ == COMMIT_STATE_IDLE && !has_pending_tree_) 896 if (commit_state_ == COMMIT_STATE_IDLE && !has_pending_tree_)
900 return true; 897 return true;
901 898
902 // Prioritize impl-thread draws in impl_latency_takes_priority_ mode. 899 // Prioritize impl-thread draws in impl_latency_takes_priority_ mode.
903 if (impl_latency_takes_priority_) 900 if (impl_latency_takes_priority_)
904 return true; 901 return true;
905 902
906 // If we are on battery power and want to prioritize impl latency because
907 // we don't trust deadline tasks to execute at the right time.
908 if (impl_latency_takes_priority_on_battery_)
909 return true;
910
911 return false; 903 return false;
912 } 904 }
913 905
914 bool SchedulerStateMachine::MainThreadIsInHighLatencyMode() const { 906 bool SchedulerStateMachine::MainThreadIsInHighLatencyMode() const {
915 // If a commit is pending before the previous commit has been drawn, we 907 // If a commit is pending before the previous commit has been drawn, we
916 // are definitely in a high latency mode. 908 // are definitely in a high latency mode.
917 if (CommitPending() && (active_tree_needs_first_draw_ || has_pending_tree_)) 909 if (CommitPending() && (active_tree_needs_first_draw_ || has_pending_tree_))
918 return true; 910 return true;
919 911
920 // If we just sent a BeginMainFrame and haven't hit the deadline yet, the main 912 // If we just sent a BeginMainFrame and haven't hit the deadline yet, the main
(...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after
1132 static_cast<int>(begin_impl_frame_state_), 1124 static_cast<int>(begin_impl_frame_state_),
1133 static_cast<int>(commit_state_), 1125 static_cast<int>(commit_state_),
1134 has_pending_tree_ ? 'T' : 'F', 1126 has_pending_tree_ ? 'T' : 'F',
1135 pending_tree_is_ready_for_activation_ ? 'T' : 'F', 1127 pending_tree_is_ready_for_activation_ ? 'T' : 'F',
1136 active_tree_needs_first_draw_ ? 'T' : 'F', 1128 active_tree_needs_first_draw_ ? 'T' : 'F',
1137 max_pending_swaps_, 1129 max_pending_swaps_,
1138 pending_swaps_); 1130 pending_swaps_);
1139 } 1131 }
1140 1132
1141 } // namespace cc 1133 } // namespace cc
OLDNEW
« no previous file with comments | « cc/scheduler/scheduler_state_machine.h ('k') | cc/scheduler/scheduler_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698