OLD | NEW |
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_impl.h" | 5 #include "cc/trees/layer_tree_host_impl.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include <algorithm> | 9 #include <algorithm> |
10 #include <cmath> | 10 #include <cmath> |
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
112 settings.renderer_settings.texture_id_allocation_chunk_size = 1; | 112 settings.renderer_settings.texture_id_allocation_chunk_size = 1; |
113 settings.gpu_rasterization_enabled = true; | 113 settings.gpu_rasterization_enabled = true; |
114 settings.verify_clip_tree_calculations = true; | 114 settings.verify_clip_tree_calculations = true; |
115 return settings; | 115 return settings; |
116 } | 116 } |
117 | 117 |
118 void SetUp() override { | 118 void SetUp() override { |
119 CreateHostImpl(DefaultSettings(), CreateOutputSurface()); | 119 CreateHostImpl(DefaultSettings(), CreateOutputSurface()); |
120 } | 120 } |
121 | 121 |
122 void TearDown() override {} | 122 void TearDown() override { |
| 123 if (host_impl_) |
| 124 host_impl_->ReleaseOutputSurface(); |
| 125 } |
123 | 126 |
124 void UpdateRendererCapabilitiesOnImplThread() override {} | 127 void UpdateRendererCapabilitiesOnImplThread() override {} |
125 void DidLoseOutputSurfaceOnImplThread() override {} | 128 void DidLoseOutputSurfaceOnImplThread() override {} |
126 void CommitVSyncParameters(base::TimeTicks timebase, | 129 void CommitVSyncParameters(base::TimeTicks timebase, |
127 base::TimeDelta interval) override {} | 130 base::TimeDelta interval) override {} |
128 void SetBeginFrameSource(BeginFrameSource* source) override {} | 131 void SetBeginFrameSource(BeginFrameSource* source) override {} |
129 void SetEstimatedParentDrawTime(base::TimeDelta draw_time) override {} | 132 void SetEstimatedParentDrawTime(base::TimeDelta draw_time) override {} |
130 void DidSwapBuffersOnImplThread() override {} | 133 void DidSwapBuffersOnImplThread() override {} |
131 void DidSwapBuffersCompleteOnImplThread() override {} | 134 void DidSwapBuffersCompleteOnImplThread() override {} |
132 void OnCanDrawStateChanged(bool can_draw) override { | 135 void OnCanDrawStateChanged(bool can_draw) override { |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
184 virtual bool CreateHostImpl(const LayerTreeSettings& settings, | 187 virtual bool CreateHostImpl(const LayerTreeSettings& settings, |
185 std::unique_ptr<OutputSurface> output_surface) { | 188 std::unique_ptr<OutputSurface> output_surface) { |
186 return CreateHostImplWithTaskRunnerProvider( | 189 return CreateHostImplWithTaskRunnerProvider( |
187 settings, std::move(output_surface), &task_runner_provider_); | 190 settings, std::move(output_surface), &task_runner_provider_); |
188 } | 191 } |
189 | 192 |
190 virtual bool CreateHostImplWithTaskRunnerProvider( | 193 virtual bool CreateHostImplWithTaskRunnerProvider( |
191 const LayerTreeSettings& settings, | 194 const LayerTreeSettings& settings, |
192 std::unique_ptr<OutputSurface> output_surface, | 195 std::unique_ptr<OutputSurface> output_surface, |
193 TaskRunnerProvider* task_runner_provider) { | 196 TaskRunnerProvider* task_runner_provider) { |
| 197 if (host_impl_) |
| 198 host_impl_->ReleaseOutputSurface(); |
194 host_impl_ = LayerTreeHostImpl::Create( | 199 host_impl_ = LayerTreeHostImpl::Create( |
195 settings, this, task_runner_provider, &stats_instrumentation_, | 200 settings, this, task_runner_provider, &stats_instrumentation_, |
196 &shared_bitmap_manager_, &gpu_memory_buffer_manager_, | 201 &shared_bitmap_manager_, &gpu_memory_buffer_manager_, |
197 &task_graph_runner_, | 202 &task_graph_runner_, |
198 AnimationHost::CreateForTesting(ThreadInstance::IMPL), 0); | 203 AnimationHost::CreateForTesting(ThreadInstance::IMPL), 0); |
199 output_surface_ = std::move(output_surface); | 204 output_surface_ = std::move(output_surface); |
200 host_impl_->SetVisible(true); | 205 host_impl_->SetVisible(true); |
201 bool init = host_impl_->InitializeRenderer(output_surface_.get()); | 206 bool init = host_impl_->InitializeRenderer(output_surface_.get()); |
202 host_impl_->SetViewportSize(gfx::Size(10, 10)); | 207 host_impl_->SetViewportSize(gfx::Size(10, 10)); |
203 host_impl_->active_tree()->PushPageScaleFromMainThread(1.f, 1.f, 1.f); | 208 host_impl_->active_tree()->PushPageScaleFromMainThread(1.f, 1.f, 1.f); |
(...skipping 1138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1342 LayerImpl* root = *host_impl_->active_tree()->begin(); | 1347 LayerImpl* root = *host_impl_->active_tree()->begin(); |
1343 root->SetBounds(gfx::Size(50, 50)); | 1348 root->SetBounds(gfx::Size(50, 50)); |
1344 root->test_properties()->force_render_surface = true; | 1349 root->test_properties()->force_render_surface = true; |
1345 | 1350 |
1346 root->test_properties()->AddChild( | 1351 root->test_properties()->AddChild( |
1347 LayerImpl::Create(host_impl_->active_tree(), 2)); | 1352 LayerImpl::Create(host_impl_->active_tree(), 2)); |
1348 LayerImpl* child = root->test_properties()->children[0]; | 1353 LayerImpl* child = root->test_properties()->children[0]; |
1349 child->SetBounds(gfx::Size(10, 10)); | 1354 child->SetBounds(gfx::Size(10, 10)); |
1350 child->draw_properties().visible_layer_rect = gfx::Rect(10, 10); | 1355 child->draw_properties().visible_layer_rect = gfx::Rect(10, 10); |
1351 child->SetDrawsContent(true); | 1356 child->SetDrawsContent(true); |
1352 | 1357 host_impl_->active_tree()->BuildPropertyTreesForTesting(); |
1353 host_impl_->active_tree()->SetElementIdsForTesting(); | 1358 host_impl_->active_tree()->SetElementIdsForTesting(); |
1354 | 1359 |
1355 // Add a translate from 6,7 to 8,9. | 1360 // Add a translate from 6,7 to 8,9. |
1356 TransformOperations start; | 1361 TransformOperations start; |
1357 start.AppendTranslate(6.f, 7.f, 0.f); | 1362 start.AppendTranslate(6.f, 7.f, 0.f); |
1358 TransformOperations end; | 1363 TransformOperations end; |
1359 end.AppendTranslate(8.f, 9.f, 0.f); | 1364 end.AppendTranslate(8.f, 9.f, 0.f); |
1360 AddAnimatedTransformToElementWithPlayer(child->element_id(), timeline(), 4.0, | 1365 AddAnimatedTransformToElementWithPlayer(child->element_id(), timeline(), 4.0, |
1361 start, end); | 1366 start, end); |
1362 | 1367 |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1435 | 1440 |
1436 host_impl_->CommitComplete(); | 1441 host_impl_->CommitComplete(); |
1437 | 1442 |
1438 // Animations on the active tree should be started and ticked, and a new frame | 1443 // Animations on the active tree should be started and ticked, and a new frame |
1439 // should be requested to continue ticking them. | 1444 // should be requested to continue ticking them. |
1440 EXPECT_TRUE(did_request_next_frame_); | 1445 EXPECT_TRUE(did_request_next_frame_); |
1441 EXPECT_TRUE(did_request_redraw_); | 1446 EXPECT_TRUE(did_request_redraw_); |
1442 EXPECT_FALSE(did_request_commit_); | 1447 EXPECT_FALSE(did_request_commit_); |
1443 | 1448 |
1444 // Delete the LayerTreeHostImpl before the TaskRunnerProvider goes away. | 1449 // Delete the LayerTreeHostImpl before the TaskRunnerProvider goes away. |
| 1450 host_impl_->ReleaseOutputSurface(); |
1445 host_impl_ = nullptr; | 1451 host_impl_ = nullptr; |
1446 } | 1452 } |
1447 | 1453 |
1448 TEST_F(LayerTreeHostImplTest, AnimationSchedulingOnLayerDestruction) { | 1454 TEST_F(LayerTreeHostImplTest, AnimationSchedulingOnLayerDestruction) { |
1449 host_impl_->SetViewportSize(gfx::Size(50, 50)); | 1455 host_impl_->SetViewportSize(gfx::Size(50, 50)); |
1450 | 1456 |
1451 host_impl_->active_tree()->SetRootLayerForTesting( | 1457 host_impl_->active_tree()->SetRootLayerForTesting( |
1452 LayerImpl::Create(host_impl_->active_tree(), 1)); | 1458 LayerImpl::Create(host_impl_->active_tree(), 1)); |
1453 LayerImpl* root = *host_impl_->active_tree()->begin(); | 1459 LayerImpl* root = *host_impl_->active_tree()->begin(); |
1454 root->SetBounds(gfx::Size(50, 50)); | 1460 root->SetBounds(gfx::Size(50, 50)); |
1455 | 1461 |
1456 root->test_properties()->AddChild( | 1462 root->test_properties()->AddChild( |
1457 LayerImpl::Create(host_impl_->active_tree(), 2)); | 1463 LayerImpl::Create(host_impl_->active_tree(), 2)); |
1458 LayerImpl* child = root->test_properties()->children[0]; | 1464 LayerImpl* child = root->test_properties()->children[0]; |
1459 child->SetBounds(gfx::Size(10, 10)); | 1465 child->SetBounds(gfx::Size(10, 10)); |
1460 child->draw_properties().visible_layer_rect = gfx::Rect(10, 10); | 1466 child->draw_properties().visible_layer_rect = gfx::Rect(10, 10); |
1461 child->SetDrawsContent(true); | 1467 child->SetDrawsContent(true); |
1462 | 1468 |
| 1469 host_impl_->active_tree()->BuildPropertyTreesForTesting(); |
1463 host_impl_->active_tree()->SetElementIdsForTesting(); | 1470 host_impl_->active_tree()->SetElementIdsForTesting(); |
1464 | 1471 |
1465 // Add a translate animation. | 1472 // Add a translate animation. |
1466 TransformOperations start; | 1473 TransformOperations start; |
1467 start.AppendTranslate(6.f, 7.f, 0.f); | 1474 start.AppendTranslate(6.f, 7.f, 0.f); |
1468 TransformOperations end; | 1475 TransformOperations end; |
1469 end.AppendTranslate(8.f, 9.f, 0.f); | 1476 end.AppendTranslate(8.f, 9.f, 0.f); |
1470 AddAnimatedTransformToElementWithPlayer(child->element_id(), timeline(), 4.0, | 1477 AddAnimatedTransformToElementWithPlayer(child->element_id(), timeline(), 4.0, |
1471 start, end); | 1478 start, end); |
1472 | 1479 |
(...skipping 1229 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2702 fake_current_physical_time_ = fake_now; | 2709 fake_current_physical_time_ = fake_now; |
2703 } | 2710 } |
2704 | 2711 |
2705 private: | 2712 private: |
2706 base::TimeTicks fake_current_physical_time_; | 2713 base::TimeTicks fake_current_physical_time_; |
2707 }; | 2714 }; |
2708 | 2715 |
2709 class LayerTreeHostImplTestScrollbarAnimation : public LayerTreeHostImplTest { | 2716 class LayerTreeHostImplTestScrollbarAnimation : public LayerTreeHostImplTest { |
2710 protected: | 2717 protected: |
2711 void SetupLayers(LayerTreeSettings settings) { | 2718 void SetupLayers(LayerTreeSettings settings) { |
| 2719 host_impl_->ReleaseOutputSurface(); |
| 2720 host_impl_ = nullptr; |
| 2721 |
2712 gfx::Size content_size(100, 100); | 2722 gfx::Size content_size(100, 100); |
2713 | 2723 |
2714 LayerTreeHostImplOverridePhysicalTime* host_impl_override_time = | 2724 LayerTreeHostImplOverridePhysicalTime* host_impl_override_time = |
2715 new LayerTreeHostImplOverridePhysicalTime( | 2725 new LayerTreeHostImplOverridePhysicalTime( |
2716 settings, this, &task_runner_provider_, &shared_bitmap_manager_, | 2726 settings, this, &task_runner_provider_, &shared_bitmap_manager_, |
2717 &task_graph_runner_, &stats_instrumentation_); | 2727 &task_graph_runner_, &stats_instrumentation_); |
2718 host_impl_ = base::WrapUnique(host_impl_override_time); | 2728 host_impl_ = base::WrapUnique(host_impl_override_time); |
2719 output_surface_ = CreateOutputSurface(); | 2729 output_surface_ = CreateOutputSurface(); |
2720 host_impl_->SetVisible(true); | 2730 host_impl_->SetVisible(true); |
2721 host_impl_->InitializeRenderer(output_surface_.get()); | 2731 host_impl_->InitializeRenderer(output_surface_.get()); |
(...skipping 3155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5877 // sees the correct size of the new tree. | 5887 // sees the correct size of the new tree. |
5878 gfx::Size new_size(42, 24); | 5888 gfx::Size new_size(42, 24); |
5879 host_impl_->CreatePendingTree(); | 5889 host_impl_->CreatePendingTree(); |
5880 host_impl_->pending_tree()->PushPageScaleFromMainThread(1.f, 1.f, 1.f); | 5890 host_impl_->pending_tree()->PushPageScaleFromMainThread(1.f, 1.f, 1.f); |
5881 CreateScrollAndContentsLayers(host_impl_->pending_tree(), new_size); | 5891 CreateScrollAndContentsLayers(host_impl_->pending_tree(), new_size); |
5882 host_impl_->pending_tree()->BuildPropertyTreesForTesting(); | 5892 host_impl_->pending_tree()->BuildPropertyTreesForTesting(); |
5883 host_impl_->ActivateSyncTree(); | 5893 host_impl_->ActivateSyncTree(); |
5884 EXPECT_EQ(gfx::SizeF(new_size), scroll_watcher.scrollable_size()); | 5894 EXPECT_EQ(gfx::SizeF(new_size), scroll_watcher.scrollable_size()); |
5885 | 5895 |
5886 // Tear down the LayerTreeHostImpl before the InputHandlerClient. | 5896 // Tear down the LayerTreeHostImpl before the InputHandlerClient. |
5887 host_impl_.reset(); | 5897 host_impl_->ReleaseOutputSurface(); |
| 5898 host_impl_ = nullptr; |
5888 } | 5899 } |
5889 | 5900 |
5890 void CheckLayerScrollDelta(LayerImpl* layer, gfx::Vector2dF scroll_delta) { | 5901 void CheckLayerScrollDelta(LayerImpl* layer, gfx::Vector2dF scroll_delta) { |
5891 const gfx::Transform target_space_transform = | 5902 const gfx::Transform target_space_transform = |
5892 layer->draw_properties().target_space_transform; | 5903 layer->draw_properties().target_space_transform; |
5893 EXPECT_TRUE(target_space_transform.IsScaleOrTranslation()); | 5904 EXPECT_TRUE(target_space_transform.IsScaleOrTranslation()); |
5894 gfx::Point translated_point; | 5905 gfx::Point translated_point; |
5895 target_space_transform.TransformPoint(&translated_point); | 5906 target_space_transform.TransformPoint(&translated_point); |
5896 gfx::Point expected_point = gfx::Point() - ToRoundedVector2d(scroll_delta); | 5907 gfx::Point expected_point = gfx::Point() - ToRoundedVector2d(scroll_delta); |
5897 EXPECT_EQ(expected_point.ToString(), translated_point.ToString()); | 5908 EXPECT_EQ(expected_point.ToString(), translated_point.ToString()); |
(...skipping 1153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7051 ->root_layer_for_testing() | 7062 ->root_layer_for_testing() |
7052 ->SetBackgroundColor(SK_ColorBLACK); | 7063 ->SetBackgroundColor(SK_ColorBLACK); |
7053 EXPECT_EQ(DRAW_SUCCESS, layer_tree_host_impl->PrepareToDraw(&frame)); | 7064 EXPECT_EQ(DRAW_SUCCESS, layer_tree_host_impl->PrepareToDraw(&frame)); |
7054 layer_tree_host_impl->DrawLayers(&frame); | 7065 layer_tree_host_impl->DrawLayers(&frame); |
7055 host_impl_->DidDrawAllLayers(frame); | 7066 host_impl_->DidDrawAllLayers(frame); |
7056 layer_tree_host_impl->SwapBuffers(frame); | 7067 layer_tree_host_impl->SwapBuffers(frame); |
7057 | 7068 |
7058 expected_swap_rect = gfx::Rect(0, 0, 10, 10); | 7069 expected_swap_rect = gfx::Rect(0, 0, 10, 10); |
7059 EXPECT_EQ(expected_swap_rect.ToString(), | 7070 EXPECT_EQ(expected_swap_rect.ToString(), |
7060 fake_output_surface->last_swap_rect().ToString()); | 7071 fake_output_surface->last_swap_rect().ToString()); |
| 7072 |
| 7073 layer_tree_host_impl->ReleaseOutputSurface(); |
7061 } | 7074 } |
7062 | 7075 |
7063 TEST_F(LayerTreeHostImplTest, RootLayerDoesntCreateExtraSurface) { | 7076 TEST_F(LayerTreeHostImplTest, RootLayerDoesntCreateExtraSurface) { |
7064 std::unique_ptr<LayerImpl> root = | 7077 std::unique_ptr<LayerImpl> root = |
7065 FakeDrawableLayerImpl::Create(host_impl_->active_tree(), 1); | 7078 FakeDrawableLayerImpl::Create(host_impl_->active_tree(), 1); |
7066 std::unique_ptr<LayerImpl> child = | 7079 std::unique_ptr<LayerImpl> child = |
7067 FakeDrawableLayerImpl::Create(host_impl_->active_tree(), 2); | 7080 FakeDrawableLayerImpl::Create(host_impl_->active_tree(), 2); |
7068 child->SetBounds(gfx::Size(10, 10)); | 7081 child->SetBounds(gfx::Size(10, 10)); |
7069 child->SetDrawsContent(true); | 7082 child->SetDrawsContent(true); |
7070 root->SetBounds(gfx::Size(10, 10)); | 7083 root->SetBounds(gfx::Size(10, 10)); |
(...skipping 302 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7373 ASSERT_EQ(1U, frame.render_passes[0]->quad_list.size()); | 7386 ASSERT_EQ(1U, frame.render_passes[0]->quad_list.size()); |
7374 ASSERT_EQ(1U, frame.render_passes[1]->quad_list.size()); | 7387 ASSERT_EQ(1U, frame.render_passes[1]->quad_list.size()); |
7375 EXPECT_EQ(DrawQuad::SOLID_COLOR, | 7388 EXPECT_EQ(DrawQuad::SOLID_COLOR, |
7376 frame.render_passes[0]->quad_list.front()->material); | 7389 frame.render_passes[0]->quad_list.front()->material); |
7377 EXPECT_EQ(DrawQuad::RENDER_PASS, | 7390 EXPECT_EQ(DrawQuad::RENDER_PASS, |
7378 frame.render_passes[1]->quad_list.front()->material); | 7391 frame.render_passes[1]->quad_list.front()->material); |
7379 | 7392 |
7380 my_host_impl->DrawLayers(&frame); | 7393 my_host_impl->DrawLayers(&frame); |
7381 my_host_impl->DidDrawAllLayers(frame); | 7394 my_host_impl->DidDrawAllLayers(frame); |
7382 } | 7395 } |
| 7396 my_host_impl->ReleaseOutputSurface(); |
7383 } | 7397 } |
7384 | 7398 |
7385 TEST_F(LayerTreeHostImplTest, ContributingLayerEmptyScissorNoPartialSwap) { | 7399 TEST_F(LayerTreeHostImplTest, ContributingLayerEmptyScissorNoPartialSwap) { |
7386 TestSharedBitmapManager shared_bitmap_manager; | 7400 TestSharedBitmapManager shared_bitmap_manager; |
7387 TestTaskGraphRunner task_graph_runner; | 7401 TestTaskGraphRunner task_graph_runner; |
7388 scoped_refptr<TestContextProvider> provider(TestContextProvider::Create()); | 7402 scoped_refptr<TestContextProvider> provider(TestContextProvider::Create()); |
7389 provider->BindToCurrentThread(); | 7403 provider->BindToCurrentThread(); |
7390 provider->TestContext3d()->set_have_post_sub_buffer(true); | 7404 provider->TestContext3d()->set_have_post_sub_buffer(true); |
7391 std::unique_ptr<OutputSurface> output_surface( | 7405 std::unique_ptr<OutputSurface> output_surface( |
7392 FakeOutputSurface::Create3d(provider)); | 7406 FakeOutputSurface::Create3d(provider)); |
(...skipping 10 matching lines...) Expand all Loading... |
7403 ASSERT_EQ(1U, frame.render_passes[0]->quad_list.size()); | 7417 ASSERT_EQ(1U, frame.render_passes[0]->quad_list.size()); |
7404 ASSERT_EQ(1U, frame.render_passes[1]->quad_list.size()); | 7418 ASSERT_EQ(1U, frame.render_passes[1]->quad_list.size()); |
7405 EXPECT_EQ(DrawQuad::SOLID_COLOR, | 7419 EXPECT_EQ(DrawQuad::SOLID_COLOR, |
7406 frame.render_passes[0]->quad_list.front()->material); | 7420 frame.render_passes[0]->quad_list.front()->material); |
7407 EXPECT_EQ(DrawQuad::RENDER_PASS, | 7421 EXPECT_EQ(DrawQuad::RENDER_PASS, |
7408 frame.render_passes[1]->quad_list.front()->material); | 7422 frame.render_passes[1]->quad_list.front()->material); |
7409 | 7423 |
7410 my_host_impl->DrawLayers(&frame); | 7424 my_host_impl->DrawLayers(&frame); |
7411 my_host_impl->DidDrawAllLayers(frame); | 7425 my_host_impl->DidDrawAllLayers(frame); |
7412 } | 7426 } |
| 7427 my_host_impl->ReleaseOutputSurface(); |
7413 } | 7428 } |
7414 | 7429 |
7415 TEST_F(LayerTreeHostImplTest, LayersFreeTextures) { | 7430 TEST_F(LayerTreeHostImplTest, LayersFreeTextures) { |
7416 std::unique_ptr<TestWebGraphicsContext3D> context = | 7431 std::unique_ptr<TestWebGraphicsContext3D> context = |
7417 TestWebGraphicsContext3D::Create(); | 7432 TestWebGraphicsContext3D::Create(); |
7418 TestWebGraphicsContext3D* context3d = context.get(); | 7433 TestWebGraphicsContext3D* context3d = context.get(); |
7419 std::unique_ptr<OutputSurface> output_surface( | 7434 std::unique_ptr<OutputSurface> output_surface( |
7420 FakeOutputSurface::Create3d(std::move(context))); | 7435 FakeOutputSurface::Create3d(std::move(context))); |
7421 CreateHostImpl(DefaultSettings(), std::move(output_surface)); | 7436 CreateHostImpl(DefaultSettings(), std::move(output_surface)); |
7422 | 7437 |
(...skipping 356 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7779 resourceless_software_draw); | 7794 resourceless_software_draw); |
7780 | 7795 |
7781 EXPECT_EQ(1u, last_on_draw_frame_->will_draw_layers.size()); | 7796 EXPECT_EQ(1u, last_on_draw_frame_->will_draw_layers.size()); |
7782 EXPECT_EQ(host_impl_->active_tree()->root_layer_for_testing(), | 7797 EXPECT_EQ(host_impl_->active_tree()->root_layer_for_testing(), |
7783 last_on_draw_frame_->will_draw_layers[0]); | 7798 last_on_draw_frame_->will_draw_layers[0]); |
7784 } | 7799 } |
7785 | 7800 |
7786 // Checks that we have a non-0 default allocation if we pass a context that | 7801 // Checks that we have a non-0 default allocation if we pass a context that |
7787 // doesn't support memory management extensions. | 7802 // doesn't support memory management extensions. |
7788 TEST_F(LayerTreeHostImplTest, DefaultMemoryAllocation) { | 7803 TEST_F(LayerTreeHostImplTest, DefaultMemoryAllocation) { |
| 7804 host_impl_->ReleaseOutputSurface(); |
| 7805 host_impl_ = nullptr; |
| 7806 |
7789 LayerTreeSettings settings = DefaultSettings(); | 7807 LayerTreeSettings settings = DefaultSettings(); |
7790 host_impl_ = LayerTreeHostImpl::Create( | 7808 host_impl_ = LayerTreeHostImpl::Create( |
7791 settings, this, &task_runner_provider_, &stats_instrumentation_, | 7809 settings, this, &task_runner_provider_, &stats_instrumentation_, |
7792 &shared_bitmap_manager_, &gpu_memory_buffer_manager_, &task_graph_runner_, | 7810 &shared_bitmap_manager_, &gpu_memory_buffer_manager_, &task_graph_runner_, |
7793 AnimationHost::CreateForTesting(ThreadInstance::IMPL), 0); | 7811 AnimationHost::CreateForTesting(ThreadInstance::IMPL), 0); |
7794 | 7812 |
7795 output_surface_ = | 7813 output_surface_ = |
7796 FakeOutputSurface::Create3d(TestWebGraphicsContext3D::Create()); | 7814 FakeOutputSurface::Create3d(TestWebGraphicsContext3D::Create()); |
7797 host_impl_->SetVisible(true); | 7815 host_impl_->SetVisible(true); |
7798 host_impl_->InitializeRenderer(output_surface_.get()); | 7816 host_impl_->InitializeRenderer(output_surface_.get()); |
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7962 LayerTreeHostImpl::FrameData frame; | 7980 LayerTreeHostImpl::FrameData frame; |
7963 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 7981 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
7964 host_impl_->DrawLayers(&frame); | 7982 host_impl_->DrawLayers(&frame); |
7965 host_impl_->DidDrawAllLayers(frame); | 7983 host_impl_->DidDrawAllLayers(frame); |
7966 | 7984 |
7967 // The CopyOutputResult's callback has a ref on the ContextProvider and a | 7985 // The CopyOutputResult's callback has a ref on the ContextProvider and a |
7968 // texture in a texture mailbox. | 7986 // texture in a texture mailbox. |
7969 EXPECT_FALSE(context_provider->HasOneRef()); | 7987 EXPECT_FALSE(context_provider->HasOneRef()); |
7970 EXPECT_EQ(1u, context_provider->TestContext3d()->NumTextures()); | 7988 EXPECT_EQ(1u, context_provider->TestContext3d()->NumTextures()); |
7971 | 7989 |
| 7990 host_impl_->ReleaseOutputSurface(); |
7972 host_impl_ = nullptr; | 7991 host_impl_ = nullptr; |
7973 | 7992 |
7974 // The CopyOutputResult's callback was cancelled, the CopyOutputResult | 7993 // The CopyOutputResult's callback was cancelled, the CopyOutputResult |
7975 // released, and the texture deleted. | 7994 // released, and the texture deleted. |
7976 EXPECT_TRUE(context_provider->HasOneRef()); | 7995 EXPECT_TRUE(context_provider->HasOneRef()); |
7977 EXPECT_EQ(0u, context_provider->TestContext3d()->NumTextures()); | 7996 EXPECT_EQ(0u, context_provider->TestContext3d()->NumTextures()); |
7978 } | 7997 } |
7979 | 7998 |
7980 TEST_F(LayerTreeHostImplTest, TouchFlingShouldNotBubble) { | 7999 TEST_F(LayerTreeHostImplTest, TouchFlingShouldNotBubble) { |
7981 // When flinging via touch, only the child should scroll (we should not | 8000 // When flinging via touch, only the child should scroll (we should not |
(...skipping 2945 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10927 float expected_jitter = | 10946 float expected_jitter = |
10928 (i == pending_tree->kFixedPointHitsThreshold) ? 500 : 0; | 10947 (i == pending_tree->kFixedPointHitsThreshold) ? 500 : 0; |
10929 EXPECT_EQ(jitter, expected_jitter); | 10948 EXPECT_EQ(jitter, expected_jitter); |
10930 } | 10949 } |
10931 } | 10950 } |
10932 | 10951 |
10933 // Checks that if we lose a GPU raster enabled OutputSurface and replace it | 10952 // Checks that if we lose a GPU raster enabled OutputSurface and replace it |
10934 // with a software OutputSurface, LayerTreeHostImpl correctly re-computes GPU | 10953 // with a software OutputSurface, LayerTreeHostImpl correctly re-computes GPU |
10935 // rasterization status. | 10954 // rasterization status. |
10936 TEST_F(LayerTreeHostImplTest, RecomputeGpuRasterOnOutputSurfaceChange) { | 10955 TEST_F(LayerTreeHostImplTest, RecomputeGpuRasterOnOutputSurfaceChange) { |
| 10956 host_impl_->ReleaseOutputSurface(); |
| 10957 host_impl_ = nullptr; |
| 10958 |
10937 LayerTreeSettings settings = DefaultSettings(); | 10959 LayerTreeSettings settings = DefaultSettings(); |
10938 settings.gpu_rasterization_forced = true; | 10960 settings.gpu_rasterization_forced = true; |
10939 | 10961 |
10940 host_impl_ = LayerTreeHostImpl::Create( | 10962 host_impl_ = LayerTreeHostImpl::Create( |
10941 settings, this, &task_runner_provider_, &stats_instrumentation_, | 10963 settings, this, &task_runner_provider_, &stats_instrumentation_, |
10942 &shared_bitmap_manager_, &gpu_memory_buffer_manager_, &task_graph_runner_, | 10964 &shared_bitmap_manager_, &gpu_memory_buffer_manager_, &task_graph_runner_, |
10943 AnimationHost::CreateForTesting(ThreadInstance::IMPL), 0); | 10965 AnimationHost::CreateForTesting(ThreadInstance::IMPL), 0); |
10944 host_impl_->SetVisible(true); | 10966 host_impl_->SetVisible(true); |
10945 | 10967 |
10946 // InitializeRenderer with a gpu-raster enabled output surface. | 10968 // InitializeRenderer with a gpu-raster enabled output surface. |
10947 auto gpu_raster_output_surface = | 10969 auto gpu_raster_output_surface = |
10948 FakeOutputSurface::Create3d(TestWebGraphicsContext3D::Create()); | 10970 FakeOutputSurface::Create3d(TestWebGraphicsContext3D::Create()); |
10949 host_impl_->InitializeRenderer(gpu_raster_output_surface.get()); | 10971 host_impl_->InitializeRenderer(gpu_raster_output_surface.get()); |
10950 EXPECT_TRUE(host_impl_->use_gpu_rasterization()); | 10972 EXPECT_TRUE(host_impl_->use_gpu_rasterization()); |
10951 | 10973 |
10952 // Re-initialize with a software output surface. | 10974 // Re-initialize with a software output surface. |
10953 output_surface_ = FakeOutputSurface::CreateSoftware( | 10975 output_surface_ = FakeOutputSurface::CreateSoftware( |
10954 base::WrapUnique(new SoftwareOutputDevice)); | 10976 base::WrapUnique(new SoftwareOutputDevice)); |
10955 host_impl_->InitializeRenderer(output_surface_.get()); | 10977 host_impl_->InitializeRenderer(output_surface_.get()); |
10956 EXPECT_FALSE(host_impl_->use_gpu_rasterization()); | 10978 EXPECT_FALSE(host_impl_->use_gpu_rasterization()); |
10957 } | 10979 } |
10958 | 10980 |
10959 } // namespace | 10981 } // namespace |
10960 } // namespace cc | 10982 } // namespace cc |
OLD | NEW |