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/resources/eviction_tile_priority_queue.h" | 5 #include "cc/resources/eviction_tile_priority_queue.h" |
6 #include "cc/resources/raster_tile_priority_queue.h" | 6 #include "cc/resources/raster_tile_priority_queue.h" |
7 #include "cc/resources/tile.h" | 7 #include "cc/resources/tile.h" |
8 #include "cc/resources/tile_priority.h" | 8 #include "cc/resources/tile_priority.h" |
9 #include "cc/resources/tiling_set_raster_queue_all.h" | 9 #include "cc/resources/tiling_set_raster_queue_all.h" |
10 #include "cc/test/begin_frame_args_test.h" | 10 #include "cc/test/begin_frame_args_test.h" |
11 #include "cc/test/fake_impl_proxy.h" | 11 #include "cc/test/fake_impl_proxy.h" |
12 #include "cc/test/fake_layer_tree_host_impl.h" | 12 #include "cc/test/fake_layer_tree_host_impl.h" |
13 #include "cc/test/fake_output_surface.h" | 13 #include "cc/test/fake_output_surface.h" |
14 #include "cc/test/fake_output_surface_client.h" | 14 #include "cc/test/fake_output_surface_client.h" |
15 #include "cc/test/fake_picture_layer_impl.h" | 15 #include "cc/test/fake_picture_layer_impl.h" |
16 #include "cc/test/fake_picture_layer_tiling_client.h" | 16 #include "cc/test/fake_picture_layer_tiling_client.h" |
17 #include "cc/test/fake_picture_pile_impl.h" | 17 #include "cc/test/fake_picture_pile_impl.h" |
18 #include "cc/test/fake_tile_manager.h" | 18 #include "cc/test/fake_tile_manager.h" |
19 #include "cc/test/impl_side_painting_settings.h" | 19 #include "cc/test/impl_side_painting_settings.h" |
20 #include "cc/test/test_shared_bitmap_manager.h" | 20 #include "cc/test/test_shared_bitmap_manager.h" |
| 21 #include "cc/test/test_task_graph_runner.h" |
21 #include "cc/test/test_tile_priorities.h" | 22 #include "cc/test/test_tile_priorities.h" |
22 #include "cc/trees/layer_tree_impl.h" | 23 #include "cc/trees/layer_tree_impl.h" |
23 #include "testing/gtest/include/gtest/gtest.h" | 24 #include "testing/gtest/include/gtest/gtest.h" |
24 | 25 |
25 namespace cc { | 26 namespace cc { |
26 namespace { | 27 namespace { |
27 | 28 |
28 class LowResTilingsSettings : public ImplSidePaintingSettings { | 29 class LowResTilingsSettings : public ImplSidePaintingSettings { |
29 public: | 30 public: |
30 LowResTilingsSettings() { create_low_res_tiling = true; } | 31 LowResTilingsSettings() { create_low_res_tiling = true; } |
31 }; | 32 }; |
32 | 33 |
33 class TileManagerTilePriorityQueueTest : public testing::Test { | 34 class TileManagerTilePriorityQueueTest : public testing::Test { |
34 public: | 35 public: |
35 TileManagerTilePriorityQueueTest() | 36 TileManagerTilePriorityQueueTest() |
36 : memory_limit_policy_(ALLOW_ANYTHING), | 37 : memory_limit_policy_(ALLOW_ANYTHING), |
37 max_tiles_(10000), | 38 max_tiles_(10000), |
38 ready_to_activate_(false), | 39 ready_to_activate_(false), |
39 id_(7), | 40 id_(7), |
40 proxy_(base::MessageLoopProxy::current()), | 41 proxy_(base::MessageLoopProxy::current()), |
41 host_impl_(LowResTilingsSettings(), &proxy_, &shared_bitmap_manager_) {} | 42 host_impl_(LowResTilingsSettings(), |
| 43 &proxy_, |
| 44 &shared_bitmap_manager_, |
| 45 &task_graph_runner_) {} |
42 | 46 |
43 void SetTreePriority(TreePriority tree_priority) { | 47 void SetTreePriority(TreePriority tree_priority) { |
44 GlobalStateThatImpactsTilePriority state; | 48 GlobalStateThatImpactsTilePriority state; |
45 gfx::Size tile_size(256, 256); | 49 gfx::Size tile_size(256, 256); |
46 | 50 |
47 state.soft_memory_limit_in_bytes = 100 * 1000 * 1000; | 51 state.soft_memory_limit_in_bytes = 100 * 1000 * 1000; |
48 state.num_resources_limit = max_tiles_; | 52 state.num_resources_limit = max_tiles_; |
49 state.hard_memory_limit_in_bytes = state.soft_memory_limit_in_bytes * 2; | 53 state.hard_memory_limit_in_bytes = state.soft_memory_limit_in_bytes * 2; |
50 state.memory_limit_policy = memory_limit_policy_; | 54 state.memory_limit_policy = memory_limit_policy_; |
51 state.tree_priority = tree_priority; | 55 state.tree_priority = tree_priority; |
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
130 bool update_lcd_text = false; | 134 bool update_lcd_text = false; |
131 host_impl_.pending_tree()->UpdateDrawProperties(update_lcd_text); | 135 host_impl_.pending_tree()->UpdateDrawProperties(update_lcd_text); |
132 } | 136 } |
133 | 137 |
134 TileManager* tile_manager() { return host_impl_.tile_manager(); } | 138 TileManager* tile_manager() { return host_impl_.tile_manager(); } |
135 | 139 |
136 protected: | 140 protected: |
137 GlobalStateThatImpactsTilePriority global_state_; | 141 GlobalStateThatImpactsTilePriority global_state_; |
138 | 142 |
139 TestSharedBitmapManager shared_bitmap_manager_; | 143 TestSharedBitmapManager shared_bitmap_manager_; |
| 144 TestTaskGraphRunner task_graph_runner_; |
140 TileMemoryLimitPolicy memory_limit_policy_; | 145 TileMemoryLimitPolicy memory_limit_policy_; |
141 int max_tiles_; | 146 int max_tiles_; |
142 bool ready_to_activate_; | 147 bool ready_to_activate_; |
143 int id_; | 148 int id_; |
144 FakeImplProxy proxy_; | 149 FakeImplProxy proxy_; |
145 FakeLayerTreeHostImpl host_impl_; | 150 FakeLayerTreeHostImpl host_impl_; |
146 FakePictureLayerImpl* pending_layer_; | 151 FakePictureLayerImpl* pending_layer_; |
147 FakePictureLayerImpl* active_layer_; | 152 FakePictureLayerImpl* active_layer_; |
148 }; | 153 }; |
149 | 154 |
(...skipping 1120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1270 } | 1275 } |
1271 | 1276 |
1272 EXPECT_GT(eventually_bin_order_correct_count, | 1277 EXPECT_GT(eventually_bin_order_correct_count, |
1273 eventually_bin_order_incorrect_count); | 1278 eventually_bin_order_incorrect_count); |
1274 | 1279 |
1275 EXPECT_TRUE(have_tiles[TilePriority::NOW]); | 1280 EXPECT_TRUE(have_tiles[TilePriority::NOW]); |
1276 EXPECT_TRUE(have_tiles[TilePriority::SOON]); | 1281 EXPECT_TRUE(have_tiles[TilePriority::SOON]); |
1277 EXPECT_TRUE(have_tiles[TilePriority::EVENTUALLY]); | 1282 EXPECT_TRUE(have_tiles[TilePriority::EVENTUALLY]); |
1278 } | 1283 } |
1279 | 1284 |
| 1285 TEST_F(TileManagerTilePriorityQueueTest, SetIsLikelyToRequireADraw) { |
| 1286 const gfx::Size layer_bounds(1000, 1000); |
| 1287 host_impl_.SetViewportSize(layer_bounds); |
| 1288 SetupDefaultTrees(layer_bounds); |
| 1289 |
| 1290 // Verify that the queue has a required for draw tile at Top. |
| 1291 scoped_ptr<RasterTilePriorityQueue> queue(host_impl_.BuildRasterQueue( |
| 1292 SAME_PRIORITY_FOR_BOTH_TREES, RasterTilePriorityQueue::Type::ALL)); |
| 1293 EXPECT_FALSE(queue->IsEmpty()); |
| 1294 EXPECT_TRUE(queue->Top()->required_for_draw()); |
| 1295 |
| 1296 EXPECT_FALSE(host_impl_.is_likely_to_require_a_draw()); |
| 1297 host_impl_.tile_manager()->PrepareTiles(host_impl_.global_tile_state()); |
| 1298 EXPECT_TRUE(host_impl_.is_likely_to_require_a_draw()); |
| 1299 } |
| 1300 |
| 1301 TEST_F(TileManagerTilePriorityQueueTest, |
| 1302 NoSetIsLikelyToRequireADrawOnZeroMemoryBudget) { |
| 1303 const gfx::Size layer_bounds(1000, 1000); |
| 1304 host_impl_.SetViewportSize(layer_bounds); |
| 1305 SetupDefaultTrees(layer_bounds); |
| 1306 |
| 1307 // Verify that the queue has a required for draw tile at Top. |
| 1308 scoped_ptr<RasterTilePriorityQueue> queue(host_impl_.BuildRasterQueue( |
| 1309 SAME_PRIORITY_FOR_BOTH_TREES, RasterTilePriorityQueue::Type::ALL)); |
| 1310 EXPECT_FALSE(queue->IsEmpty()); |
| 1311 EXPECT_TRUE(queue->Top()->required_for_draw()); |
| 1312 |
| 1313 ManagedMemoryPolicy policy = host_impl_.ActualManagedMemoryPolicy(); |
| 1314 policy.bytes_limit_when_visible = 0; |
| 1315 host_impl_.SetMemoryPolicy(policy); |
| 1316 |
| 1317 EXPECT_FALSE(host_impl_.is_likely_to_require_a_draw()); |
| 1318 host_impl_.tile_manager()->PrepareTiles(host_impl_.global_tile_state()); |
| 1319 EXPECT_FALSE(host_impl_.is_likely_to_require_a_draw()); |
| 1320 } |
| 1321 |
1280 } // namespace | 1322 } // namespace |
1281 } // namespace cc | 1323 } // namespace cc |
OLD | NEW |