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

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: 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 1084 matching lines...) Expand 10 before | Expand all | Expand 10 after
1095 layer_tree_host()->set_background_color(SK_ColorGRAY); 1095 layer_tree_host()->set_background_color(SK_ColorGRAY);
1096 1096
1097 PostSetNeedsCommitToMainThread(); 1097 PostSetNeedsCommitToMainThread();
1098 } 1098 }
1099 1099
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 WillBeginFrameOnThread(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) 1110 if (frame_count_with_pending_tree_ == 2)
1111 impl->BlockNotifyReadyToActivateForTesting(false); 1111 impl->BlockNotifyReadyToActivateForTesting(false);
1112 } 1112 }
1113 1113
1114 virtual void DidBeginImplFrameOnThread(LayerTreeHostImpl* impl, 1114 virtual void DidBeginFrameOnThread(LayerTreeHostImpl* impl,
1115 const BeginFrameArgs& args) OVERRIDE { 1115 const BeginFrameArgs& args) OVERRIDE {
1116 if (frame_count_with_pending_tree_ == 1) { 1116 if (frame_count_with_pending_tree_ == 1) {
1117 EXPECT_EQ(first_frame_time_.ToInternalValue(), 0); 1117 EXPECT_EQ(first_frame_time_.ToInternalValue(), 0);
1118 first_frame_time_ = impl->CurrentFrameTimeTicks(); 1118 first_frame_time_ = impl->CurrentFrameTimeTicks();
1119 } 1119 }
1120 } 1120 }
1121 1121
1122 virtual void DrawLayersOnThread(LayerTreeHostImpl* impl) OVERRIDE { 1122 virtual void DrawLayersOnThread(LayerTreeHostImpl* impl) OVERRIDE {
1123 if (frame_count_with_pending_tree_ > 1) { 1123 if (frame_count_with_pending_tree_ > 1) {
1124 EXPECT_NE(first_frame_time_.ToInternalValue(), 0); 1124 EXPECT_NE(first_frame_time_.ToInternalValue(), 0);
1125 EXPECT_NE(first_frame_time_.ToInternalValue(), 1125 EXPECT_NE(first_frame_time_.ToInternalValue(),
(...skipping 1531 matching lines...) Expand 10 before | Expand all | Expand 10 after
2657 break; 2657 break;
2658 } 2658 }
2659 } 2659 }
2660 2660
2661 private: 2661 private:
2662 NotificationClient client_; 2662 NotificationClient client_;
2663 }; 2663 };
2664 2664
2665 SINGLE_THREAD_TEST_F(LayerTreeHostTestLCDNotification); 2665 SINGLE_THREAD_TEST_F(LayerTreeHostTestLCDNotification);
2666 2666
2667 // Verify that the BeginImplFrame notification is used to initiate rendering. 2667 // Verify that the BeginFrame notification is used to initiate rendering.
2668 class LayerTreeHostTestBeginImplFrameNotification : public LayerTreeHostTest { 2668 class LayerTreeHostTestBeginFrameNotification : public LayerTreeHostTest {
2669 public: 2669 public:
2670 virtual void InitializeSettings(LayerTreeSettings* settings) OVERRIDE { 2670 virtual void InitializeSettings(LayerTreeSettings* settings) OVERRIDE {
2671 settings->begin_impl_frame_scheduling_enabled = true; 2671 settings->begin_impl_frame_scheduling_enabled = true;
2672 } 2672 }
2673 2673
2674 virtual void BeginTest() OVERRIDE { 2674 virtual void BeginTest() OVERRIDE {
2675 // This will trigger a SetNeedsBeginImplFrame which will trigger a 2675 // This will trigger a SetNeedsBeginFrame which will trigger a
2676 // BeginImplFrame. 2676 // BeginFrame.
2677 PostSetNeedsCommitToMainThread(); 2677 PostSetNeedsCommitToMainThread();
2678 } 2678 }
2679 2679
2680 virtual DrawSwapReadbackResult::DrawResult PrepareToDrawOnThread( 2680 virtual DrawSwapReadbackResult::DrawResult PrepareToDrawOnThread(
2681 LayerTreeHostImpl* host_impl, 2681 LayerTreeHostImpl* host_impl,
2682 LayerTreeHostImpl::FrameData* frame, 2682 LayerTreeHostImpl::FrameData* frame,
2683 DrawSwapReadbackResult::DrawResult draw_result) OVERRIDE { 2683 DrawSwapReadbackResult::DrawResult draw_result) OVERRIDE {
2684 EndTest(); 2684 EndTest();
2685 return DrawSwapReadbackResult::DRAW_SUCCESS; 2685 return DrawSwapReadbackResult::DRAW_SUCCESS;
2686 } 2686 }
2687 2687
2688 virtual void AfterTest() OVERRIDE {} 2688 virtual void AfterTest() OVERRIDE {}
2689 2689
2690 private: 2690 private:
2691 base::TimeTicks frame_time_; 2691 base::TimeTicks frame_time_;
2692 }; 2692 };
2693 2693
2694 MULTI_THREAD_TEST_F(LayerTreeHostTestBeginImplFrameNotification); 2694 MULTI_THREAD_TEST_F(LayerTreeHostTestBeginFrameNotification);
2695 2695
2696 class LayerTreeHostTestBeginImplFrameNotificationShutdownWhileEnabled 2696 class LayerTreeHostTestBeginFrameNotificationShutdownWhileEnabled
2697 : public LayerTreeHostTest { 2697 : public LayerTreeHostTest {
2698 public: 2698 public:
2699 virtual void InitializeSettings(LayerTreeSettings* settings) OVERRIDE { 2699 virtual void InitializeSettings(LayerTreeSettings* settings) OVERRIDE {
2700 settings->begin_impl_frame_scheduling_enabled = true; 2700 settings->begin_impl_frame_scheduling_enabled = true;
2701 settings->using_synchronous_renderer_compositor = true; 2701 settings->using_synchronous_renderer_compositor = true;
2702 } 2702 }
2703 2703
2704 virtual void BeginTest() OVERRIDE { PostSetNeedsCommitToMainThread(); } 2704 virtual void BeginTest() OVERRIDE { PostSetNeedsCommitToMainThread(); }
2705 2705
2706 virtual void CommitCompleteOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { 2706 virtual void CommitCompleteOnThread(LayerTreeHostImpl* host_impl) OVERRIDE {
2707 // The BeginImplFrame notification is turned off now but will get enabled 2707 // The BeginFrame notification is turned off now but will get enabled
2708 // once we return. End test while it's enabled. 2708 // once we return. End test while it's enabled.
2709 ImplThreadTaskRunner()->PostTask( 2709 ImplThreadTaskRunner()->PostTask(
2710 FROM_HERE, 2710 FROM_HERE,
2711 base::Bind(&LayerTreeHostTestBeginImplFrameNotification::EndTest, 2711 base::Bind(&LayerTreeHostTestBeginFrameNotification::EndTest,
2712 base::Unretained(this))); 2712 base::Unretained(this)));
2713 } 2713 }
2714 2714
2715 virtual void AfterTest() OVERRIDE {} 2715 virtual void AfterTest() OVERRIDE {}
2716 }; 2716 };
2717 2717
2718 MULTI_THREAD_TEST_F( 2718 MULTI_THREAD_TEST_F(
2719 LayerTreeHostTestBeginImplFrameNotificationShutdownWhileEnabled); 2719 LayerTreeHostTestBeginFrameNotificationShutdownWhileEnabled);
2720 2720
2721 class LayerTreeHostTestAbortedCommitDoesntStall : public LayerTreeHostTest { 2721 class LayerTreeHostTestAbortedCommitDoesntStall : public LayerTreeHostTest {
2722 protected: 2722 protected:
2723 LayerTreeHostTestAbortedCommitDoesntStall() 2723 LayerTreeHostTestAbortedCommitDoesntStall()
2724 : commit_count_(0), commit_abort_count_(0), commit_complete_count_(0) {} 2724 : commit_count_(0), commit_abort_count_(0), commit_complete_count_(0) {}
2725 2725
2726 virtual void InitializeSettings(LayerTreeSettings* settings) OVERRIDE { 2726 virtual void InitializeSettings(LayerTreeSettings* settings) OVERRIDE {
2727 settings->begin_impl_frame_scheduling_enabled = true; 2727 settings->begin_impl_frame_scheduling_enabled = true;
2728 } 2728 }
2729 2729
(...skipping 2473 matching lines...) Expand 10 before | Expand all | Expand 10 after
5203 } 5203 }
5204 5204
5205 virtual void AfterTest() OVERRIDE {} 5205 virtual void AfterTest() OVERRIDE {}
5206 5206
5207 FakeContentLayerClient client_; 5207 FakeContentLayerClient client_;
5208 }; 5208 };
5209 5209
5210 MULTI_THREAD_TEST_F(LayerTreeHostTestGpuRasterizationSetting); 5210 MULTI_THREAD_TEST_F(LayerTreeHostTestGpuRasterizationSetting);
5211 5211
5212 } // namespace cc 5212 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698