Commit 7cdbf505 authored by danakj@chromium.org's avatar danakj@chromium.org

Remove forced commit and readback from the scheduler.

This removes CompositeAndReadback support from the scheduler, since the
code path is now removed.

R=brianderson
BUG=251936

Review URL: https://codereview.chromium.org/292533002

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@271722 0039d316-1c4b-4281-b951-d872f2087c98
parent 9e322338
...@@ -12,8 +12,6 @@ enum DrawResult { ...@@ -12,8 +12,6 @@ enum DrawResult {
DRAW_SUCCESS, DRAW_SUCCESS,
DRAW_ABORTED_CHECKERBOARD_ANIMATIONS, DRAW_ABORTED_CHECKERBOARD_ANIMATIONS,
DRAW_ABORTED_MISSING_HIGH_RES_CONTENT, DRAW_ABORTED_MISSING_HIGH_RES_CONTENT,
// TODO(danakj): Remove this.
DRAW_ABORTED_CANT_READBACK,
DRAW_ABORTED_CONTEXT_LOST, DRAW_ABORTED_CONTEXT_LOST,
DRAW_ABORTED_CANT_DRAW, DRAW_ABORTED_CANT_DRAW,
}; };
......
...@@ -164,11 +164,6 @@ void Scheduler::SetNeedsCommit() { ...@@ -164,11 +164,6 @@ void Scheduler::SetNeedsCommit() {
ProcessScheduledActions(); ProcessScheduledActions();
} }
void Scheduler::SetNeedsForcedCommitForReadback() {
state_machine_.SetNeedsForcedCommitForReadback();
ProcessScheduledActions();
}
void Scheduler::SetNeedsRedraw() { void Scheduler::SetNeedsRedraw() {
state_machine_.SetNeedsRedraw(); state_machine_.SetNeedsRedraw();
ProcessScheduledActions(); ProcessScheduledActions();
...@@ -192,9 +187,6 @@ void Scheduler::SetMaxSwapsPending(int max) { ...@@ -192,9 +187,6 @@ void Scheduler::SetMaxSwapsPending(int max) {
void Scheduler::DidSwapBuffers() { void Scheduler::DidSwapBuffers() {
state_machine_.DidSwapBuffers(); state_machine_.DidSwapBuffers();
// Swap should not occur inside readback operation.
DCHECK(!IsInsideAction(SchedulerStateMachine::ACTION_DRAW_AND_READBACK));
// There is no need to call ProcessScheduledActions here because // There is no need to call ProcessScheduledActions here because
// swapping should not trigger any new actions. // swapping should not trigger any new actions.
if (!inside_process_scheduled_actions_) { if (!inside_process_scheduled_actions_) {
...@@ -618,7 +610,6 @@ void Scheduler::ProcessScheduledActions() { ...@@ -618,7 +610,6 @@ void Scheduler::ProcessScheduledActions() {
SchedulerStateMachine::Action action; SchedulerStateMachine::Action action;
do { do {
state_machine_.CheckInvariants();
action = state_machine_.NextAction(); action = state_machine_.NextAction();
TRACE_EVENT1(TRACE_DISABLED_BY_DEFAULT("cc.debug.scheduler"), TRACE_EVENT1(TRACE_DISABLED_BY_DEFAULT("cc.debug.scheduler"),
"SchedulerStateMachine", "SchedulerStateMachine",
...@@ -655,9 +646,6 @@ void Scheduler::ProcessScheduledActions() { ...@@ -655,9 +646,6 @@ void Scheduler::ProcessScheduledActions() {
// No action is actually performed, but this allows the state machine to // No action is actually performed, but this allows the state machine to
// advance out of its waiting to draw state without actually drawing. // advance out of its waiting to draw state without actually drawing.
break; break;
case SchedulerStateMachine::ACTION_DRAW_AND_READBACK:
client_->ScheduledActionDrawAndReadback();
break;
case SchedulerStateMachine::ACTION_BEGIN_OUTPUT_SURFACE_CREATION: case SchedulerStateMachine::ACTION_BEGIN_OUTPUT_SURFACE_CREATION:
client_->ScheduledActionBeginOutputSurfaceCreation(); client_->ScheduledActionBeginOutputSurfaceCreation();
break; break;
......
...@@ -32,7 +32,6 @@ class SchedulerClient { ...@@ -32,7 +32,6 @@ class SchedulerClient {
virtual void ScheduledActionSendBeginMainFrame() = 0; virtual void ScheduledActionSendBeginMainFrame() = 0;
virtual DrawResult ScheduledActionDrawAndSwapIfPossible() = 0; virtual DrawResult ScheduledActionDrawAndSwapIfPossible() = 0;
virtual DrawResult ScheduledActionDrawAndSwapForced() = 0; virtual DrawResult ScheduledActionDrawAndSwapForced() = 0;
virtual DrawResult ScheduledActionDrawAndReadback() = 0;
virtual void ScheduledActionAnimate() = 0; virtual void ScheduledActionAnimate() = 0;
virtual void ScheduledActionCommit() = 0; virtual void ScheduledActionCommit() = 0;
virtual void ScheduledActionUpdateVisibleTiles() = 0; virtual void ScheduledActionUpdateVisibleTiles() = 0;
...@@ -76,10 +75,6 @@ class CC_EXPORT Scheduler { ...@@ -76,10 +75,6 @@ class CC_EXPORT Scheduler {
void SetNeedsCommit(); void SetNeedsCommit();
// Like SetNeedsCommit(), but ensures a commit will definitely happen even if
// we are not visible. Will eventually result in a forced draw internally.
void SetNeedsForcedCommitForReadback();
void SetNeedsRedraw(); void SetNeedsRedraw();
void SetNeedsAnimate(); void SetNeedsAnimate();
......
This diff is collapsed.
...@@ -68,18 +68,6 @@ class CC_EXPORT SchedulerStateMachine { ...@@ -68,18 +68,6 @@ class CC_EXPORT SchedulerStateMachine {
}; };
static const char* CommitStateToString(CommitState state); static const char* CommitStateToString(CommitState state);
enum SynchronousReadbackState {
READBACK_STATE_IDLE,
READBACK_STATE_NEEDS_BEGIN_MAIN_FRAME,
READBACK_STATE_WAITING_FOR_COMMIT,
READBACK_STATE_WAITING_FOR_ACTIVATION,
READBACK_STATE_WAITING_FOR_DRAW_AND_READBACK,
READBACK_STATE_WAITING_FOR_REPLACEMENT_COMMIT,
READBACK_STATE_WAITING_FOR_REPLACEMENT_ACTIVATION,
};
static const char* SynchronousReadbackStateToString(
SynchronousReadbackState state);
enum ForcedRedrawOnTimeoutState { enum ForcedRedrawOnTimeoutState {
FORCED_REDRAW_STATE_IDLE, FORCED_REDRAW_STATE_IDLE,
FORCED_REDRAW_STATE_WAITING_FOR_COMMIT, FORCED_REDRAW_STATE_WAITING_FOR_COMMIT,
...@@ -109,7 +97,6 @@ class CC_EXPORT SchedulerStateMachine { ...@@ -109,7 +97,6 @@ class CC_EXPORT SchedulerStateMachine {
ACTION_DRAW_AND_SWAP_IF_POSSIBLE, ACTION_DRAW_AND_SWAP_IF_POSSIBLE,
ACTION_DRAW_AND_SWAP_FORCED, ACTION_DRAW_AND_SWAP_FORCED,
ACTION_DRAW_AND_SWAP_ABORT, ACTION_DRAW_AND_SWAP_ABORT,
ACTION_DRAW_AND_READBACK,
ACTION_BEGIN_OUTPUT_SURFACE_CREATION, ACTION_BEGIN_OUTPUT_SURFACE_CREATION,
ACTION_MANAGE_TILES, ACTION_MANAGE_TILES,
}; };
...@@ -120,8 +107,6 @@ class CC_EXPORT SchedulerStateMachine { ...@@ -120,8 +107,6 @@ class CC_EXPORT SchedulerStateMachine {
Action NextAction() const; Action NextAction() const;
void UpdateState(Action action); void UpdateState(Action action);
void CheckInvariants();
// Indicates whether the impl thread needs a BeginImplFrame callback in order // Indicates whether the impl thread needs a BeginImplFrame callback in order
// to make progress. // to make progress.
bool BeginFrameNeeded() const; bool BeginFrameNeeded() const;
...@@ -200,12 +185,6 @@ class CC_EXPORT SchedulerStateMachine { ...@@ -200,12 +185,6 @@ class CC_EXPORT SchedulerStateMachine {
// thread to main. // thread to main.
void SetNeedsCommit(); void SetNeedsCommit();
// As SetNeedsCommit(), but ensures the BeginMainFrame will be sent even
// if we are not visible. After this call we expect to go through
// the forced commit flow and then return to waiting for a non-forced
// BeginMainFrame to finish.
void SetNeedsForcedCommitForReadback();
// Call this only in response to receiving an ACTION_SEND_BEGIN_MAIN_FRAME // Call this only in response to receiving an ACTION_SEND_BEGIN_MAIN_FRAME
// from NextAction. // from NextAction.
// Indicates that all painting is complete. // Indicates that all painting is complete.
...@@ -285,7 +264,6 @@ class CC_EXPORT SchedulerStateMachine { ...@@ -285,7 +264,6 @@ class CC_EXPORT SchedulerStateMachine {
BeginImplFrameState begin_impl_frame_state_; BeginImplFrameState begin_impl_frame_state_;
CommitState commit_state_; CommitState commit_state_;
ForcedRedrawOnTimeoutState forced_redraw_state_; ForcedRedrawOnTimeoutState forced_redraw_state_;
SynchronousReadbackState readback_state_;
BeginFrameArgs begin_impl_frame_args_; BeginFrameArgs begin_impl_frame_args_;
...@@ -322,7 +300,6 @@ class CC_EXPORT SchedulerStateMachine { ...@@ -322,7 +300,6 @@ class CC_EXPORT SchedulerStateMachine {
bool skip_next_begin_main_frame_to_reduce_latency_; bool skip_next_begin_main_frame_to_reduce_latency_;
bool skip_begin_main_frame_to_reduce_latency_; bool skip_begin_main_frame_to_reduce_latency_;
bool continuous_painting_; bool continuous_painting_;
bool needs_back_to_back_readback_;
private: private:
DISALLOW_COPY_AND_ASSIGN(SchedulerStateMachine); DISALLOW_COPY_AND_ASSIGN(SchedulerStateMachine);
......
...@@ -134,11 +134,6 @@ class FakeSchedulerClient : public SchedulerClient { ...@@ -134,11 +134,6 @@ class FakeSchedulerClient : public SchedulerClient {
states_.push_back(scheduler_->AsValue().release()); states_.push_back(scheduler_->AsValue().release());
return DRAW_SUCCESS; return DRAW_SUCCESS;
} }
virtual DrawResult ScheduledActionDrawAndReadback() OVERRIDE {
actions_.push_back("ScheduledActionDrawAndReadback");
states_.push_back(scheduler_->AsValue().release());
return DRAW_SUCCESS;
}
virtual void ScheduledActionCommit() OVERRIDE { virtual void ScheduledActionCommit() OVERRIDE {
actions_.push_back("ScheduledActionCommit"); actions_.push_back("ScheduledActionCommit");
states_.push_back(scheduler_->AsValue().release()); states_.push_back(scheduler_->AsValue().release());
...@@ -645,53 +640,6 @@ TEST(SchedulerTest, NoSwapWhenDrawFails) { ...@@ -645,53 +640,6 @@ TEST(SchedulerTest, NoSwapWhenDrawFails) {
EXPECT_EQ(2, client.num_draws()); EXPECT_EQ(2, client.num_draws());
} }
TEST(SchedulerTest, NoSwapWhenSwapFailsDuringForcedCommit) {
FakeSchedulerClient client;
SchedulerSettings default_scheduler_settings;
Scheduler* scheduler = client.CreateScheduler(default_scheduler_settings);
// Tell the client that it will fail to swap.
client.SetDrawWillHappen(true);
client.SetSwapWillHappenIfDrawHappens(false);
// Get the compositor to do a ScheduledActionDrawAndReadback.
scheduler->SetCanDraw(true);
scheduler->SetNeedsRedraw();
scheduler->SetNeedsForcedCommitForReadback();
scheduler->NotifyBeginMainFrameStarted();
scheduler->NotifyReadyToCommit();
EXPECT_TRUE(client.HasAction("ScheduledActionDrawAndReadback"));
}
TEST(SchedulerTest, BackToBackReadbackAllowed) {
// Some clients call readbacks twice in a row before the replacement
// commit comes in. Make sure it is allowed.
FakeSchedulerClient client;
SchedulerSettings default_scheduler_settings;
Scheduler* scheduler = client.CreateScheduler(default_scheduler_settings);
// Get the compositor to do 2 ScheduledActionDrawAndReadbacks before
// the replacement commit comes in.
scheduler->SetCanDraw(true);
scheduler->SetNeedsRedraw();
scheduler->SetNeedsForcedCommitForReadback();
scheduler->NotifyBeginMainFrameStarted();
scheduler->NotifyReadyToCommit();
EXPECT_TRUE(client.HasAction("ScheduledActionDrawAndReadback"));
client.Reset();
scheduler->SetNeedsForcedCommitForReadback();
scheduler->NotifyBeginMainFrameStarted();
scheduler->NotifyReadyToCommit();
EXPECT_TRUE(client.HasAction("ScheduledActionDrawAndReadback"));
// The replacement commit comes in after 2 readbacks.
client.Reset();
scheduler->NotifyBeginMainFrameStarted();
scheduler->NotifyReadyToCommit();
}
class SchedulerClientNeedsManageTilesInDraw : public FakeSchedulerClient { class SchedulerClientNeedsManageTilesInDraw : public FakeSchedulerClient {
public: public:
virtual DrawResult ScheduledActionDrawAndSwapIfPossible() virtual DrawResult ScheduledActionDrawAndSwapIfPossible()
......
...@@ -1149,12 +1149,6 @@ DrawResult ThreadProxy::ScheduledActionDrawAndSwapForced() { ...@@ -1149,12 +1149,6 @@ DrawResult ThreadProxy::ScheduledActionDrawAndSwapForced() {
return DrawSwapInternal(forced_draw); return DrawSwapInternal(forced_draw);
} }
DrawResult ThreadProxy::ScheduledActionDrawAndReadback() {
TRACE_EVENT0("cc", "ThreadProxy::ScheduledActionDrawAndReadback");
NOTREACHED();
return INVALID_RESULT;
}
void ThreadProxy::DidAnticipatedDrawTimeChange(base::TimeTicks time) { void ThreadProxy::DidAnticipatedDrawTimeChange(base::TimeTicks time) {
if (impl().current_resource_update_controller) if (impl().current_resource_update_controller)
impl().current_resource_update_controller->PerformMoreUpdates(time); impl().current_resource_update_controller->PerformMoreUpdates(time);
......
...@@ -110,7 +110,6 @@ class ThreadProxy : public Proxy, ...@@ -110,7 +110,6 @@ class ThreadProxy : public Proxy,
virtual void ScheduledActionSendBeginMainFrame() OVERRIDE; virtual void ScheduledActionSendBeginMainFrame() OVERRIDE;
virtual DrawResult ScheduledActionDrawAndSwapIfPossible() OVERRIDE; virtual DrawResult ScheduledActionDrawAndSwapIfPossible() OVERRIDE;
virtual DrawResult ScheduledActionDrawAndSwapForced() OVERRIDE; virtual DrawResult ScheduledActionDrawAndSwapForced() OVERRIDE;
virtual DrawResult ScheduledActionDrawAndReadback() OVERRIDE;
virtual void ScheduledActionAnimate() OVERRIDE; virtual void ScheduledActionAnimate() OVERRIDE;
virtual void ScheduledActionCommit() OVERRIDE; virtual void ScheduledActionCommit() OVERRIDE;
virtual void ScheduledActionUpdateVisibleTiles() OVERRIDE; virtual void ScheduledActionUpdateVisibleTiles() OVERRIDE;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment