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/resource_pool.h" | |
7 #include "cc/resources/tile.h" | 8 #include "cc/resources/tile.h" |
8 #include "cc/resources/tile_priority.h" | 9 #include "cc/resources/tile_priority.h" |
9 #include "cc/resources/tiling_set_raster_queue_all.h" | 10 #include "cc/resources/tiling_set_raster_queue_all.h" |
10 #include "cc/test/begin_frame_args_test.h" | 11 #include "cc/test/begin_frame_args_test.h" |
11 #include "cc/test/fake_impl_proxy.h" | 12 #include "cc/test/fake_impl_proxy.h" |
12 #include "cc/test/fake_layer_tree_host_impl.h" | 13 #include "cc/test/fake_layer_tree_host_impl.h" |
13 #include "cc/test/fake_output_surface.h" | 14 #include "cc/test/fake_output_surface.h" |
14 #include "cc/test/fake_output_surface_client.h" | 15 #include "cc/test/fake_output_surface_client.h" |
15 #include "cc/test/fake_picture_layer_impl.h" | 16 #include "cc/test/fake_picture_layer_impl.h" |
16 #include "cc/test/fake_picture_layer_tiling_client.h" | 17 #include "cc/test/fake_picture_layer_tiling_client.h" |
(...skipping 1275 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1292 SAME_PRIORITY_FOR_BOTH_TREES, RasterTilePriorityQueue::Type::ALL)); | 1293 SAME_PRIORITY_FOR_BOTH_TREES, RasterTilePriorityQueue::Type::ALL)); |
1293 EXPECT_FALSE(queue->IsEmpty()); | 1294 EXPECT_FALSE(queue->IsEmpty()); |
1294 EXPECT_TRUE(queue->Top()->required_for_draw()); | 1295 EXPECT_TRUE(queue->Top()->required_for_draw()); |
1295 | 1296 |
1296 EXPECT_FALSE(host_impl_.is_likely_to_require_a_draw()); | 1297 EXPECT_FALSE(host_impl_.is_likely_to_require_a_draw()); |
1297 host_impl_.tile_manager()->PrepareTiles(host_impl_.global_tile_state()); | 1298 host_impl_.tile_manager()->PrepareTiles(host_impl_.global_tile_state()); |
1298 EXPECT_TRUE(host_impl_.is_likely_to_require_a_draw()); | 1299 EXPECT_TRUE(host_impl_.is_likely_to_require_a_draw()); |
1299 } | 1300 } |
1300 | 1301 |
1301 TEST_F(TileManagerTilePriorityQueueTest, | 1302 TEST_F(TileManagerTilePriorityQueueTest, |
1302 NoSetIsLikelyToRequireADrawOnZeroMemoryBudget) { | 1303 SetIsLikelyToRequireADrawOnZeroMemoryBudget) { |
1303 const gfx::Size layer_bounds(1000, 1000); | 1304 const gfx::Size layer_bounds(1000, 1000); |
1304 host_impl_.SetViewportSize(layer_bounds); | 1305 host_impl_.SetViewportSize(layer_bounds); |
1305 SetupDefaultTrees(layer_bounds); | 1306 SetupDefaultTrees(layer_bounds); |
1306 | 1307 |
1307 // Verify that the queue has a required for draw tile at Top. | 1308 // Verify that the queue has a required for draw tile at Top. |
1308 scoped_ptr<RasterTilePriorityQueue> queue(host_impl_.BuildRasterQueue( | 1309 scoped_ptr<RasterTilePriorityQueue> queue(host_impl_.BuildRasterQueue( |
1309 SAME_PRIORITY_FOR_BOTH_TREES, RasterTilePriorityQueue::Type::ALL)); | 1310 SAME_PRIORITY_FOR_BOTH_TREES, RasterTilePriorityQueue::Type::ALL)); |
1310 EXPECT_FALSE(queue->IsEmpty()); | 1311 EXPECT_FALSE(queue->IsEmpty()); |
1311 EXPECT_TRUE(queue->Top()->required_for_draw()); | 1312 EXPECT_TRUE(queue->Top()->required_for_draw()); |
1312 | 1313 |
1313 ManagedMemoryPolicy policy = host_impl_.ActualManagedMemoryPolicy(); | 1314 ManagedMemoryPolicy policy = host_impl_.ActualManagedMemoryPolicy(); |
1314 policy.bytes_limit_when_visible = 0; | 1315 policy.bytes_limit_when_visible = 0; |
1315 host_impl_.SetMemoryPolicy(policy); | 1316 host_impl_.SetMemoryPolicy(policy); |
1316 | 1317 |
1317 EXPECT_FALSE(host_impl_.is_likely_to_require_a_draw()); | 1318 EXPECT_FALSE(host_impl_.is_likely_to_require_a_draw()); |
1318 host_impl_.tile_manager()->PrepareTiles(host_impl_.global_tile_state()); | 1319 host_impl_.tile_manager()->PrepareTiles(host_impl_.global_tile_state()); |
1319 EXPECT_FALSE(host_impl_.is_likely_to_require_a_draw()); | 1320 EXPECT_FALSE(host_impl_.is_likely_to_require_a_draw()); |
1320 } | 1321 } |
1321 | 1322 |
1323 TEST_F(TileManagerTilePriorityQueueTest, | |
1324 SetIsLikelyToRequireADrawOnLimitedMemoryBudget) { | |
1325 const gfx::Size layer_bounds(1000, 1000); | |
1326 host_impl_.SetViewportSize(layer_bounds); | |
1327 SetupDefaultTrees(layer_bounds); | |
1328 | |
1329 // Verify that the queue has a required for draw tile at Top. | |
1330 scoped_ptr<RasterTilePriorityQueue> queue(host_impl_.BuildRasterQueue( | |
1331 SAME_PRIORITY_FOR_BOTH_TREES, RasterTilePriorityQueue::Type::ALL)); | |
1332 EXPECT_FALSE(queue->IsEmpty()); | |
1333 EXPECT_TRUE(queue->Top()->required_for_draw()); | |
1334 EXPECT_EQ(queue->Top()->desired_texture_size(), gfx::Size(256, 256)); | |
1335 EXPECT_EQ(host_impl_.tile_manager() | |
1336 ->TileTaskRunnerForTesting() | |
vmpstr
2015/03/27 17:23:28
This is kind of an overkill to get the tile task r
sunnyps
2015/03/27 18:38:04
Done. Using ResourceProvider::best_texture_format
| |
1337 ->GetResourceFormat(), | |
1338 RGBA_8888); | |
1339 | |
1340 ManagedMemoryPolicy policy = host_impl_.ActualManagedMemoryPolicy(); | |
1341 policy.bytes_limit_when_visible = 256 * 256 * 4; | |
1342 host_impl_.SetMemoryPolicy(policy); | |
1343 | |
1344 EXPECT_FALSE(host_impl_.is_likely_to_require_a_draw()); | |
1345 host_impl_.tile_manager()->PrepareTiles(host_impl_.global_tile_state()); | |
1346 EXPECT_TRUE(host_impl_.is_likely_to_require_a_draw()); | |
1347 | |
1348 scoped_ptr<ScopedResource> resource = | |
1349 host_impl_.resource_pool()->AcquireResource(gfx::Size(256, 256), | |
1350 RGBA_8888); | |
1351 | |
1352 host_impl_.tile_manager()->CheckIfMoreTilesNeedToBePreparedForTesting(); | |
1353 EXPECT_FALSE(host_impl_.is_likely_to_require_a_draw()); | |
1354 | |
1355 host_impl_.resource_pool()->ReleaseResource(resource.Pass()); | |
1356 } | |
1357 | |
1358 TEST_F(TileManagerTilePriorityQueueTest, | |
1359 SetIsLikelyToRequireADrawOnSynchronousRaster) { | |
1360 const gfx::Size layer_bounds(1000, 1000); | |
1361 host_impl_.SetViewportSize(layer_bounds); | |
1362 host_impl_.SetUseGpuRasterization(true); | |
1363 EXPECT_EQ(host_impl_.rasterizer()->GetPrepareTilesMode(), | |
1364 PrepareTilesMode::PREPARE_NONE); | |
1365 SetupDefaultTrees(layer_bounds); | |
1366 | |
1367 // Verify that the queue has a required for draw tile at Top. | |
1368 scoped_ptr<RasterTilePriorityQueue> queue(host_impl_.BuildRasterQueue( | |
1369 SAME_PRIORITY_FOR_BOTH_TREES, RasterTilePriorityQueue::Type::ALL)); | |
1370 EXPECT_FALSE(queue->IsEmpty()); | |
1371 EXPECT_TRUE(queue->Top()->required_for_draw()); | |
1372 | |
1373 host_impl_.SetIsLikelyToRequireADraw(true); | |
1374 | |
1375 EXPECT_TRUE(host_impl_.is_likely_to_require_a_draw()); | |
1376 host_impl_.tile_manager()->UpdateVisibleTiles(host_impl_.global_tile_state()); | |
1377 EXPECT_FALSE(host_impl_.is_likely_to_require_a_draw()); | |
1378 } | |
1379 | |
1322 } // namespace | 1380 } // namespace |
1323 } // namespace cc | 1381 } // namespace cc |
OLD | NEW |