summaryrefslogtreecommitdiffstats
path: root/cc
diff options
context:
space:
mode:
authormachenbach@chromium.org <machenbach@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-04-29 07:04:51 +0000
committermachenbach@chromium.org <machenbach@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-04-29 07:04:51 +0000
commitb3654cbb02c8495a4f618285980d9eca72d92dc0 (patch)
tree79a239c95c385b765f330a6307d9bc63dfcebd46 /cc
parent4c9b6c4bb0ca436da6ab13b6eb177c16efe8240c (diff)
downloadchromium_src-b3654cbb02c8495a4f618285980d9eca72d92dc0.zip
chromium_src-b3654cbb02c8495a4f618285980d9eca72d92dc0.tar.gz
chromium_src-b3654cbb02c8495a4f618285980d9eca72d92dc0.tar.bz2
Revert of cc: SwapAck throttle Swap without throttling MainFrames (https://codereview.chromium.org/222023010/)
Reason for revert: [Sheriff] Speculative revert for breaking win7 dbg: http://build.chromium.org/p/chromium.win/builders/Win7%20Tests%20%28dbg%29%284%29/builds/26034 Will reland if it didn't help. Original issue's description: > cc: SwapAck throttle Swap without throttling MainFrames > > This should improve main thread throughput in cases > where we are deferring the BeginMainFrame, but don't > really need to because the swap ack will come back > before the impl thread needs to draw anyway. > > BUG=311213 > > Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=266685 NOTREECHECKS=true NOTRY=true BUG=311213 TBR=Sami, danakj, brianderson Review URL: https://codereview.chromium.org/255033004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@266757 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'cc')
-rw-r--r--cc/scheduler/scheduler_state_machine.cc5
-rw-r--r--cc/scheduler/scheduler_unittest.cc16
2 files changed, 12 insertions, 9 deletions
diff --git a/cc/scheduler/scheduler_state_machine.cc b/cc/scheduler/scheduler_state_machine.cc
index e76721d..0ddaa30 100644
--- a/cc/scheduler/scheduler_state_machine.cc
+++ b/cc/scheduler/scheduler_state_machine.cc
@@ -502,6 +502,11 @@ bool SchedulerStateMachine::ShouldSendBeginMainFrame() const {
if (!HasInitializedOutputSurface())
return false;
+ // SwapAck throttle the BeginMainFrames
+ // TODO(brianderson): Remove this restriction to improve throughput.
+ if (pending_swaps_ >= max_pending_swaps_)
+ return false;
+
if (skip_begin_main_frame_to_reduce_latency_)
return false;
diff --git a/cc/scheduler/scheduler_unittest.cc b/cc/scheduler/scheduler_unittest.cc
index 9acbd37..921b94a 100644
--- a/cc/scheduler/scheduler_unittest.cc
+++ b/cc/scheduler/scheduler_unittest.cc
@@ -1266,11 +1266,10 @@ TEST(SchedulerTest, BeginRetroFrame_SwapThrottled) {
client.Reset();
// While swap throttled, BeginRetroFrames should trigger BeginImplFrames
- // and BeginMainFrames, but not draw.
+ // but not a BeginMainFrame or draw.
scheduler->SetNeedsCommit();
client.task_runner().RunPendingTasks(); // Run posted BeginRetroFrame.
- EXPECT_ACTION("WillBeginImplFrame", client, 0, 2);
- EXPECT_ACTION("ScheduledActionSendBeginMainFrame", client, 1, 2);
+ EXPECT_ACTION("WillBeginImplFrame", client, 0, 1);
EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending());
EXPECT_TRUE(client.needs_begin_frame());
client.Reset();
@@ -1285,7 +1284,7 @@ TEST(SchedulerTest, BeginRetroFrame_SwapThrottled) {
// Take us out of a swap throttled state.
scheduler->DidSwapBuffersComplete();
- EXPECT_EQ(0, client.num_actions_());
+ EXPECT_ACTION("ScheduledActionSendBeginMainFrame", client, 0, 1);
EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending());
EXPECT_TRUE(client.needs_begin_frame());
client.Reset();
@@ -1442,19 +1441,18 @@ void BeginFramesNotFromClient_SwapThrottled(bool begin_frame_scheduling_enabled,
EXPECT_FALSE(client.needs_begin_frame());
client.Reset();
- // While swap throttled, BeginFrames should trigger BeginImplFrame and
- // BeginMainFrame, but not draw.
+ // While swap throttled, BeginFrames should trigger BeginImplFrames,
+ // but not a BeginMainFrame or draw.
scheduler->SetNeedsCommit();
client.task_runner().RunPendingTasks(); // Run posted BeginFrame.
- EXPECT_ACTION("WillBeginImplFrame", client, 0, 2);
- EXPECT_ACTION("ScheduledActionSendBeginMainFrame", client, 1, 2);
+ EXPECT_ACTION("WillBeginImplFrame", client, 0, 1);
EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending());
EXPECT_FALSE(client.needs_begin_frame());
client.Reset();
// Take us out of a swap throttled state.
scheduler->DidSwapBuffersComplete();
- EXPECT_EQ(0, client.num_actions_());
+ EXPECT_ACTION("ScheduledActionSendBeginMainFrame", client, 0, 1);
EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending());
EXPECT_FALSE(client.needs_begin_frame());
client.Reset();