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

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

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

Powered by Google App Engine
This is Rietveld 408576698