| 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 |