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

Side by Side Diff: cc/trees/layer_tree_host_unittest.cc

Issue 218633010: cc: Handle retroactive BeginFrames in the Scheduler. (Closed) Base URL: http://git.chromium.org/chromium/src.git@compositorVsyncDisable
Patch Set: rebase on pending patches Created 6 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
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/trees/layer_tree_host.h" 5 #include "cc/trees/layer_tree_host.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/auto_reset.h" 9 #include "base/auto_reset.h"
10 #include "base/synchronization/lock.h" 10 #include "base/synchronization/lock.h"
(...skipping 1089 matching lines...) Expand 10 before | Expand all | Expand 10 after
1100 virtual void BeginCommitOnThread(LayerTreeHostImpl* impl) OVERRIDE { 1100 virtual void BeginCommitOnThread(LayerTreeHostImpl* impl) OVERRIDE {
1101 EXPECT_EQ(frame_count_with_pending_tree_, 0); 1101 EXPECT_EQ(frame_count_with_pending_tree_, 0);
1102 impl->BlockNotifyReadyToActivateForTesting(true); 1102 impl->BlockNotifyReadyToActivateForTesting(true);
1103 } 1103 }
1104 1104
1105 virtual void WillBeginImplFrameOnThread(LayerTreeHostImpl* impl, 1105 virtual void WillBeginImplFrameOnThread(LayerTreeHostImpl* impl,
1106 const BeginFrameArgs& args) OVERRIDE { 1106 const BeginFrameArgs& args) OVERRIDE {
1107 if (impl->pending_tree()) 1107 if (impl->pending_tree())
1108 frame_count_with_pending_tree_++; 1108 frame_count_with_pending_tree_++;
1109 1109
1110 if (frame_count_with_pending_tree_ == 2)
1111 impl->BlockNotifyReadyToActivateForTesting(false);
1112 }
1113
1114 virtual void DidBeginImplFrameOnThread(LayerTreeHostImpl* impl,
1115 const BeginFrameArgs& args) OVERRIDE {
1116 if (frame_count_with_pending_tree_ == 1) { 1110 if (frame_count_with_pending_tree_ == 1) {
1117 EXPECT_EQ(first_frame_time_.ToInternalValue(), 0); 1111 EXPECT_EQ(first_frame_time_.ToInternalValue(), 0);
1118 first_frame_time_ = impl->CurrentFrameTimeTicks(); 1112 first_frame_time_ = impl->CurrentFrameTimeTicks();
1113 } else if (frame_count_with_pending_tree_ == 2) {
1114 impl->BlockNotifyReadyToActivateForTesting(false);
1119 } 1115 }
1120 } 1116 }
1121 1117
1122 virtual void DrawLayersOnThread(LayerTreeHostImpl* impl) OVERRIDE { 1118 virtual void DrawLayersOnThread(LayerTreeHostImpl* impl) OVERRIDE {
1123 if (frame_count_with_pending_tree_ > 1) { 1119 if (frame_count_with_pending_tree_ > 1) {
1124 EXPECT_NE(first_frame_time_.ToInternalValue(), 0); 1120 EXPECT_NE(first_frame_time_.ToInternalValue(), 0);
1125 EXPECT_NE(first_frame_time_.ToInternalValue(), 1121 EXPECT_NE(first_frame_time_.ToInternalValue(),
1126 impl->CurrentFrameTimeTicks().ToInternalValue()); 1122 impl->CurrentFrameTimeTicks().ToInternalValue());
1127 EndTest(); 1123 EndTest();
1128 return; 1124 return;
(...skipping 1528 matching lines...) Expand 10 before | Expand all | Expand 10 after
2657 break; 2653 break;
2658 } 2654 }
2659 } 2655 }
2660 2656
2661 private: 2657 private:
2662 NotificationClient client_; 2658 NotificationClient client_;
2663 }; 2659 };
2664 2660
2665 SINGLE_THREAD_TEST_F(LayerTreeHostTestLCDNotification); 2661 SINGLE_THREAD_TEST_F(LayerTreeHostTestLCDNotification);
2666 2662
2667 // Verify that the BeginImplFrame notification is used to initiate rendering. 2663 // Verify that the BeginFrame notification is used to initiate rendering.
2668 class LayerTreeHostTestBeginImplFrameNotification : public LayerTreeHostTest { 2664 class LayerTreeHostTestBeginFrameNotification : public LayerTreeHostTest {
2669 public: 2665 public:
2670 virtual void InitializeSettings(LayerTreeSettings* settings) OVERRIDE { 2666 virtual void InitializeSettings(LayerTreeSettings* settings) OVERRIDE {
2671 settings->begin_impl_frame_scheduling_enabled = true; 2667 settings->begin_impl_frame_scheduling_enabled = true;
2672 } 2668 }
2673 2669
2674 virtual void BeginTest() OVERRIDE { 2670 virtual void BeginTest() OVERRIDE {
2675 // This will trigger a SetNeedsBeginImplFrame which will trigger a 2671 // This will trigger a SetNeedsBeginFrame which will trigger a
2676 // BeginImplFrame. 2672 // BeginFrame.
2677 PostSetNeedsCommitToMainThread(); 2673 PostSetNeedsCommitToMainThread();
2678 } 2674 }
2679 2675
2680 virtual DrawSwapReadbackResult::DrawResult PrepareToDrawOnThread( 2676 virtual DrawSwapReadbackResult::DrawResult PrepareToDrawOnThread(
2681 LayerTreeHostImpl* host_impl, 2677 LayerTreeHostImpl* host_impl,
2682 LayerTreeHostImpl::FrameData* frame, 2678 LayerTreeHostImpl::FrameData* frame,
2683 DrawSwapReadbackResult::DrawResult draw_result) OVERRIDE { 2679 DrawSwapReadbackResult::DrawResult draw_result) OVERRIDE {
2684 EndTest(); 2680 EndTest();
2685 return DrawSwapReadbackResult::DRAW_SUCCESS; 2681 return DrawSwapReadbackResult::DRAW_SUCCESS;
2686 } 2682 }
2687 2683
2688 virtual void AfterTest() OVERRIDE {} 2684 virtual void AfterTest() OVERRIDE {}
2689 2685
2690 private: 2686 private:
2691 base::TimeTicks frame_time_; 2687 base::TimeTicks frame_time_;
2692 }; 2688 };
2693 2689
2694 MULTI_THREAD_TEST_F(LayerTreeHostTestBeginImplFrameNotification); 2690 MULTI_THREAD_TEST_F(LayerTreeHostTestBeginFrameNotification);
2695 2691
2696 class LayerTreeHostTestBeginImplFrameNotificationShutdownWhileEnabled 2692 class LayerTreeHostTestBeginFrameNotificationShutdownWhileEnabled
2697 : public LayerTreeHostTest { 2693 : public LayerTreeHostTest {
2698 public: 2694 public:
2699 virtual void InitializeSettings(LayerTreeSettings* settings) OVERRIDE { 2695 virtual void InitializeSettings(LayerTreeSettings* settings) OVERRIDE {
2700 settings->begin_impl_frame_scheduling_enabled = true; 2696 settings->begin_impl_frame_scheduling_enabled = true;
2701 settings->using_synchronous_renderer_compositor = true; 2697 settings->using_synchronous_renderer_compositor = true;
2702 } 2698 }
2703 2699
2704 virtual void BeginTest() OVERRIDE { PostSetNeedsCommitToMainThread(); } 2700 virtual void BeginTest() OVERRIDE { PostSetNeedsCommitToMainThread(); }
2705 2701
2706 virtual void CommitCompleteOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { 2702 virtual void CommitCompleteOnThread(LayerTreeHostImpl* host_impl) OVERRIDE {
2707 // The BeginImplFrame notification is turned off now but will get enabled 2703 // The BeginFrame notification is turned off now but will get enabled
2708 // once we return. End test while it's enabled. 2704 // once we return. End test while it's enabled.
2709 ImplThreadTaskRunner()->PostTask( 2705 ImplThreadTaskRunner()->PostTask(
2710 FROM_HERE, 2706 FROM_HERE,
2711 base::Bind(&LayerTreeHostTestBeginImplFrameNotification::EndTest, 2707 base::Bind(&LayerTreeHostTestBeginFrameNotification::EndTest,
2712 base::Unretained(this))); 2708 base::Unretained(this)));
2713 } 2709 }
2714 2710
2715 virtual void AfterTest() OVERRIDE {} 2711 virtual void AfterTest() OVERRIDE {}
2716 }; 2712 };
2717 2713
2718 MULTI_THREAD_TEST_F( 2714 MULTI_THREAD_TEST_F(
2719 LayerTreeHostTestBeginImplFrameNotificationShutdownWhileEnabled); 2715 LayerTreeHostTestBeginFrameNotificationShutdownWhileEnabled);
2720 2716
2721 class LayerTreeHostTestAbortedCommitDoesntStall : public LayerTreeHostTest { 2717 class LayerTreeHostTestAbortedCommitDoesntStall : public LayerTreeHostTest {
2722 protected: 2718 protected:
2723 LayerTreeHostTestAbortedCommitDoesntStall() 2719 LayerTreeHostTestAbortedCommitDoesntStall()
2724 : commit_count_(0), commit_abort_count_(0), commit_complete_count_(0) {} 2720 : commit_count_(0), commit_abort_count_(0), commit_complete_count_(0) {}
2725 2721
2726 virtual void InitializeSettings(LayerTreeSettings* settings) OVERRIDE { 2722 virtual void InitializeSettings(LayerTreeSettings* settings) OVERRIDE {
2727 settings->begin_impl_frame_scheduling_enabled = true; 2723 settings->begin_impl_frame_scheduling_enabled = true;
2728 } 2724 }
2729 2725
(...skipping 2473 matching lines...) Expand 10 before | Expand all | Expand 10 after
5203 } 5199 }
5204 5200
5205 virtual void AfterTest() OVERRIDE {} 5201 virtual void AfterTest() OVERRIDE {}
5206 5202
5207 FakeContentLayerClient client_; 5203 FakeContentLayerClient client_;
5208 }; 5204 };
5209 5205
5210 MULTI_THREAD_TEST_F(LayerTreeHostTestGpuRasterizationSetting); 5206 MULTI_THREAD_TEST_F(LayerTreeHostTestGpuRasterizationSetting);
5211 5207
5212 } // namespace cc 5208 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698