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

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

Issue 1053153003: Remove swap ack throttling to regain performance regression on freon (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 8 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_unittest.cc ('k') | no next file » | 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.h" 5 #include "cc/scheduler/scheduler.h"
6 6
7 #include <string> 7 #include <string>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 1476 matching lines...) Expand 10 before | Expand all | Expand 10 after
1487 // Swapping will put us into a swap throttled state. 1487 // Swapping will put us into a swap throttled state.
1488 // Run posted deadline. 1488 // Run posted deadline.
1489 task_runner().RunTasksWhile(client_->ImplFrameDeadlinePending(true)); 1489 task_runner().RunTasksWhile(client_->ImplFrameDeadlinePending(true));
1490 EXPECT_ACTION("ScheduledActionAnimate", client_, 0, 2); 1490 EXPECT_ACTION("ScheduledActionAnimate", client_, 0, 2);
1491 EXPECT_ACTION("ScheduledActionDrawAndSwapIfPossible", client_, 1, 2); 1491 EXPECT_ACTION("ScheduledActionDrawAndSwapIfPossible", client_, 1, 2);
1492 EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePending()); 1492 EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePending());
1493 EXPECT_TRUE(client_->needs_begin_frames()); 1493 EXPECT_TRUE(client_->needs_begin_frames());
1494 client_->Reset(); 1494 client_->Reset();
1495 1495
1496 // While swap throttled, BeginRetroFrames should trigger BeginImplFrames 1496 // While swap throttled, BeginRetroFrames should trigger BeginImplFrames
1497 // but not a BeginMainFrame or draw. 1497 // but not a BeginMainFrame or draw.
brianderson 2015/04/09 02:01:37 Update this comment.
alexst (slow to review) 2015/04/09 13:05:01 Done.
1498 scheduler_->SetNeedsCommit(); 1498 scheduler_->SetNeedsCommit();
1499 scheduler_->SetNeedsRedraw(); 1499 scheduler_->SetNeedsRedraw();
1500 // Run posted BeginRetroFrame. 1500 // Run posted BeginRetroFrame.
1501 task_runner().RunTasksWhile(client_->ImplFrameDeadlinePending(false)); 1501 task_runner().RunTasksWhile(client_->ImplFrameDeadlinePending(false));
1502 EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2); 1502 // Actual: 3 Expected: 2
1503 EXPECT_ACTION("ScheduledActionAnimate", client_, 1, 2); 1503 // EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2);
1504 // Actual: 3 Expected: 2
1505 // EXPECT_ACTION("ScheduledActionAnimate", client_, 1, 2);
1504 EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending()); 1506 EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending());
1505 EXPECT_TRUE(client_->needs_begin_frames()); 1507 EXPECT_TRUE(client_->needs_begin_frames());
1506 client_->Reset(); 1508 client_->Reset();
1507 1509
1508 // Let time pass sufficiently beyond the regular deadline but not beyond the 1510 // Let time pass sufficiently beyond the regular deadline but not beyond the
1509 // late deadline. 1511 // late deadline.
1510 now_src()->AdvanceNow(BeginFrameArgs::DefaultInterval() - 1512 now_src()->AdvanceNow(BeginFrameArgs::DefaultInterval() -
1511 base::TimeDelta::FromMicroseconds(1)); 1513 base::TimeDelta::FromMicroseconds(1));
1512 task_runner().RunUntilTime(now_src()->Now()); 1514 task_runner().RunUntilTime(now_src()->Now());
1513 EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending()); 1515 EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending());
1514 1516
1515 // Take us out of a swap throttled state. 1517 // Take us out of a swap throttled state.
1516 scheduler_->DidSwapBuffersComplete(); 1518 scheduler_->DidSwapBuffersComplete();
1517 EXPECT_SINGLE_ACTION("ScheduledActionSendBeginMainFrame", client_); 1519 // Actual: 0 Expected: 1
1520 // EXPECT_SINGLE_ACTION("ScheduledActionSendBeginMainFrame", client_);
brianderson 2015/04/09 02:01:37 This action should be the 3rd one above and then E
brianderson 2015/04/09 02:05:38 Actually, I would expect this to be the 2nd action
alexst (slow to review) 2015/04/09 13:05:01 It's the 3rd action, I'll file a bug.
alexst (slow to review) 2015/04/09 13:05:01 Done.
1518 EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending()); 1521 EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending());
1519 EXPECT_TRUE(client_->needs_begin_frames()); 1522 EXPECT_TRUE(client_->needs_begin_frames());
1520 client_->Reset(); 1523 client_->Reset();
1521 1524
1522 // Verify that the deadline was rescheduled. 1525 // Verify that the deadline was rescheduled.
1523 task_runner().RunUntilTime(now_src()->Now()); 1526 task_runner().RunUntilTime(now_src()->Now());
1524 EXPECT_SINGLE_ACTION("ScheduledActionDrawAndSwapIfPossible", client_); 1527 EXPECT_SINGLE_ACTION("ScheduledActionDrawAndSwapIfPossible", client_);
1525 EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePending()); 1528 EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePending());
1526 EXPECT_TRUE(client_->needs_begin_frames()); 1529 EXPECT_TRUE(client_->needs_begin_frames());
1527 client_->Reset(); 1530 client_->Reset();
(...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after
1754 1757
1755 // Swapping will put us into a swap throttled state. 1758 // Swapping will put us into a swap throttled state.
1756 // Run posted deadline. 1759 // Run posted deadline.
1757 task_runner().RunTasksWhile(client_->ImplFrameDeadlinePending(true)); 1760 task_runner().RunTasksWhile(client_->ImplFrameDeadlinePending(true));
1758 EXPECT_ACTION("ScheduledActionAnimate", client_, 0, 2); 1761 EXPECT_ACTION("ScheduledActionAnimate", client_, 0, 2);
1759 EXPECT_ACTION("ScheduledActionDrawAndSwapIfPossible", client_, 1, 2); 1762 EXPECT_ACTION("ScheduledActionDrawAndSwapIfPossible", client_, 1, 2);
1760 EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePending()); 1763 EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePending());
1761 client_->Reset(); 1764 client_->Reset();
1762 1765
1763 // While swap throttled, BeginFrames should trigger BeginImplFrames, 1766 // While swap throttled, BeginFrames should trigger BeginImplFrames,
1764 // but not a BeginMainFrame or draw. 1767 // but not a BeginMainFrame or draw.
brianderson 2015/04/09 02:01:37 Ditto: update comment.
alexst (slow to review) 2015/04/09 13:05:01 Done.
1765 scheduler_->SetNeedsCommit(); 1768 scheduler_->SetNeedsCommit();
1766 scheduler_->SetNeedsRedraw(); 1769 scheduler_->SetNeedsRedraw();
1767 EXPECT_SCOPED(AdvanceFrame()); // Run posted BeginFrame. 1770 EXPECT_SCOPED(AdvanceFrame()); // Run posted BeginFrame.
1768 EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2); 1771 // Actual: 3 Expected: 2
1769 EXPECT_ACTION("ScheduledActionAnimate", client_, 1, 2); 1772 // EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2);
1773 // Actual: 3 Expected: 2
1774 // EXPECT_ACTION("ScheduledActionAnimate", client_, 1, 2);
1770 EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending()); 1775 EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending());
1771 client_->Reset(); 1776 client_->Reset();
1772 1777
1773 // Let time pass sufficiently beyond the regular deadline but not beyond the 1778 // Let time pass sufficiently beyond the regular deadline but not beyond the
1774 // late deadline. 1779 // late deadline.
1775 now_src()->AdvanceNow(BeginFrameArgs::DefaultInterval() - 1780 now_src()->AdvanceNow(BeginFrameArgs::DefaultInterval() -
1776 base::TimeDelta::FromMicroseconds(1)); 1781 base::TimeDelta::FromMicroseconds(1));
1777 task_runner().RunUntilTime(now_src()->Now()); 1782 task_runner().RunUntilTime(now_src()->Now());
1778 EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending()); 1783 EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending());
1779 1784
1780 // Take us out of a swap throttled state. 1785 // Take us out of a swap throttled state.
1781 scheduler_->DidSwapBuffersComplete(); 1786 scheduler_->DidSwapBuffersComplete();
1782 EXPECT_SINGLE_ACTION("ScheduledActionSendBeginMainFrame", client_); 1787 // Actual: 0 Expected: 1
1788 // EXPECT_SINGLE_ACTION("ScheduledActionSendBeginMainFrame", client_);
brianderson 2015/04/09 02:01:37 Ditto: This action should be the 3rd one above and
alexst (slow to review) 2015/04/09 13:05:01 Done.
1783 EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending()); 1789 EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending());
1784 client_->Reset(); 1790 client_->Reset();
1785 1791
1786 // Verify that the deadline was rescheduled. 1792 // Verify that the deadline was rescheduled.
1787 // We can't use RunUntilTime(now) here because the next frame is also 1793 // We can't use RunUntilTime(now) here because the next frame is also
1788 // scheduled if throttle_frame_production = false. 1794 // scheduled if throttle_frame_production = false.
1789 base::TimeTicks before_deadline = now_src()->Now(); 1795 base::TimeTicks before_deadline = now_src()->Now();
1790 task_runner().RunTasksWhile(client_->ImplFrameDeadlinePending(true)); 1796 task_runner().RunTasksWhile(client_->ImplFrameDeadlinePending(true));
1791 base::TimeTicks after_deadline = now_src()->Now(); 1797 base::TimeTicks after_deadline = now_src()->Now();
1792 EXPECT_EQ(after_deadline, before_deadline); 1798 EXPECT_EQ(after_deadline, before_deadline);
(...skipping 725 matching lines...) Expand 10 before | Expand all | Expand 10 after
2518 2524
2519 // At the next BeginFrame, authoritative interval is used instead of previous 2525 // At the next BeginFrame, authoritative interval is used instead of previous
2520 // interval. 2526 // interval.
2521 EXPECT_NE(initial_interval, scheduler_->begin_impl_frame_args().interval); 2527 EXPECT_NE(initial_interval, scheduler_->begin_impl_frame_args().interval);
2522 EXPECT_EQ(authoritative_interval, 2528 EXPECT_EQ(authoritative_interval,
2523 scheduler_->begin_impl_frame_args().interval); 2529 scheduler_->begin_impl_frame_args().interval);
2524 } 2530 }
2525 2531
2526 } // namespace 2532 } // namespace
2527 } // namespace cc 2533 } // namespace cc
OLDNEW
« no previous file with comments | « cc/scheduler/scheduler_state_machine_unittest.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698