OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/layers/picture_layer_impl.h" | 5 #include "cc/layers/picture_layer_impl.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <limits> | 8 #include <limits> |
9 #include <set> | 9 #include <set> |
10 #include <utility> | 10 #include <utility> |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
52 public: | 52 public: |
53 LowResTilingsSettings() { create_low_res_tiling = true; } | 53 LowResTilingsSettings() { create_low_res_tiling = true; } |
54 }; | 54 }; |
55 | 55 |
56 class PictureLayerImplTest : public testing::Test { | 56 class PictureLayerImplTest : public testing::Test { |
57 public: | 57 public: |
58 PictureLayerImplTest() | 58 PictureLayerImplTest() |
59 : proxy_(base::MessageLoopProxy::current()), | 59 : proxy_(base::MessageLoopProxy::current()), |
60 host_impl_(LowResTilingsSettings(), &proxy_, &shared_bitmap_manager_), | 60 host_impl_(LowResTilingsSettings(), &proxy_, &shared_bitmap_manager_), |
61 id_(7), | 61 id_(7), |
62 pending_layer_(NULL), | 62 pending_layer_(nullptr), |
63 old_pending_layer_(NULL), | 63 old_pending_layer_(nullptr), |
64 active_layer_(NULL) {} | 64 active_layer_(nullptr) {} |
65 | 65 |
66 explicit PictureLayerImplTest(const LayerTreeSettings& settings) | 66 explicit PictureLayerImplTest(const LayerTreeSettings& settings) |
67 : proxy_(base::MessageLoopProxy::current()), | 67 : proxy_(base::MessageLoopProxy::current()), |
68 host_impl_(settings, &proxy_, &shared_bitmap_manager_), | 68 host_impl_(settings, &proxy_, &shared_bitmap_manager_), |
69 id_(7) {} | 69 id_(7) {} |
70 | 70 |
71 virtual ~PictureLayerImplTest() { | 71 virtual ~PictureLayerImplTest() { |
72 } | 72 } |
73 | 73 |
74 virtual void SetUp() override { | 74 virtual void SetUp() override { |
(...skipping 13 matching lines...) Expand all Loading... |
88 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 88 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); |
89 | 89 |
90 SetupTrees(pending_pile, active_pile); | 90 SetupTrees(pending_pile, active_pile); |
91 } | 91 } |
92 | 92 |
93 void ActivateTree() { | 93 void ActivateTree() { |
94 host_impl_.ActivateSyncTree(); | 94 host_impl_.ActivateSyncTree(); |
95 CHECK(!host_impl_.pending_tree()); | 95 CHECK(!host_impl_.pending_tree()); |
96 CHECK(host_impl_.recycle_tree()); | 96 CHECK(host_impl_.recycle_tree()); |
97 old_pending_layer_ = pending_layer_; | 97 old_pending_layer_ = pending_layer_; |
98 pending_layer_ = NULL; | 98 pending_layer_ = nullptr; |
99 active_layer_ = static_cast<FakePictureLayerImpl*>( | 99 active_layer_ = static_cast<FakePictureLayerImpl*>( |
100 host_impl_.active_tree()->LayerById(id_)); | 100 host_impl_.active_tree()->LayerById(id_)); |
101 } | 101 } |
102 | 102 |
103 void SetupDefaultTreesWithFixedTileSize(const gfx::Size& layer_bounds, | 103 void SetupDefaultTreesWithFixedTileSize(const gfx::Size& layer_bounds, |
104 const gfx::Size& tile_size) { | 104 const gfx::Size& tile_size) { |
105 SetupDefaultTrees(layer_bounds); | 105 SetupDefaultTrees(layer_bounds); |
106 pending_layer_->set_fixed_tile_size(tile_size); | 106 pending_layer_->set_fixed_tile_size(tile_size); |
107 active_layer_->set_fixed_tile_size(tile_size); | 107 active_layer_->set_fixed_tile_size(tile_size); |
108 } | 108 } |
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
251 rects.push_back(SkRect::MakeXYWH(rect.x(), rect.y(), 1, 1)); | 251 rects.push_back(SkRect::MakeXYWH(rect.x(), rect.y(), 1, 1)); |
252 } | 252 } |
253 // Force re-record with newly injected content | 253 // Force re-record with newly injected content |
254 active_pile->RemoveRecordingAt(0, 0); | 254 active_pile->RemoveRecordingAt(0, 0); |
255 active_pile->AddRecordingAt(0, 0); | 255 active_pile->AddRecordingAt(0, 0); |
256 | 256 |
257 std::vector<SkRect>::const_iterator rect_iter = rects.begin(); | 257 std::vector<SkRect>::const_iterator rect_iter = rects.begin(); |
258 for (tile_iter = tiles.begin(); tile_iter < tiles.end(); tile_iter++) { | 258 for (tile_iter = tiles.begin(); tile_iter < tiles.end(); tile_iter++) { |
259 MockCanvas mock_canvas(1000, 1000); | 259 MockCanvas mock_canvas(1000, 1000); |
260 active_pile->RasterDirect( | 260 active_pile->RasterDirect( |
261 &mock_canvas, (*tile_iter)->content_rect(), 1.0f, NULL); | 261 &mock_canvas, (*tile_iter)->content_rect(), 1.0f, nullptr); |
262 | 262 |
263 // This test verifies that when drawing the contents of a specific tile | 263 // This test verifies that when drawing the contents of a specific tile |
264 // at content scale 1.0, the playback canvas never receives content from | 264 // at content scale 1.0, the playback canvas never receives content from |
265 // neighboring tiles which indicates that the tile grid embedded in | 265 // neighboring tiles which indicates that the tile grid embedded in |
266 // SkPicture is perfectly aligned with the compositor's tiles. | 266 // SkPicture is perfectly aligned with the compositor's tiles. |
267 EXPECT_EQ(1u, mock_canvas.rects_.size()); | 267 EXPECT_EQ(1u, mock_canvas.rects_.size()); |
268 EXPECT_EQ(*rect_iter, mock_canvas.rects_[0]); | 268 EXPECT_EQ(*rect_iter, mock_canvas.rects_[0]); |
269 rect_iter++; | 269 rect_iter++; |
270 } | 270 } |
271 } | 271 } |
(...skipping 1102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1374 SetupTrees(pending_pile, active_pile); | 1374 SetupTrees(pending_pile, active_pile); |
1375 | 1375 |
1376 active_layer_->draw_properties().visible_content_rect = | 1376 active_layer_->draw_properties().visible_content_rect = |
1377 gfx::Rect(layer_bounds); | 1377 gfx::Rect(layer_bounds); |
1378 | 1378 |
1379 gfx::Rect layer_invalidation(150, 200, 30, 180); | 1379 gfx::Rect layer_invalidation(150, 200, 30, 180); |
1380 Region invalidation(layer_invalidation); | 1380 Region invalidation(layer_invalidation); |
1381 AddDefaultTilingsWithInvalidation(invalidation); | 1381 AddDefaultTilingsWithInvalidation(invalidation); |
1382 | 1382 |
1383 AppendQuadsData data; | 1383 AppendQuadsData data; |
1384 active_layer_->WillDraw(DRAW_MODE_RESOURCELESS_SOFTWARE, NULL); | 1384 active_layer_->WillDraw(DRAW_MODE_RESOURCELESS_SOFTWARE, nullptr); |
1385 active_layer_->AppendQuads(render_pass.get(), Occlusion(), &data); | 1385 active_layer_->AppendQuads(render_pass.get(), Occlusion(), &data); |
1386 active_layer_->DidDraw(NULL); | 1386 active_layer_->DidDraw(nullptr); |
1387 | 1387 |
1388 ASSERT_EQ(1U, render_pass->quad_list.size()); | 1388 ASSERT_EQ(1U, render_pass->quad_list.size()); |
1389 EXPECT_EQ(DrawQuad::PICTURE_CONTENT, | 1389 EXPECT_EQ(DrawQuad::PICTURE_CONTENT, |
1390 render_pass->quad_list.front()->material); | 1390 render_pass->quad_list.front()->material); |
1391 } | 1391 } |
1392 | 1392 |
1393 TEST_F(PictureLayerImplTest, MarkRequiredNullTiles) { | 1393 TEST_F(PictureLayerImplTest, MarkRequiredNullTiles) { |
1394 gfx::Size tile_size(100, 100); | 1394 gfx::Size tile_size(100, 100); |
1395 gfx::Size layer_bounds(1000, 1000); | 1395 gfx::Size layer_bounds(1000, 1000); |
1396 | 1396 |
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1558 EXPECT_GT(num_inside, 0); | 1558 EXPECT_GT(num_inside, 0); |
1559 EXPECT_GT(num_outside, 0); | 1559 EXPECT_GT(num_outside, 0); |
1560 | 1560 |
1561 // Activate and draw active layer. | 1561 // Activate and draw active layer. |
1562 host_impl_.ActivateSyncTree(); | 1562 host_impl_.ActivateSyncTree(); |
1563 host_impl_.active_tree()->UpdateDrawProperties(); | 1563 host_impl_.active_tree()->UpdateDrawProperties(); |
1564 active_layer_->draw_properties().visible_content_rect = visible_content_rect; | 1564 active_layer_->draw_properties().visible_content_rect = visible_content_rect; |
1565 | 1565 |
1566 scoped_ptr<RenderPass> render_pass = RenderPass::Create(); | 1566 scoped_ptr<RenderPass> render_pass = RenderPass::Create(); |
1567 AppendQuadsData data; | 1567 AppendQuadsData data; |
1568 active_layer_->WillDraw(DRAW_MODE_SOFTWARE, NULL); | 1568 active_layer_->WillDraw(DRAW_MODE_SOFTWARE, nullptr); |
1569 active_layer_->AppendQuads(render_pass.get(), Occlusion(), &data); | 1569 active_layer_->AppendQuads(render_pass.get(), Occlusion(), &data); |
1570 active_layer_->DidDraw(NULL); | 1570 active_layer_->DidDraw(nullptr); |
1571 | 1571 |
1572 // All tiles in activation rect is ready to draw. | 1572 // All tiles in activation rect is ready to draw. |
1573 EXPECT_EQ(0u, data.num_missing_tiles); | 1573 EXPECT_EQ(0u, data.num_missing_tiles); |
1574 EXPECT_EQ(0u, data.num_incomplete_tiles); | 1574 EXPECT_EQ(0u, data.num_incomplete_tiles); |
1575 } | 1575 } |
1576 | 1576 |
1577 TEST_F(PictureLayerImplTest, HighResTileIsComplete) { | 1577 TEST_F(PictureLayerImplTest, HighResTileIsComplete) { |
1578 base::TimeTicks time_ticks; | 1578 base::TimeTicks time_ticks; |
1579 time_ticks += base::TimeDelta::FromMilliseconds(1); | 1579 time_ticks += base::TimeDelta::FromMilliseconds(1); |
1580 host_impl_.SetCurrentBeginFrameArgs( | 1580 host_impl_.SetCurrentBeginFrameArgs( |
(...skipping 11 matching lines...) Expand all Loading... |
1592 | 1592 |
1593 // All high res tiles have resources. | 1593 // All high res tiles have resources. |
1594 active_layer_->set_fixed_tile_size(tile_size); | 1594 active_layer_->set_fixed_tile_size(tile_size); |
1595 host_impl_.active_tree()->UpdateDrawProperties(); | 1595 host_impl_.active_tree()->UpdateDrawProperties(); |
1596 std::vector<Tile*> tiles = | 1596 std::vector<Tile*> tiles = |
1597 active_layer_->tilings()->tiling_at(0)->AllTilesForTesting(); | 1597 active_layer_->tilings()->tiling_at(0)->AllTilesForTesting(); |
1598 host_impl_.tile_manager()->InitializeTilesWithResourcesForTesting(tiles); | 1598 host_impl_.tile_manager()->InitializeTilesWithResourcesForTesting(tiles); |
1599 | 1599 |
1600 scoped_ptr<RenderPass> render_pass = RenderPass::Create(); | 1600 scoped_ptr<RenderPass> render_pass = RenderPass::Create(); |
1601 AppendQuadsData data; | 1601 AppendQuadsData data; |
1602 active_layer_->WillDraw(DRAW_MODE_SOFTWARE, NULL); | 1602 active_layer_->WillDraw(DRAW_MODE_SOFTWARE, nullptr); |
1603 active_layer_->AppendQuads(render_pass.get(), Occlusion(), &data); | 1603 active_layer_->AppendQuads(render_pass.get(), Occlusion(), &data); |
1604 active_layer_->DidDraw(NULL); | 1604 active_layer_->DidDraw(nullptr); |
1605 | 1605 |
1606 // All high res tiles drew, nothing was incomplete. | 1606 // All high res tiles drew, nothing was incomplete. |
1607 EXPECT_EQ(9u, render_pass->quad_list.size()); | 1607 EXPECT_EQ(9u, render_pass->quad_list.size()); |
1608 EXPECT_EQ(0u, data.num_missing_tiles); | 1608 EXPECT_EQ(0u, data.num_missing_tiles); |
1609 EXPECT_EQ(0u, data.num_incomplete_tiles); | 1609 EXPECT_EQ(0u, data.num_incomplete_tiles); |
1610 } | 1610 } |
1611 | 1611 |
1612 TEST_F(PictureLayerImplTest, LowResTileIsIncomplete) { | 1612 TEST_F(PictureLayerImplTest, LowResTileIsIncomplete) { |
1613 base::TimeTicks time_ticks; | 1613 base::TimeTicks time_ticks; |
1614 time_ticks += base::TimeDelta::FromMilliseconds(1); | 1614 time_ticks += base::TimeDelta::FromMilliseconds(1); |
(...skipping 18 matching lines...) Expand all Loading... |
1633 high_tiles.erase(high_tiles.begin()); | 1633 high_tiles.erase(high_tiles.begin()); |
1634 host_impl_.tile_manager()->InitializeTilesWithResourcesForTesting(high_tiles); | 1634 host_impl_.tile_manager()->InitializeTilesWithResourcesForTesting(high_tiles); |
1635 | 1635 |
1636 // All low res tiles have resources. | 1636 // All low res tiles have resources. |
1637 std::vector<Tile*> low_tiles = | 1637 std::vector<Tile*> low_tiles = |
1638 active_layer_->tilings()->tiling_at(1)->AllTilesForTesting(); | 1638 active_layer_->tilings()->tiling_at(1)->AllTilesForTesting(); |
1639 host_impl_.tile_manager()->InitializeTilesWithResourcesForTesting(low_tiles); | 1639 host_impl_.tile_manager()->InitializeTilesWithResourcesForTesting(low_tiles); |
1640 | 1640 |
1641 scoped_ptr<RenderPass> render_pass = RenderPass::Create(); | 1641 scoped_ptr<RenderPass> render_pass = RenderPass::Create(); |
1642 AppendQuadsData data; | 1642 AppendQuadsData data; |
1643 active_layer_->WillDraw(DRAW_MODE_SOFTWARE, NULL); | 1643 active_layer_->WillDraw(DRAW_MODE_SOFTWARE, nullptr); |
1644 active_layer_->AppendQuads(render_pass.get(), Occlusion(), &data); | 1644 active_layer_->AppendQuads(render_pass.get(), Occlusion(), &data); |
1645 active_layer_->DidDraw(NULL); | 1645 active_layer_->DidDraw(nullptr); |
1646 | 1646 |
1647 // The missing high res tile was replaced by a low res tile. | 1647 // The missing high res tile was replaced by a low res tile. |
1648 EXPECT_EQ(9u, render_pass->quad_list.size()); | 1648 EXPECT_EQ(9u, render_pass->quad_list.size()); |
1649 EXPECT_EQ(0u, data.num_missing_tiles); | 1649 EXPECT_EQ(0u, data.num_missing_tiles); |
1650 EXPECT_EQ(1u, data.num_incomplete_tiles); | 1650 EXPECT_EQ(1u, data.num_incomplete_tiles); |
1651 } | 1651 } |
1652 | 1652 |
1653 TEST_F(PictureLayerImplTest, | 1653 TEST_F(PictureLayerImplTest, |
1654 HighResAndIdealResTileIsCompleteWhenRasterScaleIsNotIdeal) { | 1654 HighResAndIdealResTileIsCompleteWhenRasterScaleIsNotIdeal) { |
1655 base::TimeTicks time_ticks; | 1655 base::TimeTicks time_ticks; |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1694 EXPECT_EQ(2.f, active_layer_->tilings()->tiling_at(0)->contents_scale()); | 1694 EXPECT_EQ(2.f, active_layer_->tilings()->tiling_at(0)->contents_scale()); |
1695 EXPECT_EQ(1.f, active_layer_->tilings()->tiling_at(1)->contents_scale()); | 1695 EXPECT_EQ(1.f, active_layer_->tilings()->tiling_at(1)->contents_scale()); |
1696 | 1696 |
1697 // All high res tiles have resources. | 1697 // All high res tiles have resources. |
1698 std::vector<Tile*> high_tiles = | 1698 std::vector<Tile*> high_tiles = |
1699 active_layer_->HighResTiling()->AllTilesForTesting(); | 1699 active_layer_->HighResTiling()->AllTilesForTesting(); |
1700 host_impl_.tile_manager()->InitializeTilesWithResourcesForTesting(high_tiles); | 1700 host_impl_.tile_manager()->InitializeTilesWithResourcesForTesting(high_tiles); |
1701 | 1701 |
1702 scoped_ptr<RenderPass> render_pass = RenderPass::Create(); | 1702 scoped_ptr<RenderPass> render_pass = RenderPass::Create(); |
1703 AppendQuadsData data; | 1703 AppendQuadsData data; |
1704 active_layer_->WillDraw(DRAW_MODE_SOFTWARE, NULL); | 1704 active_layer_->WillDraw(DRAW_MODE_SOFTWARE, nullptr); |
1705 active_layer_->AppendQuads(render_pass.get(), Occlusion(), &data); | 1705 active_layer_->AppendQuads(render_pass.get(), Occlusion(), &data); |
1706 active_layer_->DidDraw(NULL); | 1706 active_layer_->DidDraw(nullptr); |
1707 | 1707 |
1708 // All high res tiles drew, and the one ideal res tile drew. | 1708 // All high res tiles drew, and the one ideal res tile drew. |
1709 ASSERT_GT(render_pass->quad_list.size(), 9u); | 1709 ASSERT_GT(render_pass->quad_list.size(), 9u); |
1710 EXPECT_EQ(gfx::SizeF(99.f, 99.f), | 1710 EXPECT_EQ(gfx::SizeF(99.f, 99.f), |
1711 TileDrawQuad::MaterialCast(render_pass->quad_list.front()) | 1711 TileDrawQuad::MaterialCast(render_pass->quad_list.front()) |
1712 ->tex_coord_rect.size()); | 1712 ->tex_coord_rect.size()); |
1713 EXPECT_EQ(gfx::SizeF(49.5f, 49.5f), | 1713 EXPECT_EQ(gfx::SizeF(49.5f, 49.5f), |
1714 TileDrawQuad::MaterialCast(render_pass->quad_list.ElementAt(1)) | 1714 TileDrawQuad::MaterialCast(render_pass->quad_list.ElementAt(1)) |
1715 ->tex_coord_rect.size()); | 1715 ->tex_coord_rect.size()); |
1716 | 1716 |
(...skipping 380 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2097 // Sanity checks. | 2097 // Sanity checks. |
2098 ASSERT_EQ(3u, active_layer_->tilings()->num_tilings()); | 2098 ASSERT_EQ(3u, active_layer_->tilings()->num_tilings()); |
2099 ASSERT_EQ(tiling, active_layer_->tilings()->TilingAtScale(0.5f)); | 2099 ASSERT_EQ(tiling, active_layer_->tilings()->TilingAtScale(0.5f)); |
2100 | 2100 |
2101 // Now, set the bounds to be 1x1 (so that minimum contents scale becomes | 2101 // Now, set the bounds to be 1x1 (so that minimum contents scale becomes |
2102 // 1.0f). Note that we should also ensure that the pending layer needs post | 2102 // 1.0f). Note that we should also ensure that the pending layer needs post |
2103 // commit initialization, since this is what would happen during commit. In | 2103 // commit initialization, since this is what would happen during commit. In |
2104 // other words we want the pending layer to sync from the active layer. | 2104 // other words we want the pending layer to sync from the active layer. |
2105 pending_layer_->SetBounds(gfx::Size(1, 1)); | 2105 pending_layer_->SetBounds(gfx::Size(1, 1)); |
2106 pending_layer_->SetNeedsPostCommitInitialization(); | 2106 pending_layer_->SetNeedsPostCommitInitialization(); |
2107 pending_layer_->set_twin_layer(NULL); | 2107 pending_layer_->set_twin_layer(nullptr); |
2108 active_layer_->set_twin_layer(NULL); | 2108 active_layer_->set_twin_layer(nullptr); |
2109 EXPECT_TRUE(pending_layer_->needs_post_commit_initialization()); | 2109 EXPECT_TRUE(pending_layer_->needs_post_commit_initialization()); |
2110 | 2110 |
2111 // Update the draw properties: sync from active tree should happen here. | 2111 // Update the draw properties: sync from active tree should happen here. |
2112 host_impl_.pending_tree()->UpdateDrawProperties(); | 2112 host_impl_.pending_tree()->UpdateDrawProperties(); |
2113 | 2113 |
2114 // Another sanity check. | 2114 // Another sanity check. |
2115 ASSERT_EQ(1.f, pending_layer_->MinimumContentsScale()); | 2115 ASSERT_EQ(1.f, pending_layer_->MinimumContentsScale()); |
2116 | 2116 |
2117 // Now we should've synced 1.5f tiling, since that's the only one that doesn't | 2117 // Now we should've synced 1.5f tiling, since that's the only one that doesn't |
2118 // violate minimum contents scale. At the same time, we should've created a | 2118 // violate minimum contents scale. At the same time, we should've created a |
(...skipping 598 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2717 it = PictureLayerImpl::LayerEvictionTileIterator( | 2717 it = PictureLayerImpl::LayerEvictionTileIterator( |
2718 pending_layer_, SAME_PRIORITY_FOR_BOTH_TREES); | 2718 pending_layer_, SAME_PRIORITY_FOR_BOTH_TREES); |
2719 EXPECT_FALSE(it); | 2719 EXPECT_FALSE(it); |
2720 | 2720 |
2721 host_impl_.tile_manager()->InitializeTilesWithResourcesForTesting(all_tiles); | 2721 host_impl_.tile_manager()->InitializeTilesWithResourcesForTesting(all_tiles); |
2722 | 2722 |
2723 std::set<Tile*> unique_tiles; | 2723 std::set<Tile*> unique_tiles; |
2724 float expected_scales[] = {2.0f, 0.3f, 0.7f, low_res_factor, 1.0f}; | 2724 float expected_scales[] = {2.0f, 0.3f, 0.7f, low_res_factor, 1.0f}; |
2725 size_t scale_index = 0; | 2725 size_t scale_index = 0; |
2726 bool reached_visible = false; | 2726 bool reached_visible = false; |
2727 Tile* last_tile = NULL; | 2727 Tile* last_tile = nullptr; |
2728 for (it = PictureLayerImpl::LayerEvictionTileIterator( | 2728 for (it = PictureLayerImpl::LayerEvictionTileIterator( |
2729 pending_layer_, SAME_PRIORITY_FOR_BOTH_TREES); | 2729 pending_layer_, SAME_PRIORITY_FOR_BOTH_TREES); |
2730 it; | 2730 it; |
2731 ++it) { | 2731 ++it) { |
2732 Tile* tile = *it; | 2732 Tile* tile = *it; |
2733 if (!last_tile) | 2733 if (!last_tile) |
2734 last_tile = tile; | 2734 last_tile = tile; |
2735 | 2735 |
2736 EXPECT_TRUE(tile); | 2736 EXPECT_TRUE(tile); |
2737 | 2737 |
(...skipping 830 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3568 size_t resource_limit = max_tiles; | 3568 size_t resource_limit = max_tiles; |
3569 ManagedMemoryPolicy policy(memory_limit, | 3569 ManagedMemoryPolicy policy(memory_limit, |
3570 gpu::MemoryAllocation::CUTOFF_ALLOW_EVERYTHING, | 3570 gpu::MemoryAllocation::CUTOFF_ALLOW_EVERYTHING, |
3571 resource_limit); | 3571 resource_limit); |
3572 host_impl_.SetMemoryPolicy(policy); | 3572 host_impl_.SetMemoryPolicy(policy); |
3573 host_impl_.SetTreePriority(SAME_PRIORITY_FOR_BOTH_TREES); | 3573 host_impl_.SetTreePriority(SAME_PRIORITY_FOR_BOTH_TREES); |
3574 host_impl_.ManageTiles(); | 3574 host_impl_.ManageTiles(); |
3575 | 3575 |
3576 scoped_ptr<RenderPass> render_pass = RenderPass::Create(); | 3576 scoped_ptr<RenderPass> render_pass = RenderPass::Create(); |
3577 AppendQuadsData data; | 3577 AppendQuadsData data; |
3578 active_layer_->WillDraw(DRAW_MODE_HARDWARE, NULL); | 3578 active_layer_->WillDraw(DRAW_MODE_HARDWARE, nullptr); |
3579 active_layer_->AppendQuads(render_pass.get(), Occlusion(), &data); | 3579 active_layer_->AppendQuads(render_pass.get(), Occlusion(), &data); |
3580 active_layer_->DidDraw(NULL); | 3580 active_layer_->DidDraw(nullptr); |
3581 | 3581 |
3582 // Even when OOM, quads should be produced, and should be different material | 3582 // Even when OOM, quads should be produced, and should be different material |
3583 // from quads with resource. | 3583 // from quads with resource. |
3584 EXPECT_LT(max_tiles, render_pass->quad_list.size()); | 3584 EXPECT_LT(max_tiles, render_pass->quad_list.size()); |
3585 EXPECT_EQ(DrawQuad::Material::TILED_CONTENT, | 3585 EXPECT_EQ(DrawQuad::Material::TILED_CONTENT, |
3586 render_pass->quad_list.front()->material); | 3586 render_pass->quad_list.front()->material); |
3587 EXPECT_EQ(DrawQuad::Material::SOLID_COLOR, | 3587 EXPECT_EQ(DrawQuad::Material::SOLID_COLOR, |
3588 render_pass->quad_list.back()->material); | 3588 render_pass->quad_list.back()->material); |
3589 } | 3589 } |
3590 | 3590 |
3591 class OcclusionTrackingSettings : public LowResTilingsSettings { | 3591 class OcclusionTrackingSettings : public LowResTilingsSettings { |
3592 public: | 3592 public: |
3593 OcclusionTrackingSettings() { use_occlusion_for_tile_prioritization = true; } | 3593 OcclusionTrackingSettings() { use_occlusion_for_tile_prioritization = true; } |
3594 }; | 3594 }; |
3595 | 3595 |
3596 class OcclusionTrackingPictureLayerImplTest : public PictureLayerImplTest { | 3596 class OcclusionTrackingPictureLayerImplTest : public PictureLayerImplTest { |
3597 public: | 3597 public: |
3598 OcclusionTrackingPictureLayerImplTest() | 3598 OcclusionTrackingPictureLayerImplTest() |
3599 : PictureLayerImplTest(OcclusionTrackingSettings()) {} | 3599 : PictureLayerImplTest(OcclusionTrackingSettings()) {} |
3600 | 3600 |
3601 void VerifyEvictionConsidersOcclusion( | 3601 void VerifyEvictionConsidersOcclusion( |
3602 PictureLayerImpl* layer, | 3602 PictureLayerImpl* layer, |
3603 size_t expected_occluded_tile_count[NUM_TREE_PRIORITIES]) { | 3603 size_t expected_occluded_tile_count[NUM_TREE_PRIORITIES]) { |
3604 for (int priority_count = 0; priority_count < NUM_TREE_PRIORITIES; | 3604 for (int priority_count = 0; priority_count < NUM_TREE_PRIORITIES; |
3605 ++priority_count) { | 3605 ++priority_count) { |
3606 TreePriority tree_priority = static_cast<TreePriority>(priority_count); | 3606 TreePriority tree_priority = static_cast<TreePriority>(priority_count); |
3607 size_t occluded_tile_count = 0u; | 3607 size_t occluded_tile_count = 0u; |
3608 Tile* last_tile = NULL; | 3608 Tile* last_tile = nullptr; |
3609 | 3609 |
3610 for (PictureLayerImpl::LayerEvictionTileIterator it = | 3610 for (PictureLayerImpl::LayerEvictionTileIterator it = |
3611 PictureLayerImpl::LayerEvictionTileIterator(layer, | 3611 PictureLayerImpl::LayerEvictionTileIterator(layer, |
3612 tree_priority); | 3612 tree_priority); |
3613 it; | 3613 it; |
3614 ++it) { | 3614 ++it) { |
3615 Tile* tile = *it; | 3615 Tile* tile = *it; |
3616 if (!last_tile) | 3616 if (!last_tile) |
3617 last_tile = tile; | 3617 last_tile = tile; |
3618 | 3618 |
(...skipping 659 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4278 host_impl_.active_tree()->UpdateDrawProperties(); | 4278 host_impl_.active_tree()->UpdateDrawProperties(); |
4279 ASSERT_GT(active_layer_->tilings()->num_tilings(), 0u); | 4279 ASSERT_GT(active_layer_->tilings()->num_tilings(), 0u); |
4280 std::vector<Tile*> tiles = | 4280 std::vector<Tile*> tiles = |
4281 active_layer_->tilings()->tiling_at(0)->AllTilesForTesting(); | 4281 active_layer_->tilings()->tiling_at(0)->AllTilesForTesting(); |
4282 EXPECT_FALSE(tiles.empty()); | 4282 EXPECT_FALSE(tiles.empty()); |
4283 host_impl_.tile_manager()->InitializeTilesWithResourcesForTesting(tiles); | 4283 host_impl_.tile_manager()->InitializeTilesWithResourcesForTesting(tiles); |
4284 } | 4284 } |
4285 | 4285 |
4286 scoped_ptr<RenderPass> render_pass = RenderPass::Create(); | 4286 scoped_ptr<RenderPass> render_pass = RenderPass::Create(); |
4287 AppendQuadsData data; | 4287 AppendQuadsData data; |
4288 active_layer_->WillDraw(DRAW_MODE_SOFTWARE, NULL); | 4288 active_layer_->WillDraw(DRAW_MODE_SOFTWARE, nullptr); |
4289 active_layer_->AppendQuads(render_pass.get(), Occlusion(), &data); | 4289 active_layer_->AppendQuads(render_pass.get(), Occlusion(), &data); |
4290 active_layer_->DidDraw(NULL); | 4290 active_layer_->DidDraw(nullptr); |
4291 | 4291 |
4292 DrawQuad::Material expected = test_for_solid | 4292 DrawQuad::Material expected = test_for_solid |
4293 ? DrawQuad::Material::SOLID_COLOR | 4293 ? DrawQuad::Material::SOLID_COLOR |
4294 : DrawQuad::Material::TILED_CONTENT; | 4294 : DrawQuad::Material::TILED_CONTENT; |
4295 EXPECT_EQ(expected, render_pass->quad_list.front()->material); | 4295 EXPECT_EQ(expected, render_pass->quad_list.front()->material); |
4296 } | 4296 } |
4297 | 4297 |
4298 TEST_F(PictureLayerImplTest, DrawSolidQuads) { | 4298 TEST_F(PictureLayerImplTest, DrawSolidQuads) { |
4299 TestQuadsForSolidColor(true); | 4299 TestQuadsForSolidColor(true); |
4300 } | 4300 } |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4370 SetupPendingTree(pending_pile2); | 4370 SetupPendingTree(pending_pile2); |
4371 ActivateTree(); | 4371 ActivateTree(); |
4372 | 4372 |
4373 // We've switched to a solid color, so we should end up with no tilings. | 4373 // We've switched to a solid color, so we should end up with no tilings. |
4374 ASSERT_TRUE(active_layer_->tilings()); | 4374 ASSERT_TRUE(active_layer_->tilings()); |
4375 EXPECT_EQ(0u, active_layer_->tilings()->num_tilings()); | 4375 EXPECT_EQ(0u, active_layer_->tilings()->num_tilings()); |
4376 } | 4376 } |
4377 | 4377 |
4378 } // namespace | 4378 } // namespace |
4379 } // namespace cc | 4379 } // namespace cc |
OLD | NEW |