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 417 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
428 else | 428 else |
429 root_layer_ = ContentLayer::Create(&client_); | 429 root_layer_ = ContentLayer::Create(&client_); |
430 root_layer_->SetIsDrawable(true); | 430 root_layer_->SetIsDrawable(true); |
431 root_layer_->SetBounds(bounds_); | 431 root_layer_->SetBounds(bounds_); |
432 layer_tree_host()->SetRootLayer(root_layer_); | 432 layer_tree_host()->SetRootLayer(root_layer_); |
433 layer_tree_host()->SetViewportSize(bounds_); | 433 layer_tree_host()->SetViewportSize(bounds_); |
434 PostSetNeedsCommitToMainThread(); | 434 PostSetNeedsCommitToMainThread(); |
435 } | 435 } |
436 | 436 |
437 DrawResult PrepareToDrawOnThread(LayerTreeHostImpl* host_impl, | 437 DrawResult PrepareToDrawOnThread(LayerTreeHostImpl* host_impl, |
438 LayerTreeHostImpl::FrameData* frame_data, | 438 FrameData* frame_data, |
439 DrawResult draw_result) override { | 439 DrawResult draw_result) override { |
440 EXPECT_EQ(DRAW_SUCCESS, draw_result); | 440 EXPECT_EQ(DRAW_SUCCESS, draw_result); |
441 | 441 |
442 gfx::RectF root_damage_rect; | 442 gfx::RectF root_damage_rect; |
443 if (!frame_data->render_passes.empty()) | 443 if (!frame_data->render_passes.empty()) |
444 root_damage_rect = frame_data->render_passes.back()->damage_rect; | 444 root_damage_rect = frame_data->render_passes.back()->damage_rect; |
445 | 445 |
446 if (!num_draws_) { | 446 if (!num_draws_) { |
447 // If this is the first frame, expect full frame damage. | 447 // If this is the first frame, expect full frame damage. |
448 EXPECT_EQ(root_damage_rect, gfx::Rect(bounds_)); | 448 EXPECT_EQ(root_damage_rect, gfx::Rect(bounds_)); |
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
612 layer_tree_host()->SetViewportSize(bounds_); | 612 layer_tree_host()->SetViewportSize(bounds_); |
613 PostSetNeedsCommitToMainThread(); | 613 PostSetNeedsCommitToMainThread(); |
614 } | 614 } |
615 | 615 |
616 void CommitCompleteOnThread(LayerTreeHostImpl* host_impl) override { | 616 void CommitCompleteOnThread(LayerTreeHostImpl* host_impl) override { |
617 if (num_draws_ == 3 && host_impl->settings().impl_side_painting) | 617 if (num_draws_ == 3 && host_impl->settings().impl_side_painting) |
618 host_impl->SetNeedsRedrawRect(invalid_rect_); | 618 host_impl->SetNeedsRedrawRect(invalid_rect_); |
619 } | 619 } |
620 | 620 |
621 DrawResult PrepareToDrawOnThread(LayerTreeHostImpl* host_impl, | 621 DrawResult PrepareToDrawOnThread(LayerTreeHostImpl* host_impl, |
622 LayerTreeHostImpl::FrameData* frame_data, | 622 FrameData* frame_data, |
623 DrawResult draw_result) override { | 623 DrawResult draw_result) override { |
624 EXPECT_EQ(DRAW_SUCCESS, draw_result); | 624 EXPECT_EQ(DRAW_SUCCESS, draw_result); |
625 | 625 |
626 gfx::RectF root_damage_rect; | 626 gfx::RectF root_damage_rect; |
627 if (!frame_data->render_passes.empty()) | 627 if (!frame_data->render_passes.empty()) |
628 root_damage_rect = frame_data->render_passes.back()->damage_rect; | 628 root_damage_rect = frame_data->render_passes.back()->damage_rect; |
629 | 629 |
630 switch (num_draws_) { | 630 switch (num_draws_) { |
631 case 0: | 631 case 0: |
632 EXPECT_EQ(gfx::Rect(bounds_), root_damage_rect); | 632 EXPECT_EQ(gfx::Rect(bounds_), root_damage_rect); |
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
719 child_layer_ = FakeContentLayer::Create(&client_); | 719 child_layer_ = FakeContentLayer::Create(&client_); |
720 child_layer_->SetBounds(gfx::Size(25, 25)); | 720 child_layer_->SetBounds(gfx::Size(25, 25)); |
721 parent_layer_->AddChild(child_layer_); | 721 parent_layer_->AddChild(child_layer_); |
722 | 722 |
723 LayerTreeHostTest::SetupTree(); | 723 LayerTreeHostTest::SetupTree(); |
724 } | 724 } |
725 | 725 |
726 void BeginTest() override { PostSetNeedsCommitToMainThread(); } | 726 void BeginTest() override { PostSetNeedsCommitToMainThread(); } |
727 | 727 |
728 DrawResult PrepareToDrawOnThread(LayerTreeHostImpl* host_impl, | 728 DrawResult PrepareToDrawOnThread(LayerTreeHostImpl* host_impl, |
729 LayerTreeHostImpl::FrameData* frame_data, | 729 FrameData* frame_data, |
730 DrawResult draw_result) override { | 730 DrawResult draw_result) override { |
731 EXPECT_EQ(DRAW_SUCCESS, draw_result); | 731 EXPECT_EQ(DRAW_SUCCESS, draw_result); |
732 | 732 |
733 gfx::RectF root_damage_rect; | 733 gfx::RectF root_damage_rect; |
734 if (!frame_data->render_passes.empty()) | 734 if (!frame_data->render_passes.empty()) |
735 root_damage_rect = frame_data->render_passes.back()->damage_rect; | 735 root_damage_rect = frame_data->render_passes.back()->damage_rect; |
736 | 736 |
737 // The first time, the whole view needs be drawn. | 737 // The first time, the whole view needs be drawn. |
738 // Afterwards, just the opacity of surface_layer1 is changed a few times, | 738 // Afterwards, just the opacity of surface_layer1 is changed a few times, |
739 // and each damage should be the bounding box of it and its child. If this | 739 // and each damage should be the bounding box of it and its child. If this |
(...skipping 513 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1253 FakePictureLayerImpl* root = | 1253 FakePictureLayerImpl* root = |
1254 static_cast<FakePictureLayerImpl*>(impl->active_tree()->root_layer()); | 1254 static_cast<FakePictureLayerImpl*>(impl->active_tree()->root_layer()); |
1255 FakePictureLayerImpl* child = static_cast<FakePictureLayerImpl*>( | 1255 FakePictureLayerImpl* child = static_cast<FakePictureLayerImpl*>( |
1256 impl->active_tree()->root_layer()->children()[0]); | 1256 impl->active_tree()->root_layer()->children()[0]); |
1257 | 1257 |
1258 // Positions remain in layout pixels. | 1258 // Positions remain in layout pixels. |
1259 EXPECT_EQ(gfx::Point(0, 0), root->position()); | 1259 EXPECT_EQ(gfx::Point(0, 0), root->position()); |
1260 EXPECT_EQ(gfx::Point(2, 2), child->position()); | 1260 EXPECT_EQ(gfx::Point(2, 2), child->position()); |
1261 | 1261 |
1262 // Compute all the layer transforms for the frame. | 1262 // Compute all the layer transforms for the frame. |
1263 LayerTreeHostImpl::FrameData frame_data; | 1263 FrameData frame_data; |
1264 impl->PrepareToDraw(&frame_data); | 1264 impl->PrepareToDraw(&frame_data); |
1265 impl->DidDrawAllLayers(frame_data); | 1265 impl->DidDrawAllLayers(frame_data); |
1266 | 1266 |
1267 const LayerImplList& render_surface_layer_list = | 1267 const LayerImplList& render_surface_layer_list = |
1268 *frame_data.render_surface_layer_list; | 1268 *frame_data.render_surface_layer_list; |
1269 | 1269 |
1270 // Both layers should be drawing into the root render surface. | 1270 // Both layers should be drawing into the root render surface. |
1271 ASSERT_EQ(1u, render_surface_layer_list.size()); | 1271 ASSERT_EQ(1u, render_surface_layer_list.size()); |
1272 ASSERT_EQ(root->render_surface(), | 1272 ASSERT_EQ(root->render_surface(), |
1273 render_surface_layer_list[0]->render_surface()); | 1273 render_surface_layer_list[0]->render_surface()); |
(...skipping 1149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2423 settings->use_external_begin_frame_source = true; | 2423 settings->use_external_begin_frame_source = true; |
2424 } | 2424 } |
2425 | 2425 |
2426 void BeginTest() override { | 2426 void BeginTest() override { |
2427 // This will trigger a SetNeedsBeginFrame which will trigger a | 2427 // This will trigger a SetNeedsBeginFrame which will trigger a |
2428 // BeginFrame. | 2428 // BeginFrame. |
2429 PostSetNeedsCommitToMainThread(); | 2429 PostSetNeedsCommitToMainThread(); |
2430 } | 2430 } |
2431 | 2431 |
2432 DrawResult PrepareToDrawOnThread(LayerTreeHostImpl* host_impl, | 2432 DrawResult PrepareToDrawOnThread(LayerTreeHostImpl* host_impl, |
2433 LayerTreeHostImpl::FrameData* frame, | 2433 FrameData* frame, |
2434 DrawResult draw_result) override { | 2434 DrawResult draw_result) override { |
2435 EndTest(); | 2435 EndTest(); |
2436 return DRAW_SUCCESS; | 2436 return DRAW_SUCCESS; |
2437 } | 2437 } |
2438 | 2438 |
2439 void AfterTest() override {} | 2439 void AfterTest() override {} |
2440 | 2440 |
2441 private: | 2441 private: |
2442 base::TimeTicks frame_time_; | 2442 base::TimeTicks frame_time_; |
2443 }; | 2443 }; |
(...skipping 286 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2730 texImageIOSurface2DCHROMIUM(GL_TEXTURE_RECTANGLE_ARB, | 2730 texImageIOSurface2DCHROMIUM(GL_TEXTURE_RECTANGLE_ARB, |
2731 io_surface_size_.width(), | 2731 io_surface_size_.width(), |
2732 io_surface_size_.height(), | 2732 io_surface_size_.height(), |
2733 io_surface_id_, | 2733 io_surface_id_, |
2734 0)).Times(1); | 2734 0)).Times(1); |
2735 | 2735 |
2736 EXPECT_CALL(*mock_context_, bindTexture(_, 0)).Times(AnyNumber()); | 2736 EXPECT_CALL(*mock_context_, bindTexture(_, 0)).Times(AnyNumber()); |
2737 } | 2737 } |
2738 | 2738 |
2739 DrawResult PrepareToDrawOnThread(LayerTreeHostImpl* host_impl, | 2739 DrawResult PrepareToDrawOnThread(LayerTreeHostImpl* host_impl, |
2740 LayerTreeHostImpl::FrameData* frame, | 2740 FrameData* frame, |
2741 DrawResult draw_result) override { | 2741 DrawResult draw_result) override { |
2742 Mock::VerifyAndClearExpectations(&mock_context_); | 2742 Mock::VerifyAndClearExpectations(&mock_context_); |
2743 ResourceProvider* resource_provider = host_impl->resource_provider(); | 2743 ResourceProvider* resource_provider = host_impl->resource_provider(); |
2744 EXPECT_EQ(1u, resource_provider->num_resources()); | 2744 EXPECT_EQ(1u, resource_provider->num_resources()); |
2745 CHECK_EQ(1u, frame->render_passes.size()); | 2745 CHECK_EQ(1u, frame->render_passes.size()); |
2746 CHECK_LE(1u, frame->render_passes[0]->quad_list.size()); | 2746 CHECK_LE(1u, frame->render_passes[0]->quad_list.size()); |
2747 const DrawQuad* quad = frame->render_passes[0]->quad_list.front(); | 2747 const DrawQuad* quad = frame->render_passes[0]->quad_list.front(); |
2748 CHECK_EQ(DrawQuad::IO_SURFACE_CONTENT, quad->material); | 2748 CHECK_EQ(DrawQuad::IO_SURFACE_CONTENT, quad->material); |
2749 const IOSurfaceDrawQuad* io_surface_draw_quad = | 2749 const IOSurfaceDrawQuad* io_surface_draw_quad = |
2750 IOSurfaceDrawQuad::MaterialCast(quad); | 2750 IOSurfaceDrawQuad::MaterialCast(quad); |
(...skipping 1316 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4067 public: | 4067 public: |
4068 LayerTreeHostTestTreeActivationCallback() | 4068 LayerTreeHostTestTreeActivationCallback() |
4069 : num_commits_(0), callback_count_(0) {} | 4069 : num_commits_(0), callback_count_(0) {} |
4070 | 4070 |
4071 void BeginTest() override { | 4071 void BeginTest() override { |
4072 EXPECT_TRUE(HasImplThread()); | 4072 EXPECT_TRUE(HasImplThread()); |
4073 PostSetNeedsCommitToMainThread(); | 4073 PostSetNeedsCommitToMainThread(); |
4074 } | 4074 } |
4075 | 4075 |
4076 DrawResult PrepareToDrawOnThread(LayerTreeHostImpl* host_impl, | 4076 DrawResult PrepareToDrawOnThread(LayerTreeHostImpl* host_impl, |
4077 LayerTreeHostImpl::FrameData* frame_data, | 4077 FrameData* frame_data, |
4078 DrawResult draw_result) override { | 4078 DrawResult draw_result) override { |
4079 ++num_commits_; | 4079 ++num_commits_; |
4080 switch (num_commits_) { | 4080 switch (num_commits_) { |
4081 case 1: | 4081 case 1: |
4082 EXPECT_EQ(0, callback_count_); | 4082 EXPECT_EQ(0, callback_count_); |
4083 callback_count_ = 0; | 4083 callback_count_ = 0; |
4084 SetCallback(true); | 4084 SetCallback(true); |
4085 PostSetNeedsCommitToMainThread(); | 4085 PostSetNeedsCommitToMainThread(); |
4086 break; | 4086 break; |
4087 case 2: | 4087 case 2: |
(...skipping 1486 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5574 pinch->AddChild(layer); | 5574 pinch->AddChild(layer); |
5575 | 5575 |
5576 layer_tree_host()->RegisterViewportLayers(NULL, root, pinch, pinch); | 5576 layer_tree_host()->RegisterViewportLayers(NULL, root, pinch, pinch); |
5577 layer_tree_host()->SetPageScaleFactorAndLimits(1.f, 1.f, 4.f); | 5577 layer_tree_host()->SetPageScaleFactorAndLimits(1.f, 1.f, 4.f); |
5578 layer_tree_host()->SetRootLayer(root); | 5578 layer_tree_host()->SetRootLayer(root); |
5579 LayerTreeHostTest::SetupTree(); | 5579 LayerTreeHostTest::SetupTree(); |
5580 } | 5580 } |
5581 | 5581 |
5582 // Returns the delta scale of all quads in the frame's root pass from their | 5582 // Returns the delta scale of all quads in the frame's root pass from their |
5583 // ideal, or 0 if they are not all the same. | 5583 // ideal, or 0 if they are not all the same. |
5584 float FrameQuadScaleDeltaFromIdeal(LayerTreeHostImpl::FrameData* frame_data) { | 5584 float FrameQuadScaleDeltaFromIdeal(FrameData* frame_data) { |
5585 if (frame_data->has_no_damage) | 5585 if (frame_data->has_no_damage) |
5586 return 0.f; | 5586 return 0.f; |
5587 float frame_scale = 0.f; | 5587 float frame_scale = 0.f; |
5588 RenderPass* root_pass = frame_data->render_passes.back(); | 5588 RenderPass* root_pass = frame_data->render_passes.back(); |
5589 for (const auto& draw_quad : root_pass->quad_list) { | 5589 for (const auto& draw_quad : root_pass->quad_list) { |
5590 // Checkerboards mean an incomplete frame. | 5590 // Checkerboards mean an incomplete frame. |
5591 if (draw_quad->material != DrawQuad::TILED_CONTENT) | 5591 if (draw_quad->material != DrawQuad::TILED_CONTENT) |
5592 return 0.f; | 5592 return 0.f; |
5593 const TileDrawQuad* quad = TileDrawQuad::MaterialCast(draw_quad); | 5593 const TileDrawQuad* quad = TileDrawQuad::MaterialCast(draw_quad); |
5594 float quad_scale = | 5594 float quad_scale = |
5595 quad->tex_coord_rect.width() / static_cast<float>(quad->rect.width()); | 5595 quad->tex_coord_rect.width() / static_cast<float>(quad->rect.width()); |
5596 float transform_scale = | 5596 float transform_scale = |
5597 SkMScalarToFloat(quad->quadTransform().matrix().get(0, 0)); | 5597 SkMScalarToFloat(quad->quadTransform().matrix().get(0, 0)); |
5598 float scale = quad_scale / transform_scale; | 5598 float scale = quad_scale / transform_scale; |
5599 if (frame_scale != 0.f && frame_scale != scale) | 5599 if (frame_scale != 0.f && frame_scale != scale) |
5600 return 0.f; | 5600 return 0.f; |
5601 frame_scale = scale; | 5601 frame_scale = scale; |
5602 } | 5602 } |
5603 return frame_scale; | 5603 return frame_scale; |
5604 } | 5604 } |
5605 | 5605 |
5606 void BeginTest() override { PostSetNeedsCommitToMainThread(); } | 5606 void BeginTest() override { PostSetNeedsCommitToMainThread(); } |
5607 | 5607 |
5608 DrawResult PrepareToDrawOnThread(LayerTreeHostImpl* host_impl, | 5608 DrawResult PrepareToDrawOnThread(LayerTreeHostImpl* host_impl, |
5609 LayerTreeHostImpl::FrameData* frame_data, | 5609 FrameData* frame_data, |
5610 DrawResult draw_result) override { | 5610 DrawResult draw_result) override { |
5611 float quad_scale_delta = FrameQuadScaleDeltaFromIdeal(frame_data); | 5611 float quad_scale_delta = FrameQuadScaleDeltaFromIdeal(frame_data); |
5612 switch (frame_) { | 5612 switch (frame_) { |
5613 case 1: | 5613 case 1: |
5614 // Drew at page scale 1 before any pinching. | 5614 // Drew at page scale 1 before any pinching. |
5615 EXPECT_EQ(1.f, host_impl->active_tree()->current_page_scale_factor()); | 5615 EXPECT_EQ(1.f, host_impl->active_tree()->current_page_scale_factor()); |
5616 EXPECT_EQ(1.f, quad_scale_delta); | 5616 EXPECT_EQ(1.f, quad_scale_delta); |
5617 PostNextAfterDraw(host_impl); | 5617 PostNextAfterDraw(host_impl); |
5618 break; | 5618 break; |
5619 case 2: | 5619 case 2: |
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5774 layer->SetContentsOpaque(true); | 5774 layer->SetContentsOpaque(true); |
5775 root->AddChild(layer); | 5775 root->AddChild(layer); |
5776 | 5776 |
5777 layer_tree_host()->SetRootLayer(root); | 5777 layer_tree_host()->SetRootLayer(root); |
5778 LayerTreeHostTest::SetupTree(); | 5778 LayerTreeHostTest::SetupTree(); |
5779 } | 5779 } |
5780 | 5780 |
5781 void BeginTest() override { PostSetNeedsCommitToMainThread(); } | 5781 void BeginTest() override { PostSetNeedsCommitToMainThread(); } |
5782 | 5782 |
5783 DrawResult PrepareToDrawOnThread(LayerTreeHostImpl* host_impl, | 5783 DrawResult PrepareToDrawOnThread(LayerTreeHostImpl* host_impl, |
5784 LayerTreeHostImpl::FrameData* frame_data, | 5784 FrameData* frame_data, |
5785 DrawResult draw_result) override { | 5785 DrawResult draw_result) override { |
5786 EXPECT_NE(0u, host_impl->resource_provider()->num_resources()); | 5786 EXPECT_NE(0u, host_impl->resource_provider()->num_resources()); |
5787 EndTest(); | 5787 EndTest(); |
5788 return draw_result; | 5788 return draw_result; |
5789 } | 5789 } |
5790 void AfterTest() override {} | 5790 void AfterTest() override {} |
5791 | 5791 |
5792 FakeContentLayerClient client_; | 5792 FakeContentLayerClient client_; |
5793 }; | 5793 }; |
5794 | 5794 |
(...skipping 24 matching lines...) Expand all Loading... |
5819 root->SetContentsOpaque(true); | 5819 root->SetContentsOpaque(true); |
5820 | 5820 |
5821 layer_tree_host()->SetRootLayer(root); | 5821 layer_tree_host()->SetRootLayer(root); |
5822 LayerTreeHostTest::SetupTree(); | 5822 LayerTreeHostTest::SetupTree(); |
5823 layer_tree_host()->SetViewportSize(viewport_size_); | 5823 layer_tree_host()->SetViewportSize(viewport_size_); |
5824 } | 5824 } |
5825 | 5825 |
5826 void BeginTest() override { PostSetNeedsCommitToMainThread(); } | 5826 void BeginTest() override { PostSetNeedsCommitToMainThread(); } |
5827 | 5827 |
5828 DrawResult PrepareToDrawOnThread(LayerTreeHostImpl* host_impl, | 5828 DrawResult PrepareToDrawOnThread(LayerTreeHostImpl* host_impl, |
5829 LayerTreeHostImpl::FrameData* frame_data, | 5829 FrameData* frame_data, |
5830 DrawResult draw_result) override { | 5830 DrawResult draw_result) override { |
5831 EXPECT_EQ(4u, host_impl->resource_provider()->num_resources()); | 5831 EXPECT_EQ(4u, host_impl->resource_provider()->num_resources()); |
5832 | 5832 |
5833 // Verify which tiles got resources using an eviction iterator, which has to | 5833 // Verify which tiles got resources using an eviction iterator, which has to |
5834 // return all tiles that have resources. | 5834 // return all tiles that have resources. |
5835 scoped_ptr<EvictionTilePriorityQueue> eviction_queue( | 5835 scoped_ptr<EvictionTilePriorityQueue> eviction_queue( |
5836 host_impl->BuildEvictionQueue(SAME_PRIORITY_FOR_BOTH_TREES)); | 5836 host_impl->BuildEvictionQueue(SAME_PRIORITY_FOR_BOTH_TREES)); |
5837 int tile_count = 0; | 5837 int tile_count = 0; |
5838 for (; !eviction_queue->IsEmpty(); eviction_queue->Pop()) { | 5838 for (; !eviction_queue->IsEmpty(); eviction_queue->Pop()) { |
5839 Tile* tile = eviction_queue->Top(); | 5839 Tile* tile = eviction_queue->Top(); |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5882 root->SetContentsOpaque(true); | 5882 root->SetContentsOpaque(true); |
5883 | 5883 |
5884 layer_tree_host()->SetRootLayer(root); | 5884 layer_tree_host()->SetRootLayer(root); |
5885 LayerTreeHostTest::SetupTree(); | 5885 LayerTreeHostTest::SetupTree(); |
5886 layer_tree_host()->SetViewportSize(viewport_size_); | 5886 layer_tree_host()->SetViewportSize(viewport_size_); |
5887 } | 5887 } |
5888 | 5888 |
5889 void BeginTest() override { PostSetNeedsCommitToMainThread(); } | 5889 void BeginTest() override { PostSetNeedsCommitToMainThread(); } |
5890 | 5890 |
5891 DrawResult PrepareToDrawOnThread(LayerTreeHostImpl* host_impl, | 5891 DrawResult PrepareToDrawOnThread(LayerTreeHostImpl* host_impl, |
5892 LayerTreeHostImpl::FrameData* frame_data, | 5892 FrameData* frame_data, |
5893 DrawResult draw_result) override { | 5893 DrawResult draw_result) override { |
5894 EXPECT_EQ(10u, host_impl->resource_provider()->num_resources()); | 5894 EXPECT_EQ(10u, host_impl->resource_provider()->num_resources()); |
5895 EndTest(); | 5895 EndTest(); |
5896 return draw_result; | 5896 return draw_result; |
5897 } | 5897 } |
5898 | 5898 |
5899 void AfterTest() override {} | 5899 void AfterTest() override {} |
5900 | 5900 |
5901 private: | 5901 private: |
5902 FakeContentLayerClient client_; | 5902 FakeContentLayerClient client_; |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5943 pinch->AddChild(layer); | 5943 pinch->AddChild(layer); |
5944 | 5944 |
5945 layer_tree_host()->RegisterViewportLayers(NULL, root, pinch, pinch); | 5945 layer_tree_host()->RegisterViewportLayers(NULL, root, pinch, pinch); |
5946 layer_tree_host()->SetPageScaleFactorAndLimits(1.f, 1.f, 4.f); | 5946 layer_tree_host()->SetPageScaleFactorAndLimits(1.f, 1.f, 4.f); |
5947 layer_tree_host()->SetRootLayer(root); | 5947 layer_tree_host()->SetRootLayer(root); |
5948 LayerTreeHostTest::SetupTree(); | 5948 LayerTreeHostTest::SetupTree(); |
5949 } | 5949 } |
5950 | 5950 |
5951 // Returns the delta scale of all quads in the frame's root pass from their | 5951 // Returns the delta scale of all quads in the frame's root pass from their |
5952 // ideal, or 0 if they are not all the same. | 5952 // ideal, or 0 if they are not all the same. |
5953 float FrameQuadScaleDeltaFromIdeal(LayerTreeHostImpl::FrameData* frame_data) { | 5953 float FrameQuadScaleDeltaFromIdeal(FrameData* frame_data) { |
5954 if (frame_data->has_no_damage) | 5954 if (frame_data->has_no_damage) |
5955 return 0.f; | 5955 return 0.f; |
5956 float frame_scale = 0.f; | 5956 float frame_scale = 0.f; |
5957 RenderPass* root_pass = frame_data->render_passes.back(); | 5957 RenderPass* root_pass = frame_data->render_passes.back(); |
5958 for (const auto& draw_quad : root_pass->quad_list) { | 5958 for (const auto& draw_quad : root_pass->quad_list) { |
5959 const TileDrawQuad* quad = TileDrawQuad::MaterialCast(draw_quad); | 5959 const TileDrawQuad* quad = TileDrawQuad::MaterialCast(draw_quad); |
5960 float quad_scale = | 5960 float quad_scale = |
5961 quad->tex_coord_rect.width() / static_cast<float>(quad->rect.width()); | 5961 quad->tex_coord_rect.width() / static_cast<float>(quad->rect.width()); |
5962 float transform_scale = | 5962 float transform_scale = |
5963 SkMScalarToFloat(quad->quadTransform().matrix().get(0, 0)); | 5963 SkMScalarToFloat(quad->quadTransform().matrix().get(0, 0)); |
5964 float scale = quad_scale / transform_scale; | 5964 float scale = quad_scale / transform_scale; |
5965 if (frame_scale != 0.f && frame_scale != scale) | 5965 if (frame_scale != 0.f && frame_scale != scale) |
5966 return 0.f; | 5966 return 0.f; |
5967 frame_scale = scale; | 5967 frame_scale = scale; |
5968 } | 5968 } |
5969 return frame_scale; | 5969 return frame_scale; |
5970 } | 5970 } |
5971 | 5971 |
5972 void BeginTest() override { PostSetNeedsCommitToMainThread(); } | 5972 void BeginTest() override { PostSetNeedsCommitToMainThread(); } |
5973 | 5973 |
5974 DrawResult PrepareToDrawOnThread(LayerTreeHostImpl* host_impl, | 5974 DrawResult PrepareToDrawOnThread(LayerTreeHostImpl* host_impl, |
5975 LayerTreeHostImpl::FrameData* frame_data, | 5975 FrameData* frame_data, |
5976 DrawResult draw_result) override { | 5976 DrawResult draw_result) override { |
5977 float quad_scale_delta = FrameQuadScaleDeltaFromIdeal(frame_data); | 5977 float quad_scale_delta = FrameQuadScaleDeltaFromIdeal(frame_data); |
5978 switch (step_) { | 5978 switch (step_) { |
5979 case 1: | 5979 case 1: |
5980 // Drew at scale 1 before any pinching. | 5980 // Drew at scale 1 before any pinching. |
5981 EXPECT_EQ(1.f, host_impl->active_tree()->current_page_scale_factor()); | 5981 EXPECT_EQ(1.f, host_impl->active_tree()->current_page_scale_factor()); |
5982 EXPECT_EQ(1.f, quad_scale_delta); | 5982 EXPECT_EQ(1.f, quad_scale_delta); |
5983 break; | 5983 break; |
5984 case 2: | 5984 case 2: |
5985 if (quad_scale_delta != 1.f / 1.5f) | 5985 if (quad_scale_delta != 1.f / 1.5f) |
(...skipping 375 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6361 | 6361 |
6362 void AfterTest() override {} | 6362 void AfterTest() override {} |
6363 | 6363 |
6364 private: | 6364 private: |
6365 scoped_refptr<Layer> child_; | 6365 scoped_refptr<Layer> child_; |
6366 }; | 6366 }; |
6367 | 6367 |
6368 SINGLE_AND_MULTI_THREAD_TEST_F(LayerPreserveRenderSurfaceFromOutputRequests); | 6368 SINGLE_AND_MULTI_THREAD_TEST_F(LayerPreserveRenderSurfaceFromOutputRequests); |
6369 | 6369 |
6370 } // namespace cc | 6370 } // namespace cc |
OLD | NEW |