| 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.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 426 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 437 LayerTreeHostImpl::FrameData* frame_data, | 437 LayerTreeHostImpl::FrameData* frame_data, |
| 438 DrawResult draw_result) override { | 438 DrawResult draw_result) override { |
| 439 EXPECT_EQ(DRAW_SUCCESS, draw_result); | 439 EXPECT_EQ(DRAW_SUCCESS, draw_result); |
| 440 | 440 |
| 441 gfx::RectF root_damage_rect; | 441 gfx::RectF root_damage_rect; |
| 442 if (!frame_data->render_passes.empty()) | 442 if (!frame_data->render_passes.empty()) |
| 443 root_damage_rect = frame_data->render_passes.back()->damage_rect; | 443 root_damage_rect = frame_data->render_passes.back()->damage_rect; |
| 444 | 444 |
| 445 if (!num_draws_) { | 445 if (!num_draws_) { |
| 446 // If this is the first frame, expect full frame damage. | 446 // If this is the first frame, expect full frame damage. |
| 447 EXPECT_RECT_EQ(root_damage_rect, gfx::Rect(bounds_)); | 447 EXPECT_EQ(root_damage_rect, gfx::Rect(bounds_)); |
| 448 } else { | 448 } else { |
| 449 // Check that invalid_rect_ is indeed repainted. | 449 // Check that invalid_rect_ is indeed repainted. |
| 450 EXPECT_TRUE(root_damage_rect.Contains(invalid_rect_)); | 450 EXPECT_TRUE(root_damage_rect.Contains(invalid_rect_)); |
| 451 } | 451 } |
| 452 | 452 |
| 453 return draw_result; | 453 return draw_result; |
| 454 } | 454 } |
| 455 | 455 |
| 456 void DrawLayersOnThread(LayerTreeHostImpl* impl) override { | 456 void DrawLayersOnThread(LayerTreeHostImpl* impl) override { |
| 457 if (!num_draws_) { | 457 if (!num_draws_) { |
| (...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 619 LayerTreeHostImpl::FrameData* frame_data, | 619 LayerTreeHostImpl::FrameData* frame_data, |
| 620 DrawResult draw_result) override { | 620 DrawResult draw_result) override { |
| 621 EXPECT_EQ(DRAW_SUCCESS, draw_result); | 621 EXPECT_EQ(DRAW_SUCCESS, draw_result); |
| 622 | 622 |
| 623 gfx::RectF root_damage_rect; | 623 gfx::RectF root_damage_rect; |
| 624 if (!frame_data->render_passes.empty()) | 624 if (!frame_data->render_passes.empty()) |
| 625 root_damage_rect = frame_data->render_passes.back()->damage_rect; | 625 root_damage_rect = frame_data->render_passes.back()->damage_rect; |
| 626 | 626 |
| 627 switch (num_draws_) { | 627 switch (num_draws_) { |
| 628 case 0: | 628 case 0: |
| 629 EXPECT_RECT_EQ(gfx::Rect(bounds_), root_damage_rect); | 629 EXPECT_EQ(gfx::Rect(bounds_), root_damage_rect); |
| 630 break; | 630 break; |
| 631 case 1: | 631 case 1: |
| 632 case 2: | 632 case 2: |
| 633 EXPECT_RECT_EQ(gfx::Rect(0, 0, 0, 0), root_damage_rect); | 633 EXPECT_EQ(gfx::Rect(0, 0, 0, 0), root_damage_rect); |
| 634 break; | 634 break; |
| 635 case 3: | 635 case 3: |
| 636 EXPECT_RECT_EQ(invalid_rect_, root_damage_rect); | 636 EXPECT_EQ(invalid_rect_, root_damage_rect); |
| 637 break; | 637 break; |
| 638 case 4: | 638 case 4: |
| 639 EXPECT_RECT_EQ(gfx::Rect(bounds_), root_damage_rect); | 639 EXPECT_EQ(gfx::Rect(bounds_), root_damage_rect); |
| 640 break; | 640 break; |
| 641 default: | 641 default: |
| 642 NOTREACHED(); | 642 NOTREACHED(); |
| 643 } | 643 } |
| 644 | 644 |
| 645 return draw_result; | 645 return draw_result; |
| 646 } | 646 } |
| 647 | 647 |
| 648 void DrawLayersOnThread(LayerTreeHostImpl* host_impl) override { | 648 void DrawLayersOnThread(LayerTreeHostImpl* host_impl) override { |
| 649 switch (num_draws_) { | 649 switch (num_draws_) { |
| (...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 731 if (!frame_data->render_passes.empty()) | 731 if (!frame_data->render_passes.empty()) |
| 732 root_damage_rect = frame_data->render_passes.back()->damage_rect; | 732 root_damage_rect = frame_data->render_passes.back()->damage_rect; |
| 733 | 733 |
| 734 // The first time, the whole view needs be drawn. | 734 // The first time, the whole view needs be drawn. |
| 735 // Afterwards, just the opacity of surface_layer1 is changed a few times, | 735 // Afterwards, just the opacity of surface_layer1 is changed a few times, |
| 736 // and each damage should be the bounding box of it and its child. If this | 736 // and each damage should be the bounding box of it and its child. If this |
| 737 // was working improperly, the damage might not include its childs bounding | 737 // was working improperly, the damage might not include its childs bounding |
| 738 // box. | 738 // box. |
| 739 switch (host_impl->active_tree()->source_frame_number()) { | 739 switch (host_impl->active_tree()->source_frame_number()) { |
| 740 case 0: | 740 case 0: |
| 741 EXPECT_RECT_EQ(gfx::Rect(root_layer_->bounds()), root_damage_rect); | 741 EXPECT_EQ(gfx::Rect(root_layer_->bounds()), root_damage_rect); |
| 742 break; | 742 break; |
| 743 case 1: | 743 case 1: |
| 744 case 2: | 744 case 2: |
| 745 case 3: | 745 case 3: |
| 746 EXPECT_RECT_EQ(gfx::Rect(child_layer_->bounds()), root_damage_rect); | 746 EXPECT_EQ(gfx::Rect(child_layer_->bounds()), root_damage_rect); |
| 747 break; | 747 break; |
| 748 default: | 748 default: |
| 749 NOTREACHED(); | 749 NOTREACHED(); |
| 750 } | 750 } |
| 751 | 751 |
| 752 return draw_result; | 752 return draw_result; |
| 753 } | 753 } |
| 754 | 754 |
| 755 void DidCommitAndDrawFrame() override { | 755 void DidCommitAndDrawFrame() override { |
| 756 switch (layer_tree_host()->source_frame_number()) { | 756 switch (layer_tree_host()->source_frame_number()) { |
| (...skipping 507 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1264 const LayerImplList& render_surface_layer_list = | 1264 const LayerImplList& render_surface_layer_list = |
| 1265 *frame_data.render_surface_layer_list; | 1265 *frame_data.render_surface_layer_list; |
| 1266 | 1266 |
| 1267 // Both layers should be drawing into the root render surface. | 1267 // Both layers should be drawing into the root render surface. |
| 1268 ASSERT_EQ(1u, render_surface_layer_list.size()); | 1268 ASSERT_EQ(1u, render_surface_layer_list.size()); |
| 1269 ASSERT_EQ(root->render_surface(), | 1269 ASSERT_EQ(root->render_surface(), |
| 1270 render_surface_layer_list[0]->render_surface()); | 1270 render_surface_layer_list[0]->render_surface()); |
| 1271 ASSERT_EQ(2u, root->render_surface()->layer_list().size()); | 1271 ASSERT_EQ(2u, root->render_surface()->layer_list().size()); |
| 1272 | 1272 |
| 1273 // The root render surface is the size of the viewport. | 1273 // The root render surface is the size of the viewport. |
| 1274 EXPECT_RECT_EQ(gfx::Rect(0, 0, 60, 60), | 1274 EXPECT_EQ(gfx::Rect(0, 0, 60, 60), root->render_surface()->content_rect()); |
| 1275 root->render_surface()->content_rect()); | |
| 1276 | 1275 |
| 1277 // The max tiling scale of the child should be scaled. | 1276 // The max tiling scale of the child should be scaled. |
| 1278 EXPECT_FLOAT_EQ(1.5f, child->MaximumTilingContentsScale()); | 1277 EXPECT_FLOAT_EQ(1.5f, child->MaximumTilingContentsScale()); |
| 1279 | 1278 |
| 1280 gfx::Transform scale_transform; | 1279 gfx::Transform scale_transform; |
| 1281 scale_transform.Scale(impl->device_scale_factor(), | 1280 scale_transform.Scale(impl->device_scale_factor(), |
| 1282 impl->device_scale_factor()); | 1281 impl->device_scale_factor()); |
| 1283 | 1282 |
| 1284 // The root layer is scaled by 2x. | 1283 // The root layer is scaled by 2x. |
| 1285 gfx::Transform root_screen_space_transform = scale_transform; | 1284 gfx::Transform root_screen_space_transform = scale_transform; |
| (...skipping 1352 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2638 LayerTreeHostTest::SetupTree(); | 2637 LayerTreeHostTest::SetupTree(); |
| 2639 } | 2638 } |
| 2640 | 2639 |
| 2641 void BeginTest() override { PostSetNeedsCommitToMainThread(); } | 2640 void BeginTest() override { PostSetNeedsCommitToMainThread(); } |
| 2642 void AfterTest() override {} | 2641 void AfterTest() override {} |
| 2643 | 2642 |
| 2644 void DidActivateTreeOnThread(LayerTreeHostImpl* host_impl) override { | 2643 void DidActivateTreeOnThread(LayerTreeHostImpl* host_impl) override { |
| 2645 num_commits_++; | 2644 num_commits_++; |
| 2646 if (num_commits_ == 1) { | 2645 if (num_commits_ == 1) { |
| 2647 LayerImpl* root_layer = host_impl->active_tree()->root_layer(); | 2646 LayerImpl* root_layer = host_impl->active_tree()->root_layer(); |
| 2648 EXPECT_SIZE_EQ(gfx::Size(1, 1), root_layer->bounds()); | 2647 EXPECT_EQ(gfx::Size(1, 1), root_layer->bounds()); |
| 2649 } else { | 2648 } else { |
| 2650 LayerImpl* root_layer = host_impl->active_tree()->root_layer(); | 2649 LayerImpl* root_layer = host_impl->active_tree()->root_layer(); |
| 2651 EXPECT_SIZE_EQ(gfx::Size(2, 2), root_layer->bounds()); | 2650 EXPECT_EQ(gfx::Size(2, 2), root_layer->bounds()); |
| 2652 EndTest(); | 2651 EndTest(); |
| 2653 } | 2652 } |
| 2654 } | 2653 } |
| 2655 | 2654 |
| 2656 private: | 2655 private: |
| 2657 SetBoundsClient client_; | 2656 SetBoundsClient client_; |
| 2658 int num_commits_; | 2657 int num_commits_; |
| 2659 }; | 2658 }; |
| 2660 | 2659 |
| 2661 SINGLE_AND_MULTI_THREAD_TEST_F( | 2660 SINGLE_AND_MULTI_THREAD_TEST_F( |
| (...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2764 DrawResult draw_result) override { | 2763 DrawResult draw_result) override { |
| 2765 Mock::VerifyAndClearExpectations(&mock_context_); | 2764 Mock::VerifyAndClearExpectations(&mock_context_); |
| 2766 ResourceProvider* resource_provider = host_impl->resource_provider(); | 2765 ResourceProvider* resource_provider = host_impl->resource_provider(); |
| 2767 EXPECT_EQ(1u, resource_provider->num_resources()); | 2766 EXPECT_EQ(1u, resource_provider->num_resources()); |
| 2768 CHECK_EQ(1u, frame->render_passes.size()); | 2767 CHECK_EQ(1u, frame->render_passes.size()); |
| 2769 CHECK_LE(1u, frame->render_passes[0]->quad_list.size()); | 2768 CHECK_LE(1u, frame->render_passes[0]->quad_list.size()); |
| 2770 const DrawQuad* quad = frame->render_passes[0]->quad_list.front(); | 2769 const DrawQuad* quad = frame->render_passes[0]->quad_list.front(); |
| 2771 CHECK_EQ(DrawQuad::IO_SURFACE_CONTENT, quad->material); | 2770 CHECK_EQ(DrawQuad::IO_SURFACE_CONTENT, quad->material); |
| 2772 const IOSurfaceDrawQuad* io_surface_draw_quad = | 2771 const IOSurfaceDrawQuad* io_surface_draw_quad = |
| 2773 IOSurfaceDrawQuad::MaterialCast(quad); | 2772 IOSurfaceDrawQuad::MaterialCast(quad); |
| 2774 EXPECT_SIZE_EQ(io_surface_size_, io_surface_draw_quad->io_surface_size); | 2773 EXPECT_EQ(io_surface_size_, io_surface_draw_quad->io_surface_size); |
| 2775 EXPECT_NE(0u, io_surface_draw_quad->io_surface_resource_id); | 2774 EXPECT_NE(0u, io_surface_draw_quad->io_surface_resource_id); |
| 2776 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_RECTANGLE_ARB), | 2775 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_RECTANGLE_ARB), |
| 2777 resource_provider->TargetForTesting( | 2776 resource_provider->TargetForTesting( |
| 2778 io_surface_draw_quad->io_surface_resource_id)); | 2777 io_surface_draw_quad->io_surface_resource_id)); |
| 2779 | 2778 |
| 2780 EXPECT_CALL(*mock_context_, bindTexture(GL_TEXTURE_RECTANGLE_ARB, 1)) | 2779 EXPECT_CALL(*mock_context_, bindTexture(GL_TEXTURE_RECTANGLE_ARB, 1)) |
| 2781 .Times(1); | 2780 .Times(1); |
| 2782 if (delegating_renderer()) { | 2781 if (delegating_renderer()) { |
| 2783 // The io surface layer's resource should be sent to the parent. | 2782 // The io surface layer's resource should be sent to the parent. |
| 2784 EXPECT_CALL(*mock_context_, | 2783 EXPECT_CALL(*mock_context_, |
| (...skipping 3151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5936 | 5935 |
| 5937 protected: | 5936 protected: |
| 5938 FakeContentLayerClient client_; | 5937 FakeContentLayerClient client_; |
| 5939 size_t notify_ready_to_activate_count_; | 5938 size_t notify_ready_to_activate_count_; |
| 5940 size_t scheduled_manage_tiles_count_; | 5939 size_t scheduled_manage_tiles_count_; |
| 5941 }; | 5940 }; |
| 5942 | 5941 |
| 5943 MULTI_THREAD_IMPL_TEST_F(LayerTreeHostTestOneActivatePerManageTiles); | 5942 MULTI_THREAD_IMPL_TEST_F(LayerTreeHostTestOneActivatePerManageTiles); |
| 5944 | 5943 |
| 5945 } // namespace cc | 5944 } // namespace cc |
| OLD | NEW |