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

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

Issue 2822143003: Remove ForceReclaimResources (Closed)
Patch Set: Rebase. Created 3 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 <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <algorithm> 10 #include <algorithm>
(...skipping 3068 matching lines...) Expand 10 before | Expand all | Expand 10 after
3079 class OnDrawCompositorFrameSink : public TestCompositorFrameSink { 3079 class OnDrawCompositorFrameSink : public TestCompositorFrameSink {
3080 public: 3080 public:
3081 explicit OnDrawCompositorFrameSink( 3081 explicit OnDrawCompositorFrameSink(
3082 scoped_refptr<ContextProvider> compositor_context_provider, 3082 scoped_refptr<ContextProvider> compositor_context_provider,
3083 scoped_refptr<ContextProvider> worker_context_provider, 3083 scoped_refptr<ContextProvider> worker_context_provider,
3084 SharedBitmapManager* shared_bitmap_manager, 3084 SharedBitmapManager* shared_bitmap_manager,
3085 gpu::GpuMemoryBufferManager* gpu_memory_buffer_manager, 3085 gpu::GpuMemoryBufferManager* gpu_memory_buffer_manager,
3086 const RendererSettings& renderer_settings, 3086 const RendererSettings& renderer_settings,
3087 base::SingleThreadTaskRunner* task_runner, 3087 base::SingleThreadTaskRunner* task_runner,
3088 bool synchronous_composite, 3088 bool synchronous_composite,
3089 bool force_disable_reclaim_resources,
3090 base::Closure invalidate_callback) 3089 base::Closure invalidate_callback)
3091 : TestCompositorFrameSink(std::move(compositor_context_provider), 3090 : TestCompositorFrameSink(std::move(compositor_context_provider),
3092 std::move(worker_context_provider), 3091 std::move(worker_context_provider),
3093 shared_bitmap_manager, 3092 shared_bitmap_manager,
3094 gpu_memory_buffer_manager, 3093 gpu_memory_buffer_manager,
3095 renderer_settings, 3094 renderer_settings,
3096 task_runner, 3095 task_runner,
3097 synchronous_composite, 3096 synchronous_composite),
3098 force_disable_reclaim_resources),
3099 invalidate_callback_(std::move(invalidate_callback)) {} 3097 invalidate_callback_(std::move(invalidate_callback)) {}
3100 3098
3101 // TestCompositorFrameSink overrides. 3099 // TestCompositorFrameSink overrides.
3102 void Invalidate() override { invalidate_callback_.Run(); } 3100 void Invalidate() override { invalidate_callback_.Run(); }
3103 3101
3104 void OnDraw(bool resourceless_software_draw) { 3102 void OnDraw(bool resourceless_software_draw) {
3105 gfx::Transform identity; 3103 gfx::Transform identity;
3106 gfx::Rect empty_rect; 3104 gfx::Rect empty_rect;
3107 client_->OnDraw(identity, empty_rect, resourceless_software_draw); 3105 client_->OnDraw(identity, empty_rect, resourceless_software_draw);
3108 } 3106 }
(...skipping 15 matching lines...) Expand all
3124 scoped_refptr<ContextProvider> worker_context_provider) override { 3122 scoped_refptr<ContextProvider> worker_context_provider) override {
3125 auto on_draw_callback = base::Bind( 3123 auto on_draw_callback = base::Bind(
3126 &LayerTreeHostTestAbortedCommitDoesntStallSynchronousCompositor:: 3124 &LayerTreeHostTestAbortedCommitDoesntStallSynchronousCompositor::
3127 CallOnDraw, 3125 CallOnDraw,
3128 base::Unretained(this)); 3126 base::Unretained(this));
3129 auto frame_sink = base::MakeUnique<OnDrawCompositorFrameSink>( 3127 auto frame_sink = base::MakeUnique<OnDrawCompositorFrameSink>(
3130 compositor_context_provider, std::move(worker_context_provider), 3128 compositor_context_provider, std::move(worker_context_provider),
3131 shared_bitmap_manager(), gpu_memory_buffer_manager(), 3129 shared_bitmap_manager(), gpu_memory_buffer_manager(),
3132 layer_tree_host()->GetSettings().renderer_settings, 3130 layer_tree_host()->GetSettings().renderer_settings,
3133 ImplThreadTaskRunner(), false /* synchronous_composite */, 3131 ImplThreadTaskRunner(), false /* synchronous_composite */,
3134 false /* force_disable_reclaim_resources */,
3135 std::move(on_draw_callback)); 3132 std::move(on_draw_callback));
3136 compositor_frame_sink_ = frame_sink.get(); 3133 compositor_frame_sink_ = frame_sink.get();
3137 return std::move(frame_sink); 3134 return std::move(frame_sink);
3138 } 3135 }
3139 3136
3140 void CallOnDraw() { 3137 void CallOnDraw() {
3141 if (!TestEnded()) { 3138 if (!TestEnded()) {
3142 // Synchronous compositor does not draw unless told to do so by the output 3139 // Synchronous compositor does not draw unless told to do so by the output
3143 // surface. But it needs to be done on a new stack frame. 3140 // surface. But it needs to be done on a new stack frame.
3144 bool resourceless_software_draw = false; 3141 bool resourceless_software_draw = false;
(...skipping 2596 matching lines...) Expand 10 before | Expand all | Expand 10 after
5741 settings->single_thread_proxy_scheduler = false; 5738 settings->single_thread_proxy_scheduler = false;
5742 settings->use_zero_copy = true; 5739 settings->use_zero_copy = true;
5743 } 5740 }
5744 5741
5745 std::unique_ptr<TestCompositorFrameSink> CreateCompositorFrameSink( 5742 std::unique_ptr<TestCompositorFrameSink> CreateCompositorFrameSink(
5746 scoped_refptr<ContextProvider> compositor_context_provider, 5743 scoped_refptr<ContextProvider> compositor_context_provider,
5747 scoped_refptr<ContextProvider> worker_context_provider) override { 5744 scoped_refptr<ContextProvider> worker_context_provider) override {
5748 bool synchronous_composite = 5745 bool synchronous_composite =
5749 !HasImplThread() && 5746 !HasImplThread() &&
5750 !layer_tree_host()->GetSettings().single_thread_proxy_scheduler; 5747 !layer_tree_host()->GetSettings().single_thread_proxy_scheduler;
5751 // Relaiming resources is parameterized for this test.
5752 bool force_disable_reclaim_resources = !reclaim_resources_;
5753 return base::MakeUnique<TestCompositorFrameSink>( 5748 return base::MakeUnique<TestCompositorFrameSink>(
5754 compositor_context_provider, std::move(worker_context_provider), 5749 compositor_context_provider, std::move(worker_context_provider),
5755 shared_bitmap_manager(), gpu_memory_buffer_manager(), 5750 shared_bitmap_manager(), gpu_memory_buffer_manager(),
5756 layer_tree_host()->GetSettings().renderer_settings, 5751 layer_tree_host()->GetSettings().renderer_settings,
5757 ImplThreadTaskRunner(), synchronous_composite, 5752 ImplThreadTaskRunner(), synchronous_composite);
5758 force_disable_reclaim_resources);
5759 } 5753 }
5760 5754
5761 void BeginTest() override { 5755 void BeginTest() override {
5762 // Successful composite. 5756 // Successful composite.
5763 std::unique_ptr<SwapPromise> swap_promise0( 5757 std::unique_ptr<SwapPromise> swap_promise0(
5764 new TestSwapPromise(&swap_promise_result_[0])); 5758 new TestSwapPromise(&swap_promise_result_[0]));
5765 layer_tree_host()->GetSwapPromiseManager()->QueueSwapPromise( 5759 layer_tree_host()->GetSwapPromiseManager()->QueueSwapPromise(
5766 std::move(swap_promise0)); 5760 std::move(swap_promise0));
5767 layer_tree_host()->Composite(base::TimeTicks::Now()); 5761 layer_tree_host()->Composite(base::TimeTicks::Now());
5768 5762
(...skipping 26 matching lines...) Expand all
5795 EXPECT_EQ(3, commit_count_); 5789 EXPECT_EQ(3, commit_count_);
5796 5790
5797 // Initial swap promise should have succeded. 5791 // Initial swap promise should have succeded.
5798 { 5792 {
5799 base::AutoLock lock(swap_promise_result_[0].lock); 5793 base::AutoLock lock(swap_promise_result_[0].lock);
5800 EXPECT_TRUE(swap_promise_result_[0].did_swap_called); 5794 EXPECT_TRUE(swap_promise_result_[0].did_swap_called);
5801 EXPECT_FALSE(swap_promise_result_[0].did_not_swap_called); 5795 EXPECT_FALSE(swap_promise_result_[0].did_not_swap_called);
5802 EXPECT_TRUE(swap_promise_result_[0].dtor_called); 5796 EXPECT_TRUE(swap_promise_result_[0].dtor_called);
5803 } 5797 }
5804 5798
5805 // Second swap promise fails to swap if not reclaiming resources from the 5799 // Second swap promise fails to swap.
5806 // Display.
5807 { 5800 {
5808 base::AutoLock lock(swap_promise_result_[1].lock); 5801 base::AutoLock lock(swap_promise_result_[1].lock);
5809 EXPECT_TRUE(swap_promise_result_[1].did_activate_called); 5802 EXPECT_TRUE(swap_promise_result_[1].did_activate_called);
5810 if (!reclaim_resources_) { 5803 EXPECT_FALSE(swap_promise_result_[1].did_swap_called);
5811 EXPECT_FALSE(swap_promise_result_[1].did_swap_called); 5804 EXPECT_TRUE(swap_promise_result_[1].did_not_swap_called);
5812 EXPECT_TRUE(swap_promise_result_[1].did_not_swap_called); 5805 EXPECT_EQ(SwapPromise::SWAP_FAILS, swap_promise_result_[1].reason);
5813 EXPECT_EQ(SwapPromise::SWAP_FAILS, swap_promise_result_[1].reason);
5814 } else {
5815 EXPECT_TRUE(swap_promise_result_[1].did_swap_called);
5816 EXPECT_FALSE(swap_promise_result_[1].did_not_swap_called);
5817 }
5818 EXPECT_TRUE(swap_promise_result_[1].dtor_called); 5806 EXPECT_TRUE(swap_promise_result_[1].dtor_called);
5819 } 5807 }
5820 5808
5821 // Third swap promises also fails to swap (and draw). 5809 // Third swap promises also fails to swap (and draw).
5822 { 5810 {
5823 base::AutoLock lock(swap_promise_result_[2].lock); 5811 base::AutoLock lock(swap_promise_result_[2].lock);
5824 EXPECT_TRUE(swap_promise_result_[2].did_activate_called); 5812 EXPECT_TRUE(swap_promise_result_[2].did_activate_called);
5825 EXPECT_FALSE(swap_promise_result_[2].did_swap_called); 5813 EXPECT_FALSE(swap_promise_result_[2].did_swap_called);
5826 EXPECT_TRUE(swap_promise_result_[2].did_not_swap_called); 5814 EXPECT_TRUE(swap_promise_result_[2].did_not_swap_called);
5827 EXPECT_EQ(SwapPromise::SWAP_FAILS, swap_promise_result_[2].reason); 5815 EXPECT_EQ(SwapPromise::SWAP_FAILS, swap_promise_result_[2].reason);
5828 EXPECT_TRUE(swap_promise_result_[2].dtor_called); 5816 EXPECT_TRUE(swap_promise_result_[2].dtor_called);
5829 } 5817 }
5830 } 5818 }
5831 5819
5832 bool reclaim_resources_;
5833 int commit_count_ = 0; 5820 int commit_count_ = 0;
5834 TestSwapPromiseResult swap_promise_result_[3]; 5821 TestSwapPromiseResult swap_promise_result_[3];
5835 }; 5822 };
5836 5823
5837 TEST_F(LayerTreeHostTestSynchronousCompositeSwapPromise, NoReclaim) { 5824 // Synchronous composite is a single-threaded only feature.
5838 reclaim_resources_ = false; 5825 SINGLE_THREAD_TEST_F(LayerTreeHostTestSynchronousCompositeSwapPromise);
5839 RunTest(CompositorMode::SINGLE_THREADED);
5840 }
5841
5842 TEST_F(LayerTreeHostTestSynchronousCompositeSwapPromise, Reclaim) {
5843 reclaim_resources_ = true;
5844 RunTest(CompositorMode::SINGLE_THREADED);
5845 }
5846 5826
5847 // Make sure page scale and top control deltas are applied to the client even 5827 // Make sure page scale and top control deltas are applied to the client even
5848 // when the LayerTreeHost doesn't have a root layer. 5828 // when the LayerTreeHost doesn't have a root layer.
5849 class LayerTreeHostAcceptsDeltasFromImplWithoutRootLayer 5829 class LayerTreeHostAcceptsDeltasFromImplWithoutRootLayer
5850 : public LayerTreeHostTest { 5830 : public LayerTreeHostTest {
5851 public: 5831 public:
5852 LayerTreeHostAcceptsDeltasFromImplWithoutRootLayer() 5832 LayerTreeHostAcceptsDeltasFromImplWithoutRootLayer()
5853 : deltas_sent_to_client_(false) {} 5833 : deltas_sent_to_client_(false) {}
5854 5834
5855 void BeginTest() override { 5835 void BeginTest() override {
(...skipping 1659 matching lines...) Expand 10 before | Expand all | Expand 10 after
7515 DCHECK_EQ(hud->scroll_tree_index(), root_layer->scroll_tree_index()); 7495 DCHECK_EQ(hud->scroll_tree_index(), root_layer->scroll_tree_index());
7516 } 7496 }
7517 7497
7518 void AfterTest() override {} 7498 void AfterTest() override {}
7519 }; 7499 };
7520 7500
7521 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostTestHudLayerWithLayerLists); 7501 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostTestHudLayerWithLayerLists);
7522 7502
7523 } // namespace 7503 } // namespace
7524 } // namespace cc 7504 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698