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 "base/run_loop.h" | 5 #include "base/run_loop.h" |
6 #include "base/thread_task_runner_handle.h" | 6 #include "base/thread_task_runner_handle.h" |
7 #include "cc/playback/display_list_raster_source.h" | 7 #include "cc/playback/display_list_raster_source.h" |
8 #include "cc/playback/display_list_recording_source.h" | 8 #include "cc/playback/display_list_recording_source.h" |
9 #include "cc/resources/resource_pool.h" | 9 #include "cc/resources/resource_pool.h" |
10 #include "cc/test/begin_frame_args_test.h" | 10 #include "cc/test/begin_frame_args_test.h" |
11 #include "cc/test/fake_display_list_raster_source.h" | 11 #include "cc/test/fake_display_list_raster_source.h" |
12 #include "cc/test/fake_display_list_recording_source.h" | 12 #include "cc/test/fake_display_list_recording_source.h" |
13 #include "cc/test/fake_impl_proxy.h" | 13 #include "cc/test/fake_impl_proxy.h" |
14 #include "cc/test/fake_layer_tree_host_impl.h" | 14 #include "cc/test/fake_layer_tree_host_impl.h" |
15 #include "cc/test/fake_output_surface.h" | 15 #include "cc/test/fake_output_surface.h" |
16 #include "cc/test/fake_output_surface_client.h" | 16 #include "cc/test/fake_output_surface_client.h" |
17 #include "cc/test/fake_picture_layer_impl.h" | 17 #include "cc/test/fake_picture_layer_impl.h" |
18 #include "cc/test/fake_picture_layer_tiling_client.h" | 18 #include "cc/test/fake_picture_layer_tiling_client.h" |
19 #include "cc/test/fake_tile_manager.h" | 19 #include "cc/test/fake_tile_manager.h" |
| 20 #include "cc/test/test_gpu_memory_buffer_manager.h" |
20 #include "cc/test/test_shared_bitmap_manager.h" | 21 #include "cc/test/test_shared_bitmap_manager.h" |
21 #include "cc/test/test_task_graph_runner.h" | 22 #include "cc/test/test_task_graph_runner.h" |
22 #include "cc/test/test_tile_priorities.h" | 23 #include "cc/test/test_tile_priorities.h" |
23 #include "cc/tiles/eviction_tile_priority_queue.h" | 24 #include "cc/tiles/eviction_tile_priority_queue.h" |
24 #include "cc/tiles/raster_tile_priority_queue.h" | 25 #include "cc/tiles/raster_tile_priority_queue.h" |
25 #include "cc/tiles/tile.h" | 26 #include "cc/tiles/tile.h" |
26 #include "cc/tiles/tile_priority.h" | 27 #include "cc/tiles/tile_priority.h" |
27 #include "cc/tiles/tiling_set_raster_queue_all.h" | 28 #include "cc/tiles/tiling_set_raster_queue_all.h" |
28 #include "cc/trees/layer_tree_impl.h" | 29 #include "cc/trees/layer_tree_impl.h" |
29 #include "testing/gmock/include/gmock/gmock.h" | 30 #include "testing/gmock/include/gmock/gmock.h" |
(...skipping 13 matching lines...) Expand all Loading... |
43 TileManagerTilePriorityQueueTest() | 44 TileManagerTilePriorityQueueTest() |
44 : memory_limit_policy_(ALLOW_ANYTHING), | 45 : memory_limit_policy_(ALLOW_ANYTHING), |
45 max_tiles_(10000), | 46 max_tiles_(10000), |
46 ready_to_activate_(false), | 47 ready_to_activate_(false), |
47 id_(7), | 48 id_(7), |
48 proxy_(base::ThreadTaskRunnerHandle::Get()), | 49 proxy_(base::ThreadTaskRunnerHandle::Get()), |
49 output_surface_(FakeOutputSurface::Create3d()), | 50 output_surface_(FakeOutputSurface::Create3d()), |
50 host_impl_(LowResTilingsSettings(), | 51 host_impl_(LowResTilingsSettings(), |
51 &proxy_, | 52 &proxy_, |
52 &shared_bitmap_manager_, | 53 &shared_bitmap_manager_, |
53 &task_graph_runner_) {} | 54 &task_graph_runner_, |
| 55 &gpu_memory_buffer_manager_) {} |
54 | 56 |
55 void SetTreePriority(TreePriority tree_priority) { | 57 void SetTreePriority(TreePriority tree_priority) { |
56 GlobalStateThatImpactsTilePriority state; | 58 GlobalStateThatImpactsTilePriority state; |
57 gfx::Size tile_size(256, 256); | 59 gfx::Size tile_size(256, 256); |
58 | 60 |
59 state.soft_memory_limit_in_bytes = 100 * 1000 * 1000; | 61 state.soft_memory_limit_in_bytes = 100 * 1000 * 1000; |
60 state.num_resources_limit = max_tiles_; | 62 state.num_resources_limit = max_tiles_; |
61 state.hard_memory_limit_in_bytes = state.soft_memory_limit_in_bytes * 2; | 63 state.hard_memory_limit_in_bytes = state.soft_memory_limit_in_bytes * 2; |
62 state.memory_limit_policy = memory_limit_policy_; | 64 state.memory_limit_policy = memory_limit_policy_; |
63 state.tree_priority = tree_priority; | 65 state.tree_priority = tree_priority; |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
143 host_impl_.pending_tree()->UpdateDrawProperties(update_lcd_text); | 145 host_impl_.pending_tree()->UpdateDrawProperties(update_lcd_text); |
144 } | 146 } |
145 | 147 |
146 TileManager* tile_manager() { return host_impl_.tile_manager(); } | 148 TileManager* tile_manager() { return host_impl_.tile_manager(); } |
147 | 149 |
148 protected: | 150 protected: |
149 GlobalStateThatImpactsTilePriority global_state_; | 151 GlobalStateThatImpactsTilePriority global_state_; |
150 | 152 |
151 TestSharedBitmapManager shared_bitmap_manager_; | 153 TestSharedBitmapManager shared_bitmap_manager_; |
152 TestTaskGraphRunner task_graph_runner_; | 154 TestTaskGraphRunner task_graph_runner_; |
| 155 TestGpuMemoryBufferManager gpu_memory_buffer_manager_; |
153 TileMemoryLimitPolicy memory_limit_policy_; | 156 TileMemoryLimitPolicy memory_limit_policy_; |
154 int max_tiles_; | 157 int max_tiles_; |
155 bool ready_to_activate_; | 158 bool ready_to_activate_; |
156 int id_; | 159 int id_; |
157 FakeImplProxy proxy_; | 160 FakeImplProxy proxy_; |
158 scoped_ptr<OutputSurface> output_surface_; | 161 scoped_ptr<OutputSurface> output_surface_; |
159 FakeLayerTreeHostImpl host_impl_; | 162 FakeLayerTreeHostImpl host_impl_; |
160 FakePictureLayerImpl* pending_layer_; | 163 FakePictureLayerImpl* pending_layer_; |
161 FakePictureLayerImpl* active_layer_; | 164 FakePictureLayerImpl* active_layer_; |
162 }; | 165 }; |
(...skipping 1120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1283 } | 1286 } |
1284 | 1287 |
1285 EXPECT_GT(eventually_bin_order_correct_count, | 1288 EXPECT_GT(eventually_bin_order_correct_count, |
1286 eventually_bin_order_incorrect_count); | 1289 eventually_bin_order_incorrect_count); |
1287 | 1290 |
1288 EXPECT_TRUE(have_tiles[TilePriority::NOW]); | 1291 EXPECT_TRUE(have_tiles[TilePriority::NOW]); |
1289 EXPECT_TRUE(have_tiles[TilePriority::SOON]); | 1292 EXPECT_TRUE(have_tiles[TilePriority::SOON]); |
1290 EXPECT_TRUE(have_tiles[TilePriority::EVENTUALLY]); | 1293 EXPECT_TRUE(have_tiles[TilePriority::EVENTUALLY]); |
1291 } | 1294 } |
1292 | 1295 |
1293 // TODO(vmpstr): Move these to LTHI tests, since they can't create real | 1296 TEST_F(TileManagerTilePriorityQueueTest, SetIsLikelyToRequireADraw) { |
1294 // resources and so they don't work with non-solid raster sources. | |
1295 // crbug.com/534911 | |
1296 TEST_F(TileManagerTilePriorityQueueTest, DISABLED_SetIsLikelyToRequireADraw) { | |
1297 const gfx::Size layer_bounds(1000, 1000); | 1297 const gfx::Size layer_bounds(1000, 1000); |
1298 host_impl_.SetViewportSize(layer_bounds); | 1298 host_impl_.SetViewportSize(layer_bounds); |
1299 SetupDefaultTrees(layer_bounds); | 1299 SetupDefaultTrees(layer_bounds); |
1300 | 1300 |
1301 // Verify that the queue has a required for draw tile at Top. | 1301 // Verify that the queue has a required for draw tile at Top. |
1302 scoped_ptr<RasterTilePriorityQueue> queue(host_impl_.BuildRasterQueue( | 1302 scoped_ptr<RasterTilePriorityQueue> queue(host_impl_.BuildRasterQueue( |
1303 SAME_PRIORITY_FOR_BOTH_TREES, RasterTilePriorityQueue::Type::ALL)); | 1303 SAME_PRIORITY_FOR_BOTH_TREES, RasterTilePriorityQueue::Type::ALL)); |
1304 EXPECT_FALSE(queue->IsEmpty()); | 1304 EXPECT_FALSE(queue->IsEmpty()); |
1305 EXPECT_TRUE(queue->Top().tile()->required_for_draw()); | 1305 EXPECT_TRUE(queue->Top().tile()->required_for_draw()); |
1306 | 1306 |
1307 EXPECT_FALSE(host_impl_.is_likely_to_require_a_draw()); | 1307 EXPECT_FALSE(host_impl_.is_likely_to_require_a_draw()); |
1308 host_impl_.tile_manager()->PrepareTiles(host_impl_.global_tile_state()); | 1308 host_impl_.tile_manager()->PrepareTiles(host_impl_.global_tile_state()); |
1309 EXPECT_TRUE(host_impl_.is_likely_to_require_a_draw()); | 1309 EXPECT_TRUE(host_impl_.is_likely_to_require_a_draw()); |
1310 } | 1310 } |
1311 | 1311 |
1312 // TODO(vmpstr): Move these to LTHI tests, since they can't create real | |
1313 // resources and so they don't work with non-solid raster sources. | |
1314 // crbug.com/534911 | |
1315 TEST_F(TileManagerTilePriorityQueueTest, | 1312 TEST_F(TileManagerTilePriorityQueueTest, |
1316 DISABLED_SetIsLikelyToRequireADrawOnZeroMemoryBudget) { | 1313 SetIsLikelyToRequireADrawOnZeroMemoryBudget) { |
1317 const gfx::Size layer_bounds(1000, 1000); | 1314 const gfx::Size layer_bounds(1000, 1000); |
1318 host_impl_.SetViewportSize(layer_bounds); | 1315 host_impl_.SetViewportSize(layer_bounds); |
1319 SetupDefaultTrees(layer_bounds); | 1316 SetupDefaultTrees(layer_bounds); |
1320 | 1317 |
1321 // Verify that the queue has a required for draw tile at Top. | 1318 // Verify that the queue has a required for draw tile at Top. |
1322 scoped_ptr<RasterTilePriorityQueue> queue(host_impl_.BuildRasterQueue( | 1319 scoped_ptr<RasterTilePriorityQueue> queue(host_impl_.BuildRasterQueue( |
1323 SAME_PRIORITY_FOR_BOTH_TREES, RasterTilePriorityQueue::Type::ALL)); | 1320 SAME_PRIORITY_FOR_BOTH_TREES, RasterTilePriorityQueue::Type::ALL)); |
1324 EXPECT_FALSE(queue->IsEmpty()); | 1321 EXPECT_FALSE(queue->IsEmpty()); |
1325 EXPECT_TRUE(queue->Top().tile()->required_for_draw()); | 1322 EXPECT_TRUE(queue->Top().tile()->required_for_draw()); |
1326 | 1323 |
1327 ManagedMemoryPolicy policy = host_impl_.ActualManagedMemoryPolicy(); | 1324 ManagedMemoryPolicy policy = host_impl_.ActualManagedMemoryPolicy(); |
1328 policy.bytes_limit_when_visible = 0; | 1325 policy.bytes_limit_when_visible = 0; |
1329 host_impl_.SetMemoryPolicy(policy); | 1326 host_impl_.SetMemoryPolicy(policy); |
1330 | 1327 |
1331 EXPECT_FALSE(host_impl_.is_likely_to_require_a_draw()); | 1328 EXPECT_FALSE(host_impl_.is_likely_to_require_a_draw()); |
1332 host_impl_.tile_manager()->PrepareTiles(host_impl_.global_tile_state()); | 1329 host_impl_.tile_manager()->PrepareTiles(host_impl_.global_tile_state()); |
1333 EXPECT_FALSE(host_impl_.is_likely_to_require_a_draw()); | 1330 EXPECT_FALSE(host_impl_.is_likely_to_require_a_draw()); |
1334 } | 1331 } |
1335 | 1332 |
1336 // TODO(vmpstr): Move these to LTHI tests, since they can't create real | |
1337 // resources and so they don't work with non-solid raster sources. | |
1338 // crbug.com/534911 | |
1339 TEST_F(TileManagerTilePriorityQueueTest, | 1333 TEST_F(TileManagerTilePriorityQueueTest, |
1340 DISABLED_SetIsLikelyToRequireADrawOnLimitedMemoryBudget) { | 1334 SetIsLikelyToRequireADrawOnLimitedMemoryBudget) { |
1341 const gfx::Size layer_bounds(1000, 1000); | 1335 const gfx::Size layer_bounds(1000, 1000); |
1342 host_impl_.SetViewportSize(layer_bounds); | 1336 host_impl_.SetViewportSize(layer_bounds); |
1343 SetupDefaultTrees(layer_bounds); | 1337 SetupDefaultTrees(layer_bounds); |
1344 | 1338 |
1345 // Verify that the queue has a required for draw tile at Top. | 1339 // Verify that the queue has a required for draw tile at Top. |
1346 scoped_ptr<RasterTilePriorityQueue> queue(host_impl_.BuildRasterQueue( | 1340 scoped_ptr<RasterTilePriorityQueue> queue(host_impl_.BuildRasterQueue( |
1347 SAME_PRIORITY_FOR_BOTH_TREES, RasterTilePriorityQueue::Type::ALL)); | 1341 SAME_PRIORITY_FOR_BOTH_TREES, RasterTilePriorityQueue::Type::ALL)); |
1348 EXPECT_FALSE(queue->IsEmpty()); | 1342 EXPECT_FALSE(queue->IsEmpty()); |
1349 EXPECT_TRUE(queue->Top().tile()->required_for_draw()); | 1343 EXPECT_TRUE(queue->Top().tile()->required_for_draw()); |
1350 EXPECT_EQ(gfx::Size(256, 256), queue->Top().tile()->desired_texture_size()); | 1344 EXPECT_EQ(gfx::Size(256, 256), queue->Top().tile()->desired_texture_size()); |
(...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1562 // background is not visible. | 1556 // background is not visible. |
1563 ASSERT_EQ(SK_ColorBLUE, bitmap->getColor(x, y)); | 1557 ASSERT_EQ(SK_ColorBLUE, bitmap->getColor(x, y)); |
1564 } | 1558 } |
1565 } | 1559 } |
1566 } | 1560 } |
1567 } | 1561 } |
1568 } | 1562 } |
1569 | 1563 |
1570 } // namespace | 1564 } // namespace |
1571 } // namespace cc | 1565 } // namespace cc |
OLD | NEW |