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

Unified Diff: cc/scheduler/scheduler.cc

Issue 23503003: cc: Add readback and forced draw states to the Scheduler (Closed) Base URL: http://git.chromium.org/chromium/src.git@schedReorg3
Patch Set: Fix all the tests Created 7 years, 4 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 side-by-side diff with in-line comments
Download patch
Index: cc/scheduler/scheduler.cc
diff --git a/cc/scheduler/scheduler.cc b/cc/scheduler/scheduler.cc
index e383894a7836f9164ceb6cb14e647ce929837622..ecb47a182ceb7b4f757b6b6860b75a7d00a3b515 100644
--- a/cc/scheduler/scheduler.cc
+++ b/cc/scheduler/scheduler.cc
@@ -54,9 +54,9 @@ void Scheduler::SetNeedsCommit() {
ProcessScheduledActions();
}
-void Scheduler::SetNeedsForcedCommit() {
+void Scheduler::SetNeedsForcedCommitForReadback() {
state_machine_.SetNeedsCommit();
- state_machine_.SetNeedsForcedCommit();
+ state_machine_.SetNeedsForcedCommitForReadback();
ProcessScheduledActions();
}
@@ -70,11 +70,6 @@ void Scheduler::DidSwapUseIncompleteTile() {
ProcessScheduledActions();
}
-void Scheduler::SetNeedsForcedRedraw() {
- state_machine_.SetNeedsForcedRedraw();
- ProcessScheduledActions();
-}
-
void Scheduler::SetMainThreadNeedsLayerTextures() {
state_machine_.SetMainThreadNeedsLayerTextures();
ProcessScheduledActions();
@@ -178,7 +173,7 @@ void Scheduler::BeginFrame(const BeginFrameArgs& args) {
}
void Scheduler::DrawAndSwapIfPossible() {
- ScheduledActionDrawAndSwapResult result =
+ DrawSwapReadbackResult result =
client_->ScheduledActionDrawAndSwapIfPossible();
state_machine_.DidDrawIfPossibleCompleted(result.did_draw);
if (result.did_swap)
@@ -186,8 +181,7 @@ void Scheduler::DrawAndSwapIfPossible() {
}
void Scheduler::DrawAndSwapForced() {
- ScheduledActionDrawAndSwapResult result =
- client_->ScheduledActionDrawAndSwapForced();
+ DrawSwapReadbackResult result = client_->ScheduledActionDrawAndSwapForced();
if (result.did_swap)
has_pending_begin_frame_ = false;
}
@@ -202,6 +196,7 @@ void Scheduler::ProcessScheduledActions() {
SchedulerStateMachine::Action action;
do {
+ state_machine_.CheckInvariants();
action = state_machine_.NextAction();
TRACE_EVENT1(TRACE_DISABLED_BY_DEFAULT("cc.debug.scheduler"),
"SchedulerStateMachine",
@@ -223,16 +218,19 @@ void Scheduler::ProcessScheduledActions() {
case SchedulerStateMachine::ACTION_ACTIVATE_PENDING_TREE:
client_->ScheduledActionActivatePendingTree();
break;
- case SchedulerStateMachine::ACTION_DRAW_IF_POSSIBLE:
+ case SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE:
DrawAndSwapIfPossible();
break;
- case SchedulerStateMachine::ACTION_DRAW_FORCED:
+ case SchedulerStateMachine::ACTION_DRAW_AND_SWAP_FORCED:
DrawAndSwapForced();
break;
case SchedulerStateMachine::ACTION_DRAW_AND_SWAP_ABORT:
// No action is actually performed, but this allows the state machine to
// advance out of its waiting to draw state without actually drawing.
break;
+ case SchedulerStateMachine::ACTION_DRAW_AND_READBACK:
+ client_->ScheduledActionDrawAndReadback();
danakj 2013/08/30 15:56:41 How about a DrawAndReadback() method above that ca
brianderson 2013/09/03 22:41:12 I avoided checking for success because I read some
+ break;
case SchedulerStateMachine::ACTION_BEGIN_OUTPUT_SURFACE_CREATION:
client_->ScheduledActionBeginOutputSurfaceCreation();
break;

Powered by Google App Engine
This is Rietveld 408576698