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

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

Issue 1012853003: Add DisplayScheduler for Surfaces (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: change Browser references to root surfce Created 5 years, 7 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/surfaces/BUILD.gn » ('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 800 matching lines...) Expand 10 before | Expand all | Expand 10 after
811 return true; 811 return true;
812 812
813 // If the last commit was aborted because of early out (no updates), we should 813 // If the last commit was aborted because of early out (no updates), we should
814 // still want a begin frame in case there is a commit coming again. 814 // still want a begin frame in case there is a commit coming again.
815 if (last_commit_had_no_updates_) 815 if (last_commit_had_no_updates_)
816 return true; 816 return true;
817 817
818 return false; 818 return false;
819 } 819 }
820 820
821 void SchedulerStateMachine::DidSkipBeginImplFrameToReduceLatency() {
822 last_swap_ack_came_after_begin_impl_frame_ = false;
823 }
824
821 void SchedulerStateMachine::OnBeginImplFrame() { 825 void SchedulerStateMachine::OnBeginImplFrame() {
822 begin_impl_frame_state_ = BEGIN_IMPL_FRAME_STATE_BEGIN_FRAME_STARTING; 826 begin_impl_frame_state_ = BEGIN_IMPL_FRAME_STATE_BEGIN_FRAME_STARTING;
823 current_frame_number_++; 827 current_frame_number_++;
824 828
825 last_commit_had_no_updates_ = false; 829 last_commit_had_no_updates_ = false;
826 did_request_swap_in_last_frame_ = false; 830 did_request_swap_in_last_frame_ = false;
827 831
828 // Clear funnels for any actions we perform during the frame. 832 // Clear funnels for any actions we perform during the frame.
829 animate_funnel_ = false; 833 animate_funnel_ = false;
830 send_begin_main_frame_funnel_ = false; 834 send_begin_main_frame_funnel_ = false;
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
875 } else { 879 } else {
876 // The impl thread doesn't have anything it wants to draw and we are just 880 // The impl thread doesn't have anything it wants to draw and we are just
877 // waiting for a new active tree or we are swap throttled. In short we are 881 // waiting for a new active tree or we are swap throttled. In short we are
878 // blocked. 882 // blocked.
879 return BEGIN_IMPL_FRAME_DEADLINE_MODE_LATE; 883 return BEGIN_IMPL_FRAME_DEADLINE_MODE_LATE;
880 } 884 }
881 } 885 }
882 886
883 bool SchedulerStateMachine::ShouldTriggerBeginImplFrameDeadlineImmediately() 887 bool SchedulerStateMachine::ShouldTriggerBeginImplFrameDeadlineImmediately()
884 const { 888 const {
885 // TODO(brianderson): This should take into account multiple commit sources.
886 if (begin_impl_frame_state_ != BEGIN_IMPL_FRAME_STATE_INSIDE_BEGIN_FRAME) 889 if (begin_impl_frame_state_ != BEGIN_IMPL_FRAME_STATE_INSIDE_BEGIN_FRAME)
887 return false; 890 return false;
888 891
889 // If we just forced activation, we should end the deadline right now. 892 // If we just forced activation, we should end the deadline right now.
890 if (PendingActivationsShouldBeForced() && !has_pending_tree_) 893 if (PendingActivationsShouldBeForced() && !has_pending_tree_)
891 return true; 894 return true;
892 895
893 // SwapAck throttle the deadline since we wont draw and swap anyway. 896 // SwapAck throttle the deadline since we wont draw and swap anyway.
894 if (pending_swaps_ >= max_pending_swaps_) 897 if (pending_swaps_ >= max_pending_swaps_)
895 return false; 898 return false;
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
986 pending_swaps_++; 989 pending_swaps_++;
987 DCHECK_LE(pending_swaps_, max_pending_swaps_); 990 DCHECK_LE(pending_swaps_, max_pending_swaps_);
988 991
989 did_perform_swap_in_last_draw_ = true; 992 did_perform_swap_in_last_draw_ = true;
990 last_frame_number_swap_performed_ = current_frame_number_; 993 last_frame_number_swap_performed_ = current_frame_number_;
991 } 994 }
992 995
993 void SchedulerStateMachine::DidSwapBuffersComplete() { 996 void SchedulerStateMachine::DidSwapBuffersComplete() {
994 DCHECK_GT(pending_swaps_, 0); 997 DCHECK_GT(pending_swaps_, 0);
995 pending_swaps_--; 998 pending_swaps_--;
999 last_swap_ack_came_after_begin_impl_frame_ =
1000 begin_impl_frame_state_ != BEGIN_IMPL_FRAME_STATE_IDLE;
996 } 1001 }
997 1002
998 void SchedulerStateMachine::SetImplLatencyTakesPriority( 1003 void SchedulerStateMachine::SetImplLatencyTakesPriority(
999 bool impl_latency_takes_priority) { 1004 bool impl_latency_takes_priority) {
1000 impl_latency_takes_priority_ = impl_latency_takes_priority; 1005 impl_latency_takes_priority_ = impl_latency_takes_priority;
1001 } 1006 }
1002 1007
1003 void SchedulerStateMachine::DidDrawIfPossibleCompleted(DrawResult result) { 1008 void SchedulerStateMachine::DidDrawIfPossibleCompleted(DrawResult result) {
1004 switch (result) { 1009 switch (result) {
1005 case INVALID_RESULT: 1010 case INVALID_RESULT:
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
1138 static_cast<int>(begin_impl_frame_state_), 1143 static_cast<int>(begin_impl_frame_state_),
1139 static_cast<int>(commit_state_), 1144 static_cast<int>(commit_state_),
1140 has_pending_tree_ ? 'T' : 'F', 1145 has_pending_tree_ ? 'T' : 'F',
1141 pending_tree_is_ready_for_activation_ ? 'T' : 'F', 1146 pending_tree_is_ready_for_activation_ ? 'T' : 'F',
1142 active_tree_needs_first_draw_ ? 'T' : 'F', 1147 active_tree_needs_first_draw_ ? 'T' : 'F',
1143 max_pending_swaps_, 1148 max_pending_swaps_,
1144 pending_swaps_); 1149 pending_swaps_);
1145 } 1150 }
1146 1151
1147 } // namespace cc 1152 } // namespace cc
OLDNEW
« no previous file with comments | « cc/scheduler/scheduler_state_machine.h ('k') | cc/surfaces/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698