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

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

Issue 1435133004: cc: Clean up max frames/swaps pending usage. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 5 years, 1 month 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"
11 #include "base/trace_event/trace_event_argument.h" 11 #include "base/trace_event/trace_event_argument.h"
12 #include "base/values.h" 12 #include "base/values.h"
13 13
14 namespace cc { 14 namespace cc {
15 15
16 namespace {
17 // Surfaces and CompositorTimingHistory don't support more than 1 pending swap.
18 const int kMaxPendingSwaps = 1;
19 } // namespace
20
16 SchedulerStateMachine::SchedulerStateMachine(const SchedulerSettings& settings) 21 SchedulerStateMachine::SchedulerStateMachine(const SchedulerSettings& settings)
17 : settings_(settings), 22 : settings_(settings),
18 output_surface_state_(OUTPUT_SURFACE_NONE), 23 output_surface_state_(OUTPUT_SURFACE_NONE),
19 begin_impl_frame_state_(BEGIN_IMPL_FRAME_STATE_IDLE), 24 begin_impl_frame_state_(BEGIN_IMPL_FRAME_STATE_IDLE),
20 begin_main_frame_state_(BEGIN_MAIN_FRAME_STATE_IDLE), 25 begin_main_frame_state_(BEGIN_MAIN_FRAME_STATE_IDLE),
21 forced_redraw_state_(FORCED_REDRAW_STATE_IDLE), 26 forced_redraw_state_(FORCED_REDRAW_STATE_IDLE),
22 commit_count_(0), 27 commit_count_(0),
23 current_frame_number_(0), 28 current_frame_number_(0),
24 last_frame_number_animate_performed_(-1), 29 last_frame_number_animate_performed_(-1),
25 last_frame_number_swap_performed_(-1), 30 last_frame_number_swap_performed_(-1),
26 last_frame_number_swap_requested_(-1), 31 last_frame_number_swap_requested_(-1),
27 last_frame_number_begin_main_frame_sent_(-1), 32 last_frame_number_begin_main_frame_sent_(-1),
28 last_frame_number_invalidate_output_surface_performed_(-1), 33 last_frame_number_invalidate_output_surface_performed_(-1),
29 animate_funnel_(false), 34 animate_funnel_(false),
30 request_swap_funnel_(false), 35 request_swap_funnel_(false),
31 send_begin_main_frame_funnel_(true), 36 send_begin_main_frame_funnel_(true),
32 invalidate_output_surface_funnel_(false), 37 invalidate_output_surface_funnel_(false),
33 prepare_tiles_funnel_(0), 38 prepare_tiles_funnel_(0),
34 consecutive_checkerboard_animations_(0), 39 consecutive_checkerboard_animations_(0),
35 max_pending_swaps_(1),
36 pending_swaps_(0), 40 pending_swaps_(0),
37 swaps_with_current_output_surface_(0), 41 swaps_with_current_output_surface_(0),
38 needs_redraw_(false), 42 needs_redraw_(false),
39 needs_animate_(false), 43 needs_animate_(false),
40 needs_prepare_tiles_(false), 44 needs_prepare_tiles_(false),
41 needs_begin_main_frame_(false), 45 needs_begin_main_frame_(false),
42 needs_one_begin_impl_frame_(false), 46 needs_one_begin_impl_frame_(false),
43 visible_(false), 47 visible_(false),
44 resourceless_draw_(false), 48 resourceless_draw_(false),
45 can_draw_(false), 49 can_draw_(false),
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after
210 last_frame_number_begin_main_frame_sent_); 214 last_frame_number_begin_main_frame_sent_);
211 state->SetBoolean("funnel: animate_funnel", animate_funnel_); 215 state->SetBoolean("funnel: animate_funnel", animate_funnel_);
212 state->SetBoolean("funnel: request_swap_funnel", request_swap_funnel_); 216 state->SetBoolean("funnel: request_swap_funnel", request_swap_funnel_);
213 state->SetBoolean("funnel: send_begin_main_frame_funnel", 217 state->SetBoolean("funnel: send_begin_main_frame_funnel",
214 send_begin_main_frame_funnel_); 218 send_begin_main_frame_funnel_);
215 state->SetInteger("funnel: prepare_tiles_funnel", prepare_tiles_funnel_); 219 state->SetInteger("funnel: prepare_tiles_funnel", prepare_tiles_funnel_);
216 state->SetBoolean("funnel: invalidate_output_surface_funnel", 220 state->SetBoolean("funnel: invalidate_output_surface_funnel",
217 invalidate_output_surface_funnel_); 221 invalidate_output_surface_funnel_);
218 state->SetInteger("consecutive_checkerboard_animations", 222 state->SetInteger("consecutive_checkerboard_animations",
219 consecutive_checkerboard_animations_); 223 consecutive_checkerboard_animations_);
220 state->SetInteger("max_pending_swaps_", max_pending_swaps_);
221 state->SetInteger("pending_swaps_", pending_swaps_); 224 state->SetInteger("pending_swaps_", pending_swaps_);
222 state->SetInteger("swaps_with_current_output_surface", 225 state->SetInteger("swaps_with_current_output_surface",
223 swaps_with_current_output_surface_); 226 swaps_with_current_output_surface_);
224 state->SetBoolean("needs_redraw", needs_redraw_); 227 state->SetBoolean("needs_redraw", needs_redraw_);
225 state->SetBoolean("needs_animate_", needs_animate_); 228 state->SetBoolean("needs_animate_", needs_animate_);
226 state->SetBoolean("needs_prepare_tiles", needs_prepare_tiles_); 229 state->SetBoolean("needs_prepare_tiles", needs_prepare_tiles_);
227 state->SetBoolean("needs_begin_main_frame", needs_begin_main_frame_); 230 state->SetBoolean("needs_begin_main_frame", needs_begin_main_frame_);
228 state->SetBoolean("needs_one_begin_impl_frame", needs_one_begin_impl_frame_); 231 state->SetBoolean("needs_one_begin_impl_frame", needs_one_begin_impl_frame_);
229 state->SetBoolean("visible", visible_); 232 state->SetBoolean("visible", visible_);
230 state->SetBoolean("can_draw", can_draw_); 233 state->SetBoolean("can_draw", can_draw_);
(...skipping 674 matching lines...) Expand 10 before | Expand all | Expand 10 after
905 return true; 908 return true;
906 909
907 return false; 910 return false;
908 } 911 }
909 912
910 bool SchedulerStateMachine::main_thread_missed_last_deadline() const { 913 bool SchedulerStateMachine::main_thread_missed_last_deadline() const {
911 return main_thread_missed_last_deadline_; 914 return main_thread_missed_last_deadline_;
912 } 915 }
913 916
914 bool SchedulerStateMachine::SwapThrottled() const { 917 bool SchedulerStateMachine::SwapThrottled() const {
915 return pending_swaps_ >= max_pending_swaps_; 918 return pending_swaps_ >= kMaxPendingSwaps;
916 } 919 }
917 920
918 void SchedulerStateMachine::SetVisible(bool visible) { 921 void SchedulerStateMachine::SetVisible(bool visible) {
919 if (visible_ == visible) 922 if (visible_ == visible)
920 return; 923 return;
921 924
922 visible_ = visible; 925 visible_ = visible;
923 926
924 if (visible) 927 if (visible)
925 main_thread_missed_last_deadline_ = false; 928 main_thread_missed_last_deadline_ = false;
(...skipping 24 matching lines...) Expand all
950 has_pending_tree_; 953 has_pending_tree_;
951 return has_impl_updates && !main_updates_expected; 954 return has_impl_updates && !main_updates_expected;
952 } 955 }
953 956
954 void SchedulerStateMachine::SetNeedsPrepareTiles() { 957 void SchedulerStateMachine::SetNeedsPrepareTiles() {
955 if (!needs_prepare_tiles_) { 958 if (!needs_prepare_tiles_) {
956 TRACE_EVENT0("cc", "SchedulerStateMachine::SetNeedsPrepareTiles"); 959 TRACE_EVENT0("cc", "SchedulerStateMachine::SetNeedsPrepareTiles");
957 needs_prepare_tiles_ = true; 960 needs_prepare_tiles_ = true;
958 } 961 }
959 } 962 }
960
961 void SchedulerStateMachine::SetMaxSwapsPending(int max) {
962 max_pending_swaps_ = max;
963 }
964
965 void SchedulerStateMachine::DidSwapBuffers() { 963 void SchedulerStateMachine::DidSwapBuffers() {
966 TRACE_EVENT_ASYNC_BEGIN0("cc", "Scheduler:pending_swaps", this); 964 TRACE_EVENT_ASYNC_BEGIN0("cc", "Scheduler:pending_swaps", this);
967 pending_swaps_++; 965 pending_swaps_++;
968 swaps_with_current_output_surface_++; 966 swaps_with_current_output_surface_++;
969 967
970 DCHECK_LE(pending_swaps_, max_pending_swaps_); 968 DCHECK_LE(pending_swaps_, kMaxPendingSwaps);
971 969
972 did_perform_swap_in_last_draw_ = true; 970 did_perform_swap_in_last_draw_ = true;
973 last_frame_number_swap_performed_ = current_frame_number_; 971 last_frame_number_swap_performed_ = current_frame_number_;
974 } 972 }
975 973
976 void SchedulerStateMachine::DidSwapBuffersComplete() { 974 void SchedulerStateMachine::DidSwapBuffersComplete() {
977 TRACE_EVENT_ASYNC_END0("cc", "Scheduler:pending_swaps", this); 975 TRACE_EVENT_ASYNC_END0("cc", "Scheduler:pending_swaps", this);
978 pending_swaps_--; 976 pending_swaps_--;
979 } 977 }
980 978
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
1114 case OUTPUT_SURFACE_ACTIVE: 1112 case OUTPUT_SURFACE_ACTIVE:
1115 case OUTPUT_SURFACE_WAITING_FOR_FIRST_COMMIT: 1113 case OUTPUT_SURFACE_WAITING_FOR_FIRST_COMMIT:
1116 case OUTPUT_SURFACE_WAITING_FOR_FIRST_ACTIVATION: 1114 case OUTPUT_SURFACE_WAITING_FOR_FIRST_ACTIVATION:
1117 return true; 1115 return true;
1118 } 1116 }
1119 NOTREACHED(); 1117 NOTREACHED();
1120 return false; 1118 return false;
1121 } 1119 }
1122 1120
1123 } // namespace cc 1121 } // 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