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 {
DRAW_SUCCESS,
DRAW_ABORTED_CHECKERBOARD_ANIMATIONS,
DRAW_ABORTED_MISSING_HIGH_RES_CONTENT,
// TODO(danakj): Remove this.
DRAW_ABORTED_CANT_READBACK,
DRAW_ABORTED_CONTEXT_LOST,
DRAW_ABORTED_CANT_DRAW,
};
......
......@@ -164,11 +164,6 @@ void Scheduler::SetNeedsCommit() {
ProcessScheduledActions();
}
void Scheduler::SetNeedsForcedCommitForReadback() {
state_machine_.SetNeedsForcedCommitForReadback();
ProcessScheduledActions();
}
void Scheduler::SetNeedsRedraw() {
state_machine_.SetNeedsRedraw();
ProcessScheduledActions();
......@@ -192,9 +187,6 @@ void Scheduler::SetMaxSwapsPending(int max) {
void Scheduler::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
// swapping should not trigger any new actions.
if (!inside_process_scheduled_actions_) {
......@@ -618,7 +610,6 @@ void Scheduler::ProcessScheduledActions() {
SchedulerStateMachine::Action action;
do {
state_machine_.CheckInvariants();
action = state_machine_.NextAction();
TRACE_EVENT1(TRACE_DISABLED_BY_DEFAULT("cc.debug.scheduler"),
"SchedulerStateMachine",
......@@ -655,9 +646,6 @@ void Scheduler::ProcessScheduledActions() {
// 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();
break;
case SchedulerStateMachine::ACTION_BEGIN_OUTPUT_SURFACE_CREATION:
client_->ScheduledActionBeginOutputSurfaceCreation();
break;
......
......@@ -32,7 +32,6 @@ class SchedulerClient {
virtual void ScheduledActionSendBeginMainFrame() = 0;
virtual DrawResult ScheduledActionDrawAndSwapIfPossible() = 0;
virtual DrawResult ScheduledActionDrawAndSwapForced() = 0;
virtual DrawResult ScheduledActionDrawAndReadback() = 0;
virtual void ScheduledActionAnimate() = 0;
virtual void ScheduledActionCommit() = 0;
virtual void ScheduledActionUpdateVisibleTiles() = 0;
......@@ -76,10 +75,6 @@ class CC_EXPORT Scheduler {
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 SetNeedsAnimate();
......
This diff is collapsed.
......@@ -68,18 +68,6 @@ class CC_EXPORT SchedulerStateMachine {
};
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 {
FORCED_REDRAW_STATE_IDLE,
FORCED_REDRAW_STATE_WAITING_FOR_COMMIT,
......@@ -109,7 +97,6 @@ class CC_EXPORT SchedulerStateMachine {
ACTION_DRAW_AND_SWAP_IF_POSSIBLE,
ACTION_DRAW_AND_SWAP_FORCED,
ACTION_DRAW_AND_SWAP_ABORT,
ACTION_DRAW_AND_READBACK,
ACTION_BEGIN_OUTPUT_SURFACE_CREATION,
ACTION_MANAGE_TILES,
};
......@@ -120,8 +107,6 @@ class CC_EXPORT SchedulerStateMachine {
Action NextAction() const;
void UpdateState(Action action);
void CheckInvariants();
// Indicates whether the impl thread needs a BeginImplFrame callback in order
// to make progress.
bool BeginFrameNeeded() const;
......@@ -200,12 +185,6 @@ class CC_EXPORT SchedulerStateMachine {
// thread to main.
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
// from NextAction.
// Indicates that all painting is complete.
......@@ -285,7 +264,6 @@ class CC_EXPORT SchedulerStateMachine {
BeginImplFrameState begin_impl_frame_state_;
CommitState commit_state_;
ForcedRedrawOnTimeoutState forced_redraw_state_;
SynchronousReadbackState readback_state_;
BeginFrameArgs begin_impl_frame_args_;
......@@ -322,7 +300,6 @@ class CC_EXPORT SchedulerStateMachine {
bool skip_next_begin_main_frame_to_reduce_latency_;
bool skip_begin_main_frame_to_reduce_latency_;
bool continuous_painting_;
bool needs_back_to_back_readback_;
private:
DISALLOW_COPY_AND_ASSIGN(SchedulerStateMachine);
......
......@@ -134,11 +134,6 @@ class FakeSchedulerClient : public SchedulerClient {
states_.push_back(scheduler_->AsValue().release());
return DRAW_SUCCESS;
}
virtual DrawResult ScheduledActionDrawAndReadback() OVERRIDE {
actions_.push_back("ScheduledActionDrawAndReadback");
states_.push_back(scheduler_->AsValue().release());
return DRAW_SUCCESS;
}
virtual void ScheduledActionCommit() OVERRIDE {
actions_.push_back("ScheduledActionCommit");
states_.push_back(scheduler_->AsValue().release());
......@@ -645,53 +640,6 @@ TEST(SchedulerTest, NoSwapWhenDrawFails) {
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 {
public:
virtual DrawResult ScheduledActionDrawAndSwapIfPossible()
......
......@@ -1149,12 +1149,6 @@ DrawResult ThreadProxy::ScheduledActionDrawAndSwapForced() {
return DrawSwapInternal(forced_draw);
}
DrawResult ThreadProxy::ScheduledActionDrawAndReadback() {
TRACE_EVENT0("cc", "ThreadProxy::ScheduledActionDrawAndReadback");
NOTREACHED();
return INVALID_RESULT;
}
void ThreadProxy::DidAnticipatedDrawTimeChange(base::TimeTicks time) {
if (impl().current_resource_update_controller)
impl().current_resource_update_controller->PerformMoreUpdates(time);
......
......@@ -110,7 +110,6 @@ class ThreadProxy : public Proxy,
virtual void ScheduledActionSendBeginMainFrame() OVERRIDE;
virtual DrawResult ScheduledActionDrawAndSwapIfPossible() OVERRIDE;
virtual DrawResult ScheduledActionDrawAndSwapForced() OVERRIDE;
virtual DrawResult ScheduledActionDrawAndReadback() OVERRIDE;
virtual void ScheduledActionAnimate() OVERRIDE;
virtual void ScheduledActionCommit() 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