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

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

Issue 246753008: cc: Unify use of DidSwapBuffers() and did_request_swap (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebased Created 6 years, 7 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 | Annotate | Revision Log
« no previous file with comments | « cc/scheduler/scheduler_state_machine_unittest.cc ('k') | cc/test/layer_tree_test.h » ('j') | 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 #include "cc/scheduler/scheduler.h" 4 #include "cc/scheduler/scheduler.h"
5 5
6 #include <string> 6 #include <string>
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/memory/scoped_vector.h" 10 #include "base/memory/scoped_vector.h"
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
107 states_.push_back(scheduler_->AsValue().release()); 107 states_.push_back(scheduler_->AsValue().release());
108 } 108 }
109 virtual void ScheduledActionSendBeginMainFrame() OVERRIDE { 109 virtual void ScheduledActionSendBeginMainFrame() OVERRIDE {
110 actions_.push_back("ScheduledActionSendBeginMainFrame"); 110 actions_.push_back("ScheduledActionSendBeginMainFrame");
111 states_.push_back(scheduler_->AsValue().release()); 111 states_.push_back(scheduler_->AsValue().release());
112 } 112 }
113 virtual void ScheduledActionAnimate() OVERRIDE { 113 virtual void ScheduledActionAnimate() OVERRIDE {
114 actions_.push_back("ScheduledActionAnimate"); 114 actions_.push_back("ScheduledActionAnimate");
115 states_.push_back(scheduler_->AsValue().release()); 115 states_.push_back(scheduler_->AsValue().release());
116 } 116 }
117 virtual DrawSwapReadbackResult ScheduledActionDrawAndSwapIfPossible() 117 virtual DrawResult ScheduledActionDrawAndSwapIfPossible() OVERRIDE {
118 OVERRIDE {
119 actions_.push_back("ScheduledActionDrawAndSwapIfPossible"); 118 actions_.push_back("ScheduledActionDrawAndSwapIfPossible");
120 states_.push_back(scheduler_->AsValue().release()); 119 states_.push_back(scheduler_->AsValue().release());
121 num_draws_++; 120 num_draws_++;
122 bool did_readback = false; 121 DrawResult result =
123 DrawSwapReadbackResult::DrawResult result = 122 draw_will_happen_ ? DRAW_SUCCESS : DRAW_ABORTED_CHECKERBOARD_ANIMATIONS;
124 draw_will_happen_
125 ? DrawSwapReadbackResult::DRAW_SUCCESS
126 : DrawSwapReadbackResult::DRAW_ABORTED_CHECKERBOARD_ANIMATIONS;
127 bool swap_will_happen = 123 bool swap_will_happen =
128 draw_will_happen_ && swap_will_happen_if_draw_happens_; 124 draw_will_happen_ && swap_will_happen_if_draw_happens_;
129 if (swap_will_happen) { 125 if (swap_will_happen) {
130 scheduler_->DidSwapBuffers(); 126 scheduler_->DidSwapBuffers();
131 if (automatic_swap_ack_) 127 if (automatic_swap_ack_)
132 scheduler_->DidSwapBuffersComplete(); 128 scheduler_->DidSwapBuffersComplete();
133 } 129 }
134 return DrawSwapReadbackResult( 130 return result;
135 result,
136 draw_will_happen_ && swap_will_happen_if_draw_happens_,
137 did_readback);
138 } 131 }
139 virtual DrawSwapReadbackResult ScheduledActionDrawAndSwapForced() OVERRIDE { 132 virtual DrawResult ScheduledActionDrawAndSwapForced() OVERRIDE {
140 actions_.push_back("ScheduledActionDrawAndSwapForced"); 133 actions_.push_back("ScheduledActionDrawAndSwapForced");
141 states_.push_back(scheduler_->AsValue().release()); 134 states_.push_back(scheduler_->AsValue().release());
142 bool did_request_swap = swap_will_happen_if_draw_happens_; 135 return DRAW_SUCCESS;
143 bool did_readback = false;
144 return DrawSwapReadbackResult(
145 DrawSwapReadbackResult::DRAW_SUCCESS, did_request_swap, did_readback);
146 } 136 }
147 virtual DrawSwapReadbackResult ScheduledActionDrawAndReadback() OVERRIDE { 137 virtual DrawResult ScheduledActionDrawAndReadback() OVERRIDE {
148 actions_.push_back("ScheduledActionDrawAndReadback"); 138 actions_.push_back("ScheduledActionDrawAndReadback");
149 states_.push_back(scheduler_->AsValue().release()); 139 states_.push_back(scheduler_->AsValue().release());
150 bool did_request_swap = false; 140 return DRAW_SUCCESS;
151 bool did_readback = true;
152 return DrawSwapReadbackResult(
153 DrawSwapReadbackResult::DRAW_SUCCESS, did_request_swap, did_readback);
154 } 141 }
155 virtual void ScheduledActionCommit() OVERRIDE { 142 virtual void ScheduledActionCommit() OVERRIDE {
156 actions_.push_back("ScheduledActionCommit"); 143 actions_.push_back("ScheduledActionCommit");
157 states_.push_back(scheduler_->AsValue().release()); 144 states_.push_back(scheduler_->AsValue().release());
158 } 145 }
159 virtual void ScheduledActionUpdateVisibleTiles() OVERRIDE { 146 virtual void ScheduledActionUpdateVisibleTiles() OVERRIDE {
160 actions_.push_back("ScheduledActionUpdateVisibleTiles"); 147 actions_.push_back("ScheduledActionUpdateVisibleTiles");
161 states_.push_back(scheduler_->AsValue().release()); 148 states_.push_back(scheduler_->AsValue().release());
162 } 149 }
163 virtual void ScheduledActionActivatePendingTree() OVERRIDE { 150 virtual void ScheduledActionActivatePendingTree() OVERRIDE {
(...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after
388 // no longer request BeginImplFrames. 375 // no longer request BeginImplFrames.
389 scheduler->BeginFrame(CreateBeginFrameArgsForTesting()); 376 scheduler->BeginFrame(CreateBeginFrameArgsForTesting());
390 client.task_runner().RunPendingTasks(); // Run posted deadline. 377 client.task_runner().RunPendingTasks(); // Run posted deadline.
391 EXPECT_FALSE(client.needs_begin_frame()); 378 EXPECT_FALSE(client.needs_begin_frame());
392 client.Reset(); 379 client.Reset();
393 } 380 }
394 381
395 class SchedulerClientThatsetNeedsDrawInsideDraw : public FakeSchedulerClient { 382 class SchedulerClientThatsetNeedsDrawInsideDraw : public FakeSchedulerClient {
396 public: 383 public:
397 virtual void ScheduledActionSendBeginMainFrame() OVERRIDE {} 384 virtual void ScheduledActionSendBeginMainFrame() OVERRIDE {}
398 virtual DrawSwapReadbackResult ScheduledActionDrawAndSwapIfPossible() 385 virtual DrawResult ScheduledActionDrawAndSwapIfPossible()
399 OVERRIDE { 386 OVERRIDE {
400 // Only SetNeedsRedraw the first time this is called 387 // Only SetNeedsRedraw the first time this is called
401 if (!num_draws_) 388 if (!num_draws_)
402 scheduler_->SetNeedsRedraw(); 389 scheduler_->SetNeedsRedraw();
403 return FakeSchedulerClient::ScheduledActionDrawAndSwapIfPossible(); 390 return FakeSchedulerClient::ScheduledActionDrawAndSwapIfPossible();
404 } 391 }
405 392
406 virtual DrawSwapReadbackResult ScheduledActionDrawAndSwapForced() OVERRIDE { 393 virtual DrawResult ScheduledActionDrawAndSwapForced() OVERRIDE {
407 NOTREACHED(); 394 NOTREACHED();
408 bool did_request_swap = true; 395 return DRAW_SUCCESS;
409 bool did_readback = false;
410 return DrawSwapReadbackResult(
411 DrawSwapReadbackResult::DRAW_SUCCESS, did_request_swap, did_readback);
412 } 396 }
413 397
414 virtual void ScheduledActionCommit() OVERRIDE {} 398 virtual void ScheduledActionCommit() OVERRIDE {}
415 virtual void ScheduledActionBeginOutputSurfaceCreation() OVERRIDE {} 399 virtual void ScheduledActionBeginOutputSurfaceCreation() OVERRIDE {}
416 virtual void DidAnticipatedDrawTimeChange(base::TimeTicks) OVERRIDE {} 400 virtual void DidAnticipatedDrawTimeChange(base::TimeTicks) OVERRIDE {}
417 }; 401 };
418 402
419 // Tests for two different situations: 403 // Tests for two different situations:
420 // 1. the scheduler dropping SetNeedsRedraw requests that happen inside 404 // 1. the scheduler dropping SetNeedsRedraw requests that happen inside
421 // a ScheduledActionDrawAndSwap 405 // a ScheduledActionDrawAndSwap
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
502 EXPECT_FALSE(scheduler->RedrawPending()); 486 EXPECT_FALSE(scheduler->RedrawPending());
503 EXPECT_TRUE(client.needs_begin_frame()); 487 EXPECT_TRUE(client.needs_begin_frame());
504 } 488 }
505 489
506 class SchedulerClientThatSetNeedsCommitInsideDraw : public FakeSchedulerClient { 490 class SchedulerClientThatSetNeedsCommitInsideDraw : public FakeSchedulerClient {
507 public: 491 public:
508 SchedulerClientThatSetNeedsCommitInsideDraw() 492 SchedulerClientThatSetNeedsCommitInsideDraw()
509 : set_needs_commit_on_next_draw_(false) {} 493 : set_needs_commit_on_next_draw_(false) {}
510 494
511 virtual void ScheduledActionSendBeginMainFrame() OVERRIDE {} 495 virtual void ScheduledActionSendBeginMainFrame() OVERRIDE {}
512 virtual DrawSwapReadbackResult ScheduledActionDrawAndSwapIfPossible() 496 virtual DrawResult ScheduledActionDrawAndSwapIfPossible()
513 OVERRIDE { 497 OVERRIDE {
514 // Only SetNeedsCommit the first time this is called 498 // Only SetNeedsCommit the first time this is called
515 if (set_needs_commit_on_next_draw_) { 499 if (set_needs_commit_on_next_draw_) {
516 scheduler_->SetNeedsCommit(); 500 scheduler_->SetNeedsCommit();
517 set_needs_commit_on_next_draw_ = false; 501 set_needs_commit_on_next_draw_ = false;
518 } 502 }
519 return FakeSchedulerClient::ScheduledActionDrawAndSwapIfPossible(); 503 return FakeSchedulerClient::ScheduledActionDrawAndSwapIfPossible();
520 } 504 }
521 505
522 virtual DrawSwapReadbackResult ScheduledActionDrawAndSwapForced() OVERRIDE { 506 virtual DrawResult ScheduledActionDrawAndSwapForced() OVERRIDE {
523 NOTREACHED(); 507 NOTREACHED();
524 bool did_request_swap = false; 508 return DRAW_SUCCESS;
525 bool did_readback = false;
526 return DrawSwapReadbackResult(
527 DrawSwapReadbackResult::DRAW_SUCCESS, did_request_swap, did_readback);
528 } 509 }
529 510
530 virtual void ScheduledActionCommit() OVERRIDE {} 511 virtual void ScheduledActionCommit() OVERRIDE {}
531 virtual void ScheduledActionBeginOutputSurfaceCreation() OVERRIDE {} 512 virtual void ScheduledActionBeginOutputSurfaceCreation() OVERRIDE {}
532 virtual void DidAnticipatedDrawTimeChange(base::TimeTicks) OVERRIDE {} 513 virtual void DidAnticipatedDrawTimeChange(base::TimeTicks) OVERRIDE {}
533 514
534 void SetNeedsCommitOnNextDraw() { set_needs_commit_on_next_draw_ = true; } 515 void SetNeedsCommitOnNextDraw() { set_needs_commit_on_next_draw_ = true; }
535 516
536 private: 517 private:
537 bool set_needs_commit_on_next_draw_; 518 bool set_needs_commit_on_next_draw_;
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
706 687
707 // The replacement commit comes in after 2 readbacks. 688 // The replacement commit comes in after 2 readbacks.
708 client.Reset(); 689 client.Reset();
709 scheduler->NotifyBeginMainFrameStarted(); 690 scheduler->NotifyBeginMainFrameStarted();
710 scheduler->NotifyReadyToCommit(); 691 scheduler->NotifyReadyToCommit();
711 } 692 }
712 693
713 694
714 class SchedulerClientNeedsManageTilesInDraw : public FakeSchedulerClient { 695 class SchedulerClientNeedsManageTilesInDraw : public FakeSchedulerClient {
715 public: 696 public:
716 virtual DrawSwapReadbackResult ScheduledActionDrawAndSwapIfPossible() 697 virtual DrawResult ScheduledActionDrawAndSwapIfPossible()
717 OVERRIDE { 698 OVERRIDE {
718 scheduler_->SetNeedsManageTiles(); 699 scheduler_->SetNeedsManageTiles();
719 return FakeSchedulerClient::ScheduledActionDrawAndSwapIfPossible(); 700 return FakeSchedulerClient::ScheduledActionDrawAndSwapIfPossible();
720 } 701 }
721 }; 702 };
722 703
723 // Test manage tiles is independant of draws. 704 // Test manage tiles is independant of draws.
724 TEST(SchedulerTest, ManageTiles) { 705 TEST(SchedulerTest, ManageTiles) {
725 SchedulerClientNeedsManageTilesInDraw client; 706 SchedulerClientNeedsManageTilesInDraw client;
726 SchedulerSettings default_scheduler_settings; 707 SchedulerSettings default_scheduler_settings;
(...skipping 758 matching lines...) Expand 10 before | Expand all | Expand 10 after
1485 TEST(SchedulerTest, 1466 TEST(SchedulerTest,
1486 SyntheticBeginFrames_And_VSyncThrottlingDisabled_SwapThrottled) { 1467 SyntheticBeginFrames_And_VSyncThrottlingDisabled_SwapThrottled) {
1487 bool begin_frame_scheduling_enabled = false; 1468 bool begin_frame_scheduling_enabled = false;
1488 bool throttle_frame_production = false; 1469 bool throttle_frame_production = false;
1489 BeginFramesNotFromClient_SwapThrottled(begin_frame_scheduling_enabled, 1470 BeginFramesNotFromClient_SwapThrottled(begin_frame_scheduling_enabled,
1490 throttle_frame_production); 1471 throttle_frame_production);
1491 } 1472 }
1492 1473
1493 } // namespace 1474 } // namespace
1494 } // namespace cc 1475 } // namespace cc
OLDNEW
« no previous file with comments | « cc/scheduler/scheduler_state_machine_unittest.cc ('k') | cc/test/layer_tree_test.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698