| 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" |
| (...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 144 FakeLayerTreeHostImpl host_impl_; | 144 FakeLayerTreeHostImpl host_impl_; |
| 145 FakePictureLayerImpl* pending_layer_; | 145 FakePictureLayerImpl* pending_layer_; |
| 146 FakePictureLayerImpl* active_layer_; | 146 FakePictureLayerImpl* active_layer_; |
| 147 }; | 147 }; |
| 148 | 148 |
| 149 TEST_F(TileManagerTilePriorityQueueTest, RasterTilePriorityQueue) { | 149 TEST_F(TileManagerTilePriorityQueueTest, RasterTilePriorityQueue) { |
| 150 const gfx::Size layer_bounds(1000, 1000); | 150 const gfx::Size layer_bounds(1000, 1000); |
| 151 host_impl_.SetViewportSize(layer_bounds); | 151 host_impl_.SetViewportSize(layer_bounds); |
| 152 SetupDefaultTrees(layer_bounds); | 152 SetupDefaultTrees(layer_bounds); |
| 153 | 153 |
| 154 RasterTilePriorityQueue queue; | 154 scoped_ptr<RasterTilePriorityQueue> queue(host_impl_.BuildRasterQueue( |
| 155 host_impl_.BuildRasterQueue(&queue, SAME_PRIORITY_FOR_BOTH_TREES, | 155 SAME_PRIORITY_FOR_BOTH_TREES, RasterTilePriorityQueue::Type::ALL)); |
| 156 RasterTilePriorityQueue::Type::ALL); | 156 EXPECT_FALSE(queue->IsEmpty()); |
| 157 EXPECT_FALSE(queue.IsEmpty()); | |
| 158 | 157 |
| 159 size_t tile_count = 0; | 158 size_t tile_count = 0; |
| 160 std::set<Tile*> all_tiles; | 159 std::set<Tile*> all_tiles; |
| 161 while (!queue.IsEmpty()) { | 160 while (!queue->IsEmpty()) { |
| 162 EXPECT_TRUE(queue.Top()); | 161 EXPECT_TRUE(queue->Top()); |
| 163 all_tiles.insert(queue.Top()); | 162 all_tiles.insert(queue->Top()); |
| 164 ++tile_count; | 163 ++tile_count; |
| 165 queue.Pop(); | 164 queue->Pop(); |
| 166 } | 165 } |
| 167 | 166 |
| 168 EXPECT_EQ(tile_count, all_tiles.size()); | 167 EXPECT_EQ(tile_count, all_tiles.size()); |
| 169 EXPECT_EQ(16u, tile_count); | 168 EXPECT_EQ(16u, tile_count); |
| 170 | 169 |
| 171 // Sanity check, all tiles should be visible. | 170 // Sanity check, all tiles should be visible. |
| 172 std::set<Tile*> smoothness_tiles; | 171 std::set<Tile*> smoothness_tiles; |
| 173 queue.Reset(); | 172 queue = host_impl_.BuildRasterQueue(SMOOTHNESS_TAKES_PRIORITY, |
| 174 host_impl_.BuildRasterQueue(&queue, SMOOTHNESS_TAKES_PRIORITY, | 173 RasterTilePriorityQueue::Type::ALL); |
| 175 RasterTilePriorityQueue::Type::ALL); | |
| 176 bool had_low_res = false; | 174 bool had_low_res = false; |
| 177 while (!queue.IsEmpty()) { | 175 while (!queue->IsEmpty()) { |
| 178 Tile* tile = queue.Top(); | 176 Tile* tile = queue->Top(); |
| 179 EXPECT_TRUE(tile); | 177 EXPECT_TRUE(tile); |
| 180 EXPECT_EQ(TilePriority::NOW, tile->priority(ACTIVE_TREE).priority_bin); | 178 EXPECT_EQ(TilePriority::NOW, tile->priority(ACTIVE_TREE).priority_bin); |
| 181 EXPECT_EQ(TilePriority::NOW, tile->priority(PENDING_TREE).priority_bin); | 179 EXPECT_EQ(TilePriority::NOW, tile->priority(PENDING_TREE).priority_bin); |
| 182 if (tile->priority(ACTIVE_TREE).resolution == LOW_RESOLUTION) | 180 if (tile->priority(ACTIVE_TREE).resolution == LOW_RESOLUTION) |
| 183 had_low_res = true; | 181 had_low_res = true; |
| 184 else | 182 else |
| 185 smoothness_tiles.insert(tile); | 183 smoothness_tiles.insert(tile); |
| 186 queue.Pop(); | 184 queue->Pop(); |
| 187 } | 185 } |
| 188 EXPECT_EQ(all_tiles, smoothness_tiles); | 186 EXPECT_EQ(all_tiles, smoothness_tiles); |
| 189 EXPECT_TRUE(had_low_res); | 187 EXPECT_TRUE(had_low_res); |
| 190 | 188 |
| 191 // Check that everything is required for activation. | 189 // Check that everything is required for activation. |
| 192 queue.Reset(); | 190 queue = host_impl_.BuildRasterQueue( |
| 193 host_impl_.BuildRasterQueue( | 191 SMOOTHNESS_TAKES_PRIORITY, |
| 194 &queue, SMOOTHNESS_TAKES_PRIORITY, | |
| 195 RasterTilePriorityQueue::Type::REQUIRED_FOR_ACTIVATION); | 192 RasterTilePriorityQueue::Type::REQUIRED_FOR_ACTIVATION); |
| 196 std::set<Tile*> required_for_activation_tiles; | 193 std::set<Tile*> required_for_activation_tiles; |
| 197 while (!queue.IsEmpty()) { | 194 while (!queue->IsEmpty()) { |
| 198 Tile* tile = queue.Top(); | 195 Tile* tile = queue->Top(); |
| 199 EXPECT_TRUE(tile->required_for_activation()); | 196 EXPECT_TRUE(tile->required_for_activation()); |
| 200 required_for_activation_tiles.insert(tile); | 197 required_for_activation_tiles.insert(tile); |
| 201 queue.Pop(); | 198 queue->Pop(); |
| 202 } | 199 } |
| 203 EXPECT_EQ(all_tiles, required_for_activation_tiles); | 200 EXPECT_EQ(all_tiles, required_for_activation_tiles); |
| 204 | 201 |
| 205 // Check that everything is required for draw. | 202 // Check that everything is required for draw. |
| 206 queue.Reset(); | 203 queue = host_impl_.BuildRasterQueue( |
| 207 host_impl_.BuildRasterQueue(&queue, SMOOTHNESS_TAKES_PRIORITY, | 204 SMOOTHNESS_TAKES_PRIORITY, |
| 208 RasterTilePriorityQueue::Type::REQUIRED_FOR_DRAW); | 205 RasterTilePriorityQueue::Type::REQUIRED_FOR_DRAW); |
| 209 std::set<Tile*> required_for_draw_tiles; | 206 std::set<Tile*> required_for_draw_tiles; |
| 210 while (!queue.IsEmpty()) { | 207 while (!queue->IsEmpty()) { |
| 211 Tile* tile = queue.Top(); | 208 Tile* tile = queue->Top(); |
| 212 EXPECT_TRUE(tile->required_for_draw()); | 209 EXPECT_TRUE(tile->required_for_draw()); |
| 213 required_for_draw_tiles.insert(tile); | 210 required_for_draw_tiles.insert(tile); |
| 214 queue.Pop(); | 211 queue->Pop(); |
| 215 } | 212 } |
| 216 EXPECT_EQ(all_tiles, required_for_draw_tiles); | 213 EXPECT_EQ(all_tiles, required_for_draw_tiles); |
| 217 | 214 |
| 218 Region invalidation(gfx::Rect(0, 0, 500, 500)); | 215 Region invalidation(gfx::Rect(0, 0, 500, 500)); |
| 219 | 216 |
| 220 // Invalidate the pending tree. | 217 // Invalidate the pending tree. |
| 221 pending_layer_->set_invalidation(invalidation); | 218 pending_layer_->set_invalidation(invalidation); |
| 222 pending_layer_->HighResTiling()->Invalidate(invalidation); | 219 pending_layer_->HighResTiling()->Invalidate(invalidation); |
| 223 pending_layer_->LowResTiling()->Invalidate(invalidation); | 220 pending_layer_->LowResTiling()->Invalidate(invalidation); |
| 224 | 221 |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 261 std::vector<Tile*> active_low_res_tiles = | 258 std::vector<Tile*> active_low_res_tiles = |
| 262 active_layer_->LowResTiling()->AllTilesForTesting(); | 259 active_layer_->LowResTiling()->AllTilesForTesting(); |
| 263 for (size_t i = 0; i < active_low_res_tiles.size(); ++i) | 260 for (size_t i = 0; i < active_low_res_tiles.size(); ++i) |
| 264 all_tiles.insert(active_low_res_tiles[i]); | 261 all_tiles.insert(active_low_res_tiles[i]); |
| 265 | 262 |
| 266 Tile* last_tile = NULL; | 263 Tile* last_tile = NULL; |
| 267 smoothness_tiles.clear(); | 264 smoothness_tiles.clear(); |
| 268 tile_count = 0; | 265 tile_count = 0; |
| 269 size_t correct_order_tiles = 0u; | 266 size_t correct_order_tiles = 0u; |
| 270 // Here we expect to get increasing ACTIVE_TREE priority_bin. | 267 // Here we expect to get increasing ACTIVE_TREE priority_bin. |
| 271 queue.Reset(); | 268 queue = host_impl_.BuildRasterQueue(SMOOTHNESS_TAKES_PRIORITY, |
| 272 host_impl_.BuildRasterQueue(&queue, SMOOTHNESS_TAKES_PRIORITY, | 269 RasterTilePriorityQueue::Type::ALL); |
| 273 RasterTilePriorityQueue::Type::ALL); | |
| 274 std::set<Tile*> expected_required_for_draw_tiles; | 270 std::set<Tile*> expected_required_for_draw_tiles; |
| 275 std::set<Tile*> expected_required_for_activation_tiles; | 271 std::set<Tile*> expected_required_for_activation_tiles; |
| 276 while (!queue.IsEmpty()) { | 272 while (!queue->IsEmpty()) { |
| 277 Tile* tile = queue.Top(); | 273 Tile* tile = queue->Top(); |
| 278 EXPECT_TRUE(tile); | 274 EXPECT_TRUE(tile); |
| 279 | 275 |
| 280 if (!last_tile) | 276 if (!last_tile) |
| 281 last_tile = tile; | 277 last_tile = tile; |
| 282 | 278 |
| 283 EXPECT_LE(last_tile->priority(ACTIVE_TREE).priority_bin, | 279 EXPECT_LE(last_tile->priority(ACTIVE_TREE).priority_bin, |
| 284 tile->priority(ACTIVE_TREE).priority_bin); | 280 tile->priority(ACTIVE_TREE).priority_bin); |
| 285 bool skip_updating_last_tile = false; | 281 bool skip_updating_last_tile = false; |
| 286 if (last_tile->priority(ACTIVE_TREE).priority_bin == | 282 if (last_tile->priority(ACTIVE_TREE).priority_bin == |
| 287 tile->priority(ACTIVE_TREE).priority_bin) { | 283 tile->priority(ACTIVE_TREE).priority_bin) { |
| (...skipping 17 matching lines...) Expand all Loading... |
| 305 } | 301 } |
| 306 | 302 |
| 307 if (!skip_updating_last_tile) | 303 if (!skip_updating_last_tile) |
| 308 last_tile = tile; | 304 last_tile = tile; |
| 309 ++tile_count; | 305 ++tile_count; |
| 310 smoothness_tiles.insert(tile); | 306 smoothness_tiles.insert(tile); |
| 311 if (tile->required_for_draw()) | 307 if (tile->required_for_draw()) |
| 312 expected_required_for_draw_tiles.insert(tile); | 308 expected_required_for_draw_tiles.insert(tile); |
| 313 if (tile->required_for_activation()) | 309 if (tile->required_for_activation()) |
| 314 expected_required_for_activation_tiles.insert(tile); | 310 expected_required_for_activation_tiles.insert(tile); |
| 315 queue.Pop(); | 311 queue->Pop(); |
| 316 } | 312 } |
| 317 | 313 |
| 318 EXPECT_EQ(tile_count, smoothness_tiles.size()); | 314 EXPECT_EQ(tile_count, smoothness_tiles.size()); |
| 319 EXPECT_EQ(all_tiles, smoothness_tiles); | 315 EXPECT_EQ(all_tiles, smoothness_tiles); |
| 320 // Since we don't guarantee increasing distance due to spiral iterator, we | 316 // Since we don't guarantee increasing distance due to spiral iterator, we |
| 321 // should check that we're _mostly_ right. | 317 // should check that we're _mostly_ right. |
| 322 EXPECT_GT(correct_order_tiles, 3 * tile_count / 4); | 318 EXPECT_GT(correct_order_tiles, 3 * tile_count / 4); |
| 323 | 319 |
| 324 // Check that we have consistent required_for_activation tiles. | 320 // Check that we have consistent required_for_activation tiles. |
| 325 queue.Reset(); | 321 queue = host_impl_.BuildRasterQueue( |
| 326 host_impl_.BuildRasterQueue( | 322 SMOOTHNESS_TAKES_PRIORITY, |
| 327 &queue, SMOOTHNESS_TAKES_PRIORITY, | |
| 328 RasterTilePriorityQueue::Type::REQUIRED_FOR_ACTIVATION); | 323 RasterTilePriorityQueue::Type::REQUIRED_FOR_ACTIVATION); |
| 329 required_for_activation_tiles.clear(); | 324 required_for_activation_tiles.clear(); |
| 330 while (!queue.IsEmpty()) { | 325 while (!queue->IsEmpty()) { |
| 331 Tile* tile = queue.Top(); | 326 Tile* tile = queue->Top(); |
| 332 EXPECT_TRUE(tile->required_for_activation()); | 327 EXPECT_TRUE(tile->required_for_activation()); |
| 333 required_for_activation_tiles.insert(tile); | 328 required_for_activation_tiles.insert(tile); |
| 334 queue.Pop(); | 329 queue->Pop(); |
| 335 } | 330 } |
| 336 EXPECT_EQ(expected_required_for_activation_tiles, | 331 EXPECT_EQ(expected_required_for_activation_tiles, |
| 337 required_for_activation_tiles); | 332 required_for_activation_tiles); |
| 338 EXPECT_NE(all_tiles, required_for_activation_tiles); | 333 EXPECT_NE(all_tiles, required_for_activation_tiles); |
| 339 | 334 |
| 340 // Check that we have consistent required_for_draw tiles. | 335 // Check that we have consistent required_for_draw tiles. |
| 341 queue.Reset(); | 336 queue = host_impl_.BuildRasterQueue( |
| 342 host_impl_.BuildRasterQueue(&queue, SMOOTHNESS_TAKES_PRIORITY, | 337 SMOOTHNESS_TAKES_PRIORITY, |
| 343 RasterTilePriorityQueue::Type::REQUIRED_FOR_DRAW); | 338 RasterTilePriorityQueue::Type::REQUIRED_FOR_DRAW); |
| 344 required_for_draw_tiles.clear(); | 339 required_for_draw_tiles.clear(); |
| 345 while (!queue.IsEmpty()) { | 340 while (!queue->IsEmpty()) { |
| 346 Tile* tile = queue.Top(); | 341 Tile* tile = queue->Top(); |
| 347 EXPECT_TRUE(tile->required_for_draw()); | 342 EXPECT_TRUE(tile->required_for_draw()); |
| 348 required_for_draw_tiles.insert(tile); | 343 required_for_draw_tiles.insert(tile); |
| 349 queue.Pop(); | 344 queue->Pop(); |
| 350 } | 345 } |
| 351 EXPECT_EQ(expected_required_for_draw_tiles, required_for_draw_tiles); | 346 EXPECT_EQ(expected_required_for_draw_tiles, required_for_draw_tiles); |
| 352 EXPECT_NE(all_tiles, required_for_draw_tiles); | 347 EXPECT_NE(all_tiles, required_for_draw_tiles); |
| 353 | 348 |
| 354 std::set<Tile*> new_content_tiles; | 349 std::set<Tile*> new_content_tiles; |
| 355 last_tile = NULL; | 350 last_tile = NULL; |
| 356 size_t increasing_distance_tiles = 0u; | 351 size_t increasing_distance_tiles = 0u; |
| 357 // Here we expect to get increasing PENDING_TREE priority_bin. | 352 // Here we expect to get increasing PENDING_TREE priority_bin. |
| 358 queue.Reset(); | 353 queue = host_impl_.BuildRasterQueue(NEW_CONTENT_TAKES_PRIORITY, |
| 359 host_impl_.BuildRasterQueue(&queue, NEW_CONTENT_TAKES_PRIORITY, | 354 RasterTilePriorityQueue::Type::ALL); |
| 360 RasterTilePriorityQueue::Type::ALL); | |
| 361 tile_count = 0; | 355 tile_count = 0; |
| 362 while (!queue.IsEmpty()) { | 356 while (!queue->IsEmpty()) { |
| 363 Tile* tile = queue.Top(); | 357 Tile* tile = queue->Top(); |
| 364 EXPECT_TRUE(tile); | 358 EXPECT_TRUE(tile); |
| 365 | 359 |
| 366 if (!last_tile) | 360 if (!last_tile) |
| 367 last_tile = tile; | 361 last_tile = tile; |
| 368 | 362 |
| 369 EXPECT_LE(last_tile->priority(PENDING_TREE).priority_bin, | 363 EXPECT_LE(last_tile->priority(PENDING_TREE).priority_bin, |
| 370 tile->priority(PENDING_TREE).priority_bin); | 364 tile->priority(PENDING_TREE).priority_bin); |
| 371 if (last_tile->priority(PENDING_TREE).priority_bin == | 365 if (last_tile->priority(PENDING_TREE).priority_bin == |
| 372 tile->priority(PENDING_TREE).priority_bin) { | 366 tile->priority(PENDING_TREE).priority_bin) { |
| 373 increasing_distance_tiles += | 367 increasing_distance_tiles += |
| 374 last_tile->priority(PENDING_TREE).distance_to_visible <= | 368 last_tile->priority(PENDING_TREE).distance_to_visible <= |
| 375 tile->priority(PENDING_TREE).distance_to_visible; | 369 tile->priority(PENDING_TREE).distance_to_visible; |
| 376 } | 370 } |
| 377 | 371 |
| 378 if (tile->priority(PENDING_TREE).priority_bin == TilePriority::NOW && | 372 if (tile->priority(PENDING_TREE).priority_bin == TilePriority::NOW && |
| 379 last_tile->priority(PENDING_TREE).resolution != | 373 last_tile->priority(PENDING_TREE).resolution != |
| 380 tile->priority(PENDING_TREE).resolution) { | 374 tile->priority(PENDING_TREE).resolution) { |
| 381 // High resolution should come first. | 375 // High resolution should come first. |
| 382 EXPECT_EQ(HIGH_RESOLUTION, last_tile->priority(PENDING_TREE).resolution); | 376 EXPECT_EQ(HIGH_RESOLUTION, last_tile->priority(PENDING_TREE).resolution); |
| 383 } | 377 } |
| 384 | 378 |
| 385 last_tile = tile; | 379 last_tile = tile; |
| 386 new_content_tiles.insert(tile); | 380 new_content_tiles.insert(tile); |
| 387 ++tile_count; | 381 ++tile_count; |
| 388 queue.Pop(); | 382 queue->Pop(); |
| 389 } | 383 } |
| 390 | 384 |
| 391 EXPECT_EQ(tile_count, new_content_tiles.size()); | 385 EXPECT_EQ(tile_count, new_content_tiles.size()); |
| 392 EXPECT_EQ(high_res_tiles, new_content_tiles); | 386 EXPECT_EQ(high_res_tiles, new_content_tiles); |
| 393 // Since we don't guarantee increasing distance due to spiral iterator, we | 387 // Since we don't guarantee increasing distance due to spiral iterator, we |
| 394 // should check that we're _mostly_ right. | 388 // should check that we're _mostly_ right. |
| 395 EXPECT_GE(increasing_distance_tiles, 3 * tile_count / 4); | 389 EXPECT_GE(increasing_distance_tiles, 3 * tile_count / 4); |
| 396 | 390 |
| 397 // Check that we have consistent required_for_activation tiles. | 391 // Check that we have consistent required_for_activation tiles. |
| 398 queue.Reset(); | 392 queue = host_impl_.BuildRasterQueue( |
| 399 host_impl_.BuildRasterQueue( | 393 NEW_CONTENT_TAKES_PRIORITY, |
| 400 &queue, NEW_CONTENT_TAKES_PRIORITY, | |
| 401 RasterTilePriorityQueue::Type::REQUIRED_FOR_ACTIVATION); | 394 RasterTilePriorityQueue::Type::REQUIRED_FOR_ACTIVATION); |
| 402 required_for_activation_tiles.clear(); | 395 required_for_activation_tiles.clear(); |
| 403 while (!queue.IsEmpty()) { | 396 while (!queue->IsEmpty()) { |
| 404 Tile* tile = queue.Top(); | 397 Tile* tile = queue->Top(); |
| 405 EXPECT_TRUE(tile->required_for_activation()); | 398 EXPECT_TRUE(tile->required_for_activation()); |
| 406 required_for_activation_tiles.insert(tile); | 399 required_for_activation_tiles.insert(tile); |
| 407 queue.Pop(); | 400 queue->Pop(); |
| 408 } | 401 } |
| 409 EXPECT_EQ(expected_required_for_activation_tiles, | 402 EXPECT_EQ(expected_required_for_activation_tiles, |
| 410 required_for_activation_tiles); | 403 required_for_activation_tiles); |
| 411 EXPECT_NE(new_content_tiles, required_for_activation_tiles); | 404 EXPECT_NE(new_content_tiles, required_for_activation_tiles); |
| 412 | 405 |
| 413 // Check that we have consistent required_for_draw tiles. | 406 // Check that we have consistent required_for_draw tiles. |
| 414 queue.Reset(); | 407 queue = host_impl_.BuildRasterQueue( |
| 415 host_impl_.BuildRasterQueue(&queue, NEW_CONTENT_TAKES_PRIORITY, | 408 NEW_CONTENT_TAKES_PRIORITY, |
| 416 RasterTilePriorityQueue::Type::REQUIRED_FOR_DRAW); | 409 RasterTilePriorityQueue::Type::REQUIRED_FOR_DRAW); |
| 417 required_for_draw_tiles.clear(); | 410 required_for_draw_tiles.clear(); |
| 418 while (!queue.IsEmpty()) { | 411 while (!queue->IsEmpty()) { |
| 419 Tile* tile = queue.Top(); | 412 Tile* tile = queue->Top(); |
| 420 EXPECT_TRUE(tile->required_for_draw()); | 413 EXPECT_TRUE(tile->required_for_draw()); |
| 421 required_for_draw_tiles.insert(tile); | 414 required_for_draw_tiles.insert(tile); |
| 422 queue.Pop(); | 415 queue->Pop(); |
| 423 } | 416 } |
| 424 EXPECT_EQ(expected_required_for_draw_tiles, required_for_draw_tiles); | 417 EXPECT_EQ(expected_required_for_draw_tiles, required_for_draw_tiles); |
| 425 EXPECT_NE(new_content_tiles, required_for_draw_tiles); | 418 EXPECT_NE(new_content_tiles, required_for_draw_tiles); |
| 426 } | 419 } |
| 427 | 420 |
| 428 TEST_F(TileManagerTilePriorityQueueTest, RasterTilePriorityQueueInvalidation) { | 421 TEST_F(TileManagerTilePriorityQueueTest, RasterTilePriorityQueueInvalidation) { |
| 429 const gfx::Size layer_bounds(1000, 1000); | 422 const gfx::Size layer_bounds(1000, 1000); |
| 430 host_impl_.SetViewportSize(gfx::Size(500, 500)); | 423 host_impl_.SetViewportSize(gfx::Size(500, 500)); |
| 431 SetupDefaultTrees(layer_bounds); | 424 SetupDefaultTrees(layer_bounds); |
| 432 | 425 |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 478 for (int j = 0; j <= 3; ++j) { | 471 for (int j = 0; j <= 3; ++j) { |
| 479 expected_all_tiles.insert(pending_layer_->HighResTiling()->TileAt(i, j)); | 472 expected_all_tiles.insert(pending_layer_->HighResTiling()->TileAt(i, j)); |
| 480 expected_all_tiles.insert(active_layer_->HighResTiling()->TileAt(i, j)); | 473 expected_all_tiles.insert(active_layer_->HighResTiling()->TileAt(i, j)); |
| 481 } | 474 } |
| 482 } | 475 } |
| 483 // Expect 15 shared tiles and 1 unshared tile. | 476 // Expect 15 shared tiles and 1 unshared tile. |
| 484 EXPECT_EQ(17u, expected_all_tiles.size()); | 477 EXPECT_EQ(17u, expected_all_tiles.size()); |
| 485 | 478 |
| 486 // The actual test will now build different queues and verify that the queues | 479 // The actual test will now build different queues and verify that the queues |
| 487 // return the same information as computed manually above. | 480 // return the same information as computed manually above. |
| 488 RasterTilePriorityQueue queue; | 481 scoped_ptr<RasterTilePriorityQueue> queue(host_impl_.BuildRasterQueue( |
| 489 host_impl_.BuildRasterQueue(&queue, SAME_PRIORITY_FOR_BOTH_TREES, | 482 SAME_PRIORITY_FOR_BOTH_TREES, RasterTilePriorityQueue::Type::ALL)); |
| 490 RasterTilePriorityQueue::Type::ALL); | |
| 491 std::set<Tile*> actual_now_tiles; | 483 std::set<Tile*> actual_now_tiles; |
| 492 std::set<Tile*> actual_all_tiles; | 484 std::set<Tile*> actual_all_tiles; |
| 493 while (!queue.IsEmpty()) { | 485 while (!queue->IsEmpty()) { |
| 494 Tile* tile = queue.Top(); | 486 Tile* tile = queue->Top(); |
| 495 queue.Pop(); | 487 queue->Pop(); |
| 496 if (tile->combined_priority().priority_bin == TilePriority::NOW) | 488 if (tile->combined_priority().priority_bin == TilePriority::NOW) |
| 497 actual_now_tiles.insert(tile); | 489 actual_now_tiles.insert(tile); |
| 498 actual_all_tiles.insert(tile); | 490 actual_all_tiles.insert(tile); |
| 499 } | 491 } |
| 500 EXPECT_EQ(expected_now_tiles, actual_now_tiles); | 492 EXPECT_EQ(expected_now_tiles, actual_now_tiles); |
| 501 EXPECT_EQ(expected_all_tiles, actual_all_tiles); | 493 EXPECT_EQ(expected_all_tiles, actual_all_tiles); |
| 502 | 494 |
| 503 queue.Reset(); | 495 queue = host_impl_.BuildRasterQueue( |
| 504 host_impl_.BuildRasterQueue(&queue, SAME_PRIORITY_FOR_BOTH_TREES, | 496 SAME_PRIORITY_FOR_BOTH_TREES, |
| 505 RasterTilePriorityQueue::Type::REQUIRED_FOR_DRAW); | 497 RasterTilePriorityQueue::Type::REQUIRED_FOR_DRAW); |
| 506 std::set<Tile*> actual_required_for_draw_tiles; | 498 std::set<Tile*> actual_required_for_draw_tiles; |
| 507 while (!queue.IsEmpty()) { | 499 while (!queue->IsEmpty()) { |
| 508 Tile* tile = queue.Top(); | 500 Tile* tile = queue->Top(); |
| 509 queue.Pop(); | 501 queue->Pop(); |
| 510 actual_required_for_draw_tiles.insert(tile); | 502 actual_required_for_draw_tiles.insert(tile); |
| 511 } | 503 } |
| 512 EXPECT_EQ(expected_required_for_draw_tiles, actual_required_for_draw_tiles); | 504 EXPECT_EQ(expected_required_for_draw_tiles, actual_required_for_draw_tiles); |
| 513 | 505 |
| 514 queue.Reset(); | 506 queue = host_impl_.BuildRasterQueue( |
| 515 host_impl_.BuildRasterQueue( | 507 SAME_PRIORITY_FOR_BOTH_TREES, |
| 516 &queue, SAME_PRIORITY_FOR_BOTH_TREES, | |
| 517 RasterTilePriorityQueue::Type::REQUIRED_FOR_ACTIVATION); | 508 RasterTilePriorityQueue::Type::REQUIRED_FOR_ACTIVATION); |
| 518 std::set<Tile*> actual_required_for_activation_tiles; | 509 std::set<Tile*> actual_required_for_activation_tiles; |
| 519 while (!queue.IsEmpty()) { | 510 while (!queue->IsEmpty()) { |
| 520 Tile* tile = queue.Top(); | 511 Tile* tile = queue->Top(); |
| 521 queue.Pop(); | 512 queue->Pop(); |
| 522 actual_required_for_activation_tiles.insert(tile); | 513 actual_required_for_activation_tiles.insert(tile); |
| 523 } | 514 } |
| 524 EXPECT_EQ(expected_required_for_activation_tiles, | 515 EXPECT_EQ(expected_required_for_activation_tiles, |
| 525 actual_required_for_activation_tiles); | 516 actual_required_for_activation_tiles); |
| 526 } | 517 } |
| 527 | 518 |
| 528 TEST_F(TileManagerTilePriorityQueueTest, ActivationComesBeforeEventually) { | 519 TEST_F(TileManagerTilePriorityQueueTest, ActivationComesBeforeEventually) { |
| 529 base::TimeTicks time_ticks; | 520 base::TimeTicks time_ticks; |
| 530 time_ticks += base::TimeDelta::FromMilliseconds(1); | 521 time_ticks += base::TimeDelta::FromMilliseconds(1); |
| 531 host_impl_.SetCurrentBeginFrameArgs( | 522 host_impl_.SetCurrentBeginFrameArgs( |
| (...skipping 13 matching lines...) Expand all Loading... |
| 545 pending_child_raw->SetDrawsContent(true); | 536 pending_child_raw->SetDrawsContent(true); |
| 546 pending_layer_->AddChild(pending_child.Pass()); | 537 pending_layer_->AddChild(pending_child.Pass()); |
| 547 | 538 |
| 548 // Set a small viewport, so we have soon and eventually tiles. | 539 // Set a small viewport, so we have soon and eventually tiles. |
| 549 host_impl_.SetViewportSize(gfx::Size(200, 200)); | 540 host_impl_.SetViewportSize(gfx::Size(200, 200)); |
| 550 time_ticks += base::TimeDelta::FromMilliseconds(1); | 541 time_ticks += base::TimeDelta::FromMilliseconds(1); |
| 551 host_impl_.SetCurrentBeginFrameArgs( | 542 host_impl_.SetCurrentBeginFrameArgs( |
| 552 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, time_ticks)); | 543 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, time_ticks)); |
| 553 host_impl_.pending_tree()->UpdateDrawProperties(); | 544 host_impl_.pending_tree()->UpdateDrawProperties(); |
| 554 | 545 |
| 555 RasterTilePriorityQueue queue; | |
| 556 host_impl_.SetRequiresHighResToDraw(); | 546 host_impl_.SetRequiresHighResToDraw(); |
| 557 host_impl_.BuildRasterQueue(&queue, SMOOTHNESS_TAKES_PRIORITY, | 547 scoped_ptr<RasterTilePriorityQueue> queue(host_impl_.BuildRasterQueue( |
| 558 RasterTilePriorityQueue::Type::ALL); | 548 SMOOTHNESS_TAKES_PRIORITY, RasterTilePriorityQueue::Type::ALL)); |
| 559 EXPECT_FALSE(queue.IsEmpty()); | 549 EXPECT_FALSE(queue->IsEmpty()); |
| 560 | 550 |
| 561 // Get all the tiles that are NOW or SOON and make sure they are ready to | 551 // Get all the tiles that are NOW or SOON and make sure they are ready to |
| 562 // draw. | 552 // draw. |
| 563 std::vector<Tile*> all_tiles; | 553 std::vector<Tile*> all_tiles; |
| 564 while (!queue.IsEmpty()) { | 554 while (!queue->IsEmpty()) { |
| 565 Tile* tile = queue.Top(); | 555 Tile* tile = queue->Top(); |
| 566 if (tile->combined_priority().priority_bin >= TilePriority::EVENTUALLY) | 556 if (tile->combined_priority().priority_bin >= TilePriority::EVENTUALLY) |
| 567 break; | 557 break; |
| 568 | 558 |
| 569 all_tiles.push_back(tile); | 559 all_tiles.push_back(tile); |
| 570 queue.Pop(); | 560 queue->Pop(); |
| 571 } | 561 } |
| 572 | 562 |
| 573 tile_manager()->InitializeTilesWithResourcesForTesting( | 563 tile_manager()->InitializeTilesWithResourcesForTesting( |
| 574 std::vector<Tile*>(all_tiles.begin(), all_tiles.end())); | 564 std::vector<Tile*>(all_tiles.begin(), all_tiles.end())); |
| 575 | 565 |
| 576 // Ensure we can activate. | 566 // Ensure we can activate. |
| 577 EXPECT_TRUE(pending_layer_->AllTilesRequiredForActivationAreReadyToDraw()); | 567 EXPECT_TRUE(pending_layer_->AllTilesRequiredForActivationAreReadyToDraw()); |
| 578 EXPECT_TRUE(pending_child_raw->AllTilesRequiredForActivationAreReadyToDraw()); | 568 EXPECT_TRUE(pending_child_raw->AllTilesRequiredForActivationAreReadyToDraw()); |
| 579 } | 569 } |
| 580 | 570 |
| 581 TEST_F(TileManagerTilePriorityQueueTest, EvictionTilePriorityQueue) { | 571 TEST_F(TileManagerTilePriorityQueueTest, EvictionTilePriorityQueue) { |
| 582 const gfx::Size layer_bounds(1000, 1000); | 572 const gfx::Size layer_bounds(1000, 1000); |
| 583 host_impl_.SetViewportSize(layer_bounds); | 573 host_impl_.SetViewportSize(layer_bounds); |
| 584 SetupDefaultTrees(layer_bounds); | 574 SetupDefaultTrees(layer_bounds); |
| 585 | 575 |
| 586 EvictionTilePriorityQueue empty_queue; | 576 scoped_ptr<EvictionTilePriorityQueue> empty_queue( |
| 587 host_impl_.BuildEvictionQueue(&empty_queue, SAME_PRIORITY_FOR_BOTH_TREES); | 577 host_impl_.BuildEvictionQueue(SAME_PRIORITY_FOR_BOTH_TREES)); |
| 588 EXPECT_TRUE(empty_queue.IsEmpty()); | 578 EXPECT_TRUE(empty_queue->IsEmpty()); |
| 589 std::set<Tile*> all_tiles; | 579 std::set<Tile*> all_tiles; |
| 590 size_t tile_count = 0; | 580 size_t tile_count = 0; |
| 591 | 581 |
| 592 RasterTilePriorityQueue raster_queue; | 582 scoped_ptr<RasterTilePriorityQueue> raster_queue(host_impl_.BuildRasterQueue( |
| 593 host_impl_.BuildRasterQueue(&raster_queue, SAME_PRIORITY_FOR_BOTH_TREES, | 583 SAME_PRIORITY_FOR_BOTH_TREES, RasterTilePriorityQueue::Type::ALL)); |
| 594 RasterTilePriorityQueue::Type::ALL); | 584 while (!raster_queue->IsEmpty()) { |
| 595 while (!raster_queue.IsEmpty()) { | |
| 596 ++tile_count; | 585 ++tile_count; |
| 597 EXPECT_TRUE(raster_queue.Top()); | 586 EXPECT_TRUE(raster_queue->Top()); |
| 598 all_tiles.insert(raster_queue.Top()); | 587 all_tiles.insert(raster_queue->Top()); |
| 599 raster_queue.Pop(); | 588 raster_queue->Pop(); |
| 600 } | 589 } |
| 601 | 590 |
| 602 EXPECT_EQ(tile_count, all_tiles.size()); | 591 EXPECT_EQ(tile_count, all_tiles.size()); |
| 603 EXPECT_EQ(16u, tile_count); | 592 EXPECT_EQ(16u, tile_count); |
| 604 | 593 |
| 605 tile_manager()->InitializeTilesWithResourcesForTesting( | 594 tile_manager()->InitializeTilesWithResourcesForTesting( |
| 606 std::vector<Tile*>(all_tiles.begin(), all_tiles.end())); | 595 std::vector<Tile*>(all_tiles.begin(), all_tiles.end())); |
| 607 | 596 |
| 608 EvictionTilePriorityQueue queue; | 597 scoped_ptr<EvictionTilePriorityQueue> queue( |
| 609 host_impl_.BuildEvictionQueue(&queue, SMOOTHNESS_TAKES_PRIORITY); | 598 host_impl_.BuildEvictionQueue(SMOOTHNESS_TAKES_PRIORITY)); |
| 610 EXPECT_FALSE(queue.IsEmpty()); | 599 EXPECT_FALSE(queue->IsEmpty()); |
| 611 | 600 |
| 612 // Sanity check, all tiles should be visible. | 601 // Sanity check, all tiles should be visible. |
| 613 std::set<Tile*> smoothness_tiles; | 602 std::set<Tile*> smoothness_tiles; |
| 614 while (!queue.IsEmpty()) { | 603 while (!queue->IsEmpty()) { |
| 615 Tile* tile = queue.Top(); | 604 Tile* tile = queue->Top(); |
| 616 EXPECT_TRUE(tile); | 605 EXPECT_TRUE(tile); |
| 617 EXPECT_EQ(TilePriority::NOW, tile->priority(ACTIVE_TREE).priority_bin); | 606 EXPECT_EQ(TilePriority::NOW, tile->priority(ACTIVE_TREE).priority_bin); |
| 618 EXPECT_EQ(TilePriority::NOW, tile->priority(PENDING_TREE).priority_bin); | 607 EXPECT_EQ(TilePriority::NOW, tile->priority(PENDING_TREE).priority_bin); |
| 619 EXPECT_TRUE(tile->HasResource()); | 608 EXPECT_TRUE(tile->HasResource()); |
| 620 smoothness_tiles.insert(tile); | 609 smoothness_tiles.insert(tile); |
| 621 queue.Pop(); | 610 queue->Pop(); |
| 622 } | 611 } |
| 623 EXPECT_EQ(all_tiles, smoothness_tiles); | 612 EXPECT_EQ(all_tiles, smoothness_tiles); |
| 624 | 613 |
| 625 tile_manager()->ReleaseTileResourcesForTesting( | 614 tile_manager()->ReleaseTileResourcesForTesting( |
| 626 std::vector<Tile*>(all_tiles.begin(), all_tiles.end())); | 615 std::vector<Tile*>(all_tiles.begin(), all_tiles.end())); |
| 627 | 616 |
| 628 Region invalidation(gfx::Rect(0, 0, 500, 500)); | 617 Region invalidation(gfx::Rect(0, 0, 500, 500)); |
| 629 | 618 |
| 630 // Invalidate the pending tree. | 619 // Invalidate the pending tree. |
| 631 pending_layer_->set_invalidation(invalidation); | 620 pending_layer_->set_invalidation(invalidation); |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 668 for (size_t i = 0; i < active_low_res_tiles.size(); ++i) | 657 for (size_t i = 0; i < active_low_res_tiles.size(); ++i) |
| 669 all_tiles.insert(active_low_res_tiles[i]); | 658 all_tiles.insert(active_low_res_tiles[i]); |
| 670 | 659 |
| 671 tile_manager()->InitializeTilesWithResourcesForTesting( | 660 tile_manager()->InitializeTilesWithResourcesForTesting( |
| 672 std::vector<Tile*>(all_tiles.begin(), all_tiles.end())); | 661 std::vector<Tile*>(all_tiles.begin(), all_tiles.end())); |
| 673 | 662 |
| 674 Tile* last_tile = NULL; | 663 Tile* last_tile = NULL; |
| 675 smoothness_tiles.clear(); | 664 smoothness_tiles.clear(); |
| 676 tile_count = 0; | 665 tile_count = 0; |
| 677 // Here we expect to get increasing ACTIVE_TREE priority_bin. | 666 // Here we expect to get increasing ACTIVE_TREE priority_bin. |
| 678 queue.Reset(); | 667 queue = host_impl_.BuildEvictionQueue(SMOOTHNESS_TAKES_PRIORITY); |
| 679 host_impl_.BuildEvictionQueue(&queue, SMOOTHNESS_TAKES_PRIORITY); | |
| 680 int distance_increasing = 0; | 668 int distance_increasing = 0; |
| 681 int distance_decreasing = 0; | 669 int distance_decreasing = 0; |
| 682 while (!queue.IsEmpty()) { | 670 while (!queue->IsEmpty()) { |
| 683 Tile* tile = queue.Top(); | 671 Tile* tile = queue->Top(); |
| 684 EXPECT_TRUE(tile); | 672 EXPECT_TRUE(tile); |
| 685 EXPECT_TRUE(tile->HasResource()); | 673 EXPECT_TRUE(tile->HasResource()); |
| 686 | 674 |
| 687 if (!last_tile) | 675 if (!last_tile) |
| 688 last_tile = tile; | 676 last_tile = tile; |
| 689 | 677 |
| 690 EXPECT_GE(last_tile->priority(ACTIVE_TREE).priority_bin, | 678 EXPECT_GE(last_tile->priority(ACTIVE_TREE).priority_bin, |
| 691 tile->priority(ACTIVE_TREE).priority_bin); | 679 tile->priority(ACTIVE_TREE).priority_bin); |
| 692 if (last_tile->priority(ACTIVE_TREE).priority_bin == | 680 if (last_tile->priority(ACTIVE_TREE).priority_bin == |
| 693 tile->priority(ACTIVE_TREE).priority_bin) { | 681 tile->priority(ACTIVE_TREE).priority_bin) { |
| 694 EXPECT_LE(last_tile->required_for_activation(), | 682 EXPECT_LE(last_tile->required_for_activation(), |
| 695 tile->required_for_activation()); | 683 tile->required_for_activation()); |
| 696 if (last_tile->required_for_activation() == | 684 if (last_tile->required_for_activation() == |
| 697 tile->required_for_activation()) { | 685 tile->required_for_activation()) { |
| 698 if (last_tile->priority(ACTIVE_TREE).distance_to_visible >= | 686 if (last_tile->priority(ACTIVE_TREE).distance_to_visible >= |
| 699 tile->priority(ACTIVE_TREE).distance_to_visible) | 687 tile->priority(ACTIVE_TREE).distance_to_visible) |
| 700 ++distance_decreasing; | 688 ++distance_decreasing; |
| 701 else | 689 else |
| 702 ++distance_increasing; | 690 ++distance_increasing; |
| 703 } | 691 } |
| 704 } | 692 } |
| 705 | 693 |
| 706 last_tile = tile; | 694 last_tile = tile; |
| 707 ++tile_count; | 695 ++tile_count; |
| 708 smoothness_tiles.insert(tile); | 696 smoothness_tiles.insert(tile); |
| 709 queue.Pop(); | 697 queue->Pop(); |
| 710 } | 698 } |
| 711 | 699 |
| 712 EXPECT_EQ(3, distance_increasing); | 700 EXPECT_EQ(3, distance_increasing); |
| 713 EXPECT_EQ(16, distance_decreasing); | 701 EXPECT_EQ(16, distance_decreasing); |
| 714 EXPECT_EQ(tile_count, smoothness_tiles.size()); | 702 EXPECT_EQ(tile_count, smoothness_tiles.size()); |
| 715 EXPECT_EQ(all_tiles, smoothness_tiles); | 703 EXPECT_EQ(all_tiles, smoothness_tiles); |
| 716 | 704 |
| 717 std::set<Tile*> new_content_tiles; | 705 std::set<Tile*> new_content_tiles; |
| 718 last_tile = NULL; | 706 last_tile = NULL; |
| 719 // Here we expect to get increasing PENDING_TREE priority_bin. | 707 // Here we expect to get increasing PENDING_TREE priority_bin. |
| 720 queue.Reset(); | 708 queue = host_impl_.BuildEvictionQueue(NEW_CONTENT_TAKES_PRIORITY); |
| 721 host_impl_.BuildEvictionQueue(&queue, NEW_CONTENT_TAKES_PRIORITY); | |
| 722 distance_decreasing = 0; | 709 distance_decreasing = 0; |
| 723 distance_increasing = 0; | 710 distance_increasing = 0; |
| 724 while (!queue.IsEmpty()) { | 711 while (!queue->IsEmpty()) { |
| 725 Tile* tile = queue.Top(); | 712 Tile* tile = queue->Top(); |
| 726 EXPECT_TRUE(tile); | 713 EXPECT_TRUE(tile); |
| 727 | 714 |
| 728 if (!last_tile) | 715 if (!last_tile) |
| 729 last_tile = tile; | 716 last_tile = tile; |
| 730 | 717 |
| 731 EXPECT_GE(last_tile->priority(PENDING_TREE).priority_bin, | 718 EXPECT_GE(last_tile->priority(PENDING_TREE).priority_bin, |
| 732 tile->priority(PENDING_TREE).priority_bin); | 719 tile->priority(PENDING_TREE).priority_bin); |
| 733 if (last_tile->priority(PENDING_TREE).priority_bin == | 720 if (last_tile->priority(PENDING_TREE).priority_bin == |
| 734 tile->priority(PENDING_TREE).priority_bin) { | 721 tile->priority(PENDING_TREE).priority_bin) { |
| 735 EXPECT_LE(last_tile->required_for_activation(), | 722 EXPECT_LE(last_tile->required_for_activation(), |
| 736 tile->required_for_activation()); | 723 tile->required_for_activation()); |
| 737 if (last_tile->required_for_activation() == | 724 if (last_tile->required_for_activation() == |
| 738 tile->required_for_activation()) { | 725 tile->required_for_activation()) { |
| 739 if (last_tile->priority(PENDING_TREE).distance_to_visible >= | 726 if (last_tile->priority(PENDING_TREE).distance_to_visible >= |
| 740 tile->priority(PENDING_TREE).distance_to_visible) | 727 tile->priority(PENDING_TREE).distance_to_visible) |
| 741 ++distance_decreasing; | 728 ++distance_decreasing; |
| 742 else | 729 else |
| 743 ++distance_increasing; | 730 ++distance_increasing; |
| 744 } | 731 } |
| 745 } | 732 } |
| 746 | 733 |
| 747 last_tile = tile; | 734 last_tile = tile; |
| 748 new_content_tiles.insert(tile); | 735 new_content_tiles.insert(tile); |
| 749 queue.Pop(); | 736 queue->Pop(); |
| 750 } | 737 } |
| 751 | 738 |
| 752 EXPECT_EQ(3, distance_increasing); | 739 EXPECT_EQ(3, distance_increasing); |
| 753 EXPECT_EQ(16, distance_decreasing); | 740 EXPECT_EQ(16, distance_decreasing); |
| 754 EXPECT_EQ(tile_count, new_content_tiles.size()); | 741 EXPECT_EQ(tile_count, new_content_tiles.size()); |
| 755 EXPECT_EQ(all_tiles, new_content_tiles); | 742 EXPECT_EQ(all_tiles, new_content_tiles); |
| 756 } | 743 } |
| 757 | 744 |
| 758 TEST_F(TileManagerTilePriorityQueueTest, | 745 TEST_F(TileManagerTilePriorityQueueTest, |
| 759 EvictionTilePriorityQueueWithOcclusion) { | 746 EvictionTilePriorityQueueWithOcclusion) { |
| (...skipping 20 matching lines...) Expand all Loading... |
| 780 static_cast<FakePictureLayerImpl*>(pending_layer_->children()[0]); | 767 static_cast<FakePictureLayerImpl*>(pending_layer_->children()[0]); |
| 781 pending_child_layer->SetDrawsContent(true); | 768 pending_child_layer->SetDrawsContent(true); |
| 782 | 769 |
| 783 time_ticks += base::TimeDelta::FromMilliseconds(1); | 770 time_ticks += base::TimeDelta::FromMilliseconds(1); |
| 784 host_impl_.SetCurrentBeginFrameArgs( | 771 host_impl_.SetCurrentBeginFrameArgs( |
| 785 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, time_ticks)); | 772 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, time_ticks)); |
| 786 host_impl_.pending_tree()->UpdateDrawProperties(); | 773 host_impl_.pending_tree()->UpdateDrawProperties(); |
| 787 | 774 |
| 788 std::set<Tile*> all_tiles; | 775 std::set<Tile*> all_tiles; |
| 789 size_t tile_count = 0; | 776 size_t tile_count = 0; |
| 790 RasterTilePriorityQueue raster_queue; | 777 scoped_ptr<RasterTilePriorityQueue> raster_queue(host_impl_.BuildRasterQueue( |
| 791 host_impl_.BuildRasterQueue(&raster_queue, SAME_PRIORITY_FOR_BOTH_TREES, | 778 SAME_PRIORITY_FOR_BOTH_TREES, RasterTilePriorityQueue::Type::ALL)); |
| 792 RasterTilePriorityQueue::Type::ALL); | 779 while (!raster_queue->IsEmpty()) { |
| 793 while (!raster_queue.IsEmpty()) { | |
| 794 ++tile_count; | 780 ++tile_count; |
| 795 EXPECT_TRUE(raster_queue.Top()); | 781 EXPECT_TRUE(raster_queue->Top()); |
| 796 all_tiles.insert(raster_queue.Top()); | 782 all_tiles.insert(raster_queue->Top()); |
| 797 raster_queue.Pop(); | 783 raster_queue->Pop(); |
| 798 } | 784 } |
| 799 EXPECT_EQ(tile_count, all_tiles.size()); | 785 EXPECT_EQ(tile_count, all_tiles.size()); |
| 800 EXPECT_EQ(32u, tile_count); | 786 EXPECT_EQ(32u, tile_count); |
| 801 | 787 |
| 802 pending_layer_->ResetAllTilesPriorities(); | 788 pending_layer_->ResetAllTilesPriorities(); |
| 803 | 789 |
| 804 // Renew all of the tile priorities. | 790 // Renew all of the tile priorities. |
| 805 gfx::Rect viewport(layer_bounds); | 791 gfx::Rect viewport(layer_bounds); |
| 806 pending_layer_->HighResTiling()->ComputeTilePriorityRects(viewport, 1.0f, 1.0, | 792 pending_layer_->HighResTiling()->ComputeTilePriorityRects(viewport, 1.0f, 1.0, |
| 807 Occlusion()); | 793 Occlusion()); |
| (...skipping 28 matching lines...) Expand all Loading... |
| 836 all_tiles.insert(pending_child_low_res_tiles.begin(), | 822 all_tiles.insert(pending_child_low_res_tiles.begin(), |
| 837 pending_child_low_res_tiles.end()); | 823 pending_child_low_res_tiles.end()); |
| 838 | 824 |
| 839 tile_manager()->InitializeTilesWithResourcesForTesting( | 825 tile_manager()->InitializeTilesWithResourcesForTesting( |
| 840 std::vector<Tile*>(all_tiles.begin(), all_tiles.end())); | 826 std::vector<Tile*>(all_tiles.begin(), all_tiles.end())); |
| 841 | 827 |
| 842 // Verify occlusion is considered by EvictionTilePriorityQueue. | 828 // Verify occlusion is considered by EvictionTilePriorityQueue. |
| 843 TreePriority tree_priority = NEW_CONTENT_TAKES_PRIORITY; | 829 TreePriority tree_priority = NEW_CONTENT_TAKES_PRIORITY; |
| 844 size_t occluded_count = 0u; | 830 size_t occluded_count = 0u; |
| 845 Tile* last_tile = NULL; | 831 Tile* last_tile = NULL; |
| 846 EvictionTilePriorityQueue queue; | 832 scoped_ptr<EvictionTilePriorityQueue> queue( |
| 847 host_impl_.BuildEvictionQueue(&queue, tree_priority); | 833 host_impl_.BuildEvictionQueue(tree_priority)); |
| 848 while (!queue.IsEmpty()) { | 834 while (!queue->IsEmpty()) { |
| 849 Tile* tile = queue.Top(); | 835 Tile* tile = queue->Top(); |
| 850 if (!last_tile) | 836 if (!last_tile) |
| 851 last_tile = tile; | 837 last_tile = tile; |
| 852 | 838 |
| 853 bool tile_is_occluded = tile->is_occluded_for_tree_priority(tree_priority); | 839 bool tile_is_occluded = tile->is_occluded_for_tree_priority(tree_priority); |
| 854 | 840 |
| 855 // The only way we will encounter an occluded tile after an unoccluded | 841 // The only way we will encounter an occluded tile after an unoccluded |
| 856 // tile is if the priorty bin decreased, the tile is required for | 842 // tile is if the priorty bin decreased, the tile is required for |
| 857 // activation, or the scale changed. | 843 // activation, or the scale changed. |
| 858 if (tile_is_occluded) { | 844 if (tile_is_occluded) { |
| 859 occluded_count++; | 845 occluded_count++; |
| 860 | 846 |
| 861 bool last_tile_is_occluded = | 847 bool last_tile_is_occluded = |
| 862 last_tile->is_occluded_for_tree_priority(tree_priority); | 848 last_tile->is_occluded_for_tree_priority(tree_priority); |
| 863 if (!last_tile_is_occluded) { | 849 if (!last_tile_is_occluded) { |
| 864 TilePriority::PriorityBin tile_priority_bin = | 850 TilePriority::PriorityBin tile_priority_bin = |
| 865 tile->priority_for_tree_priority(tree_priority).priority_bin; | 851 tile->priority_for_tree_priority(tree_priority).priority_bin; |
| 866 TilePriority::PriorityBin last_tile_priority_bin = | 852 TilePriority::PriorityBin last_tile_priority_bin = |
| 867 last_tile->priority_for_tree_priority(tree_priority).priority_bin; | 853 last_tile->priority_for_tree_priority(tree_priority).priority_bin; |
| 868 | 854 |
| 869 EXPECT_TRUE((tile_priority_bin < last_tile_priority_bin) || | 855 EXPECT_TRUE((tile_priority_bin < last_tile_priority_bin) || |
| 870 tile->required_for_activation() || | 856 tile->required_for_activation() || |
| 871 (tile->contents_scale() != last_tile->contents_scale())); | 857 (tile->contents_scale() != last_tile->contents_scale())); |
| 872 } | 858 } |
| 873 } | 859 } |
| 874 last_tile = tile; | 860 last_tile = tile; |
| 875 queue.Pop(); | 861 queue->Pop(); |
| 876 } | 862 } |
| 877 size_t expected_occluded_count = | 863 size_t expected_occluded_count = |
| 878 pending_child_high_res_tiles.size() + pending_child_low_res_tiles.size(); | 864 pending_child_high_res_tiles.size() + pending_child_low_res_tiles.size(); |
| 879 EXPECT_EQ(expected_occluded_count, occluded_count); | 865 EXPECT_EQ(expected_occluded_count, occluded_count); |
| 880 } | 866 } |
| 881 | 867 |
| 882 TEST_F(TileManagerTilePriorityQueueTest, | 868 TEST_F(TileManagerTilePriorityQueueTest, |
| 883 EvictionTilePriorityQueueWithTransparentLayer) { | 869 EvictionTilePriorityQueueWithTransparentLayer) { |
| 884 base::TimeTicks time_ticks; | 870 base::TimeTicks time_ticks; |
| 885 time_ticks += base::TimeDelta::FromMilliseconds(1); | 871 time_ticks += base::TimeDelta::FromMilliseconds(1); |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 962 | 948 |
| 963 EXPECT_TRUE(pending_layer_->HasValidTilePriorities()); | 949 EXPECT_TRUE(pending_layer_->HasValidTilePriorities()); |
| 964 EXPECT_FALSE(pending_child_layer->HasValidTilePriorities()); | 950 EXPECT_FALSE(pending_child_layer->HasValidTilePriorities()); |
| 965 | 951 |
| 966 // Verify that eviction queue returns tiles also from layers without valid | 952 // Verify that eviction queue returns tiles also from layers without valid |
| 967 // tile priorities and that the tile priority bin of those tiles is (at most) | 953 // tile priorities and that the tile priority bin of those tiles is (at most) |
| 968 // EVENTUALLY. | 954 // EVENTUALLY. |
| 969 TreePriority tree_priority = NEW_CONTENT_TAKES_PRIORITY; | 955 TreePriority tree_priority = NEW_CONTENT_TAKES_PRIORITY; |
| 970 std::set<Tile*> new_content_tiles; | 956 std::set<Tile*> new_content_tiles; |
| 971 size_t tile_count = 0; | 957 size_t tile_count = 0; |
| 972 EvictionTilePriorityQueue queue; | 958 scoped_ptr<EvictionTilePriorityQueue> queue( |
| 973 host_impl_.BuildEvictionQueue(&queue, tree_priority); | 959 host_impl_.BuildEvictionQueue(tree_priority)); |
| 974 while (!queue.IsEmpty()) { | 960 while (!queue->IsEmpty()) { |
| 975 Tile* tile = queue.Top(); | 961 Tile* tile = queue->Top(); |
| 976 const TilePriority& pending_priority = tile->priority(PENDING_TREE); | 962 const TilePriority& pending_priority = tile->priority(PENDING_TREE); |
| 977 EXPECT_NE(std::numeric_limits<float>::infinity(), | 963 EXPECT_NE(std::numeric_limits<float>::infinity(), |
| 978 pending_priority.distance_to_visible); | 964 pending_priority.distance_to_visible); |
| 979 if (all_pending_child_tiles.find(tile) != all_pending_child_tiles.end()) | 965 if (all_pending_child_tiles.find(tile) != all_pending_child_tiles.end()) |
| 980 EXPECT_EQ(TilePriority::EVENTUALLY, pending_priority.priority_bin); | 966 EXPECT_EQ(TilePriority::EVENTUALLY, pending_priority.priority_bin); |
| 981 else | 967 else |
| 982 EXPECT_EQ(TilePriority::NOW, pending_priority.priority_bin); | 968 EXPECT_EQ(TilePriority::NOW, pending_priority.priority_bin); |
| 983 new_content_tiles.insert(tile); | 969 new_content_tiles.insert(tile); |
| 984 ++tile_count; | 970 ++tile_count; |
| 985 queue.Pop(); | 971 queue->Pop(); |
| 986 } | 972 } |
| 987 EXPECT_EQ(tile_count, new_content_tiles.size()); | 973 EXPECT_EQ(tile_count, new_content_tiles.size()); |
| 988 EXPECT_EQ(all_tiles, new_content_tiles); | 974 EXPECT_EQ(all_tiles, new_content_tiles); |
| 989 } | 975 } |
| 990 | 976 |
| 991 TEST_F(TileManagerTilePriorityQueueTest, RasterTilePriorityQueueEmptyLayers) { | 977 TEST_F(TileManagerTilePriorityQueueTest, RasterTilePriorityQueueEmptyLayers) { |
| 992 const gfx::Size layer_bounds(1000, 1000); | 978 const gfx::Size layer_bounds(1000, 1000); |
| 993 host_impl_.SetViewportSize(layer_bounds); | 979 host_impl_.SetViewportSize(layer_bounds); |
| 994 SetupDefaultTrees(layer_bounds); | 980 SetupDefaultTrees(layer_bounds); |
| 995 | 981 |
| 996 RasterTilePriorityQueue queue; | 982 scoped_ptr<RasterTilePriorityQueue> queue(host_impl_.BuildRasterQueue( |
| 997 host_impl_.BuildRasterQueue(&queue, SAME_PRIORITY_FOR_BOTH_TREES, | 983 SAME_PRIORITY_FOR_BOTH_TREES, RasterTilePriorityQueue::Type::ALL)); |
| 998 RasterTilePriorityQueue::Type::ALL); | 984 EXPECT_FALSE(queue->IsEmpty()); |
| 999 EXPECT_FALSE(queue.IsEmpty()); | |
| 1000 | 985 |
| 1001 size_t tile_count = 0; | 986 size_t tile_count = 0; |
| 1002 std::set<Tile*> all_tiles; | 987 std::set<Tile*> all_tiles; |
| 1003 while (!queue.IsEmpty()) { | 988 while (!queue->IsEmpty()) { |
| 1004 EXPECT_TRUE(queue.Top()); | 989 EXPECT_TRUE(queue->Top()); |
| 1005 all_tiles.insert(queue.Top()); | 990 all_tiles.insert(queue->Top()); |
| 1006 ++tile_count; | 991 ++tile_count; |
| 1007 queue.Pop(); | 992 queue->Pop(); |
| 1008 } | 993 } |
| 1009 | 994 |
| 1010 EXPECT_EQ(tile_count, all_tiles.size()); | 995 EXPECT_EQ(tile_count, all_tiles.size()); |
| 1011 EXPECT_EQ(16u, tile_count); | 996 EXPECT_EQ(16u, tile_count); |
| 1012 | 997 |
| 1013 queue.Reset(); | |
| 1014 for (int i = 1; i < 10; ++i) { | 998 for (int i = 1; i < 10; ++i) { |
| 1015 scoped_ptr<FakePictureLayerImpl> pending_layer = | 999 scoped_ptr<FakePictureLayerImpl> pending_layer = |
| 1016 FakePictureLayerImpl::Create(host_impl_.pending_tree(), id_ + i); | 1000 FakePictureLayerImpl::Create(host_impl_.pending_tree(), id_ + i); |
| 1017 pending_layer->SetDrawsContent(true); | 1001 pending_layer->SetDrawsContent(true); |
| 1018 pending_layer->set_has_valid_tile_priorities(true); | 1002 pending_layer->set_has_valid_tile_priorities(true); |
| 1019 pending_layer_->AddChild(pending_layer.Pass()); | 1003 pending_layer_->AddChild(pending_layer.Pass()); |
| 1020 } | 1004 } |
| 1021 | 1005 |
| 1022 host_impl_.BuildRasterQueue(&queue, SAME_PRIORITY_FOR_BOTH_TREES, | 1006 queue = host_impl_.BuildRasterQueue(SAME_PRIORITY_FOR_BOTH_TREES, |
| 1023 RasterTilePriorityQueue::Type::ALL); | 1007 RasterTilePriorityQueue::Type::ALL); |
| 1024 EXPECT_FALSE(queue.IsEmpty()); | 1008 EXPECT_FALSE(queue->IsEmpty()); |
| 1025 | 1009 |
| 1026 tile_count = 0; | 1010 tile_count = 0; |
| 1027 all_tiles.clear(); | 1011 all_tiles.clear(); |
| 1028 while (!queue.IsEmpty()) { | 1012 while (!queue->IsEmpty()) { |
| 1029 EXPECT_TRUE(queue.Top()); | 1013 EXPECT_TRUE(queue->Top()); |
| 1030 all_tiles.insert(queue.Top()); | 1014 all_tiles.insert(queue->Top()); |
| 1031 ++tile_count; | 1015 ++tile_count; |
| 1032 queue.Pop(); | 1016 queue->Pop(); |
| 1033 } | 1017 } |
| 1034 EXPECT_EQ(tile_count, all_tiles.size()); | 1018 EXPECT_EQ(tile_count, all_tiles.size()); |
| 1035 EXPECT_EQ(16u, tile_count); | 1019 EXPECT_EQ(16u, tile_count); |
| 1036 } | 1020 } |
| 1037 | 1021 |
| 1038 TEST_F(TileManagerTilePriorityQueueTest, EvictionTilePriorityQueueEmptyLayers) { | 1022 TEST_F(TileManagerTilePriorityQueueTest, EvictionTilePriorityQueueEmptyLayers) { |
| 1039 const gfx::Size layer_bounds(1000, 1000); | 1023 const gfx::Size layer_bounds(1000, 1000); |
| 1040 host_impl_.SetViewportSize(layer_bounds); | 1024 host_impl_.SetViewportSize(layer_bounds); |
| 1041 SetupDefaultTrees(layer_bounds); | 1025 SetupDefaultTrees(layer_bounds); |
| 1042 | 1026 |
| 1043 RasterTilePriorityQueue raster_queue; | 1027 scoped_ptr<RasterTilePriorityQueue> raster_queue(host_impl_.BuildRasterQueue( |
| 1044 host_impl_.BuildRasterQueue(&raster_queue, SAME_PRIORITY_FOR_BOTH_TREES, | 1028 SAME_PRIORITY_FOR_BOTH_TREES, RasterTilePriorityQueue::Type::ALL)); |
| 1045 RasterTilePriorityQueue::Type::ALL); | 1029 EXPECT_FALSE(raster_queue->IsEmpty()); |
| 1046 EXPECT_FALSE(raster_queue.IsEmpty()); | |
| 1047 | 1030 |
| 1048 size_t tile_count = 0; | 1031 size_t tile_count = 0; |
| 1049 std::set<Tile*> all_tiles; | 1032 std::set<Tile*> all_tiles; |
| 1050 while (!raster_queue.IsEmpty()) { | 1033 while (!raster_queue->IsEmpty()) { |
| 1051 EXPECT_TRUE(raster_queue.Top()); | 1034 EXPECT_TRUE(raster_queue->Top()); |
| 1052 all_tiles.insert(raster_queue.Top()); | 1035 all_tiles.insert(raster_queue->Top()); |
| 1053 ++tile_count; | 1036 ++tile_count; |
| 1054 raster_queue.Pop(); | 1037 raster_queue->Pop(); |
| 1055 } | 1038 } |
| 1056 EXPECT_EQ(tile_count, all_tiles.size()); | 1039 EXPECT_EQ(tile_count, all_tiles.size()); |
| 1057 EXPECT_EQ(16u, tile_count); | 1040 EXPECT_EQ(16u, tile_count); |
| 1058 | 1041 |
| 1059 std::vector<Tile*> tiles(all_tiles.begin(), all_tiles.end()); | 1042 std::vector<Tile*> tiles(all_tiles.begin(), all_tiles.end()); |
| 1060 host_impl_.tile_manager()->InitializeTilesWithResourcesForTesting(tiles); | 1043 host_impl_.tile_manager()->InitializeTilesWithResourcesForTesting(tiles); |
| 1061 | 1044 |
| 1062 EvictionTilePriorityQueue queue; | |
| 1063 for (int i = 1; i < 10; ++i) { | 1045 for (int i = 1; i < 10; ++i) { |
| 1064 scoped_ptr<FakePictureLayerImpl> pending_layer = | 1046 scoped_ptr<FakePictureLayerImpl> pending_layer = |
| 1065 FakePictureLayerImpl::Create(host_impl_.pending_tree(), id_ + i); | 1047 FakePictureLayerImpl::Create(host_impl_.pending_tree(), id_ + i); |
| 1066 pending_layer->SetDrawsContent(true); | 1048 pending_layer->SetDrawsContent(true); |
| 1067 pending_layer->set_has_valid_tile_priorities(true); | 1049 pending_layer->set_has_valid_tile_priorities(true); |
| 1068 pending_layer_->AddChild(pending_layer.Pass()); | 1050 pending_layer_->AddChild(pending_layer.Pass()); |
| 1069 } | 1051 } |
| 1070 | 1052 |
| 1071 host_impl_.BuildEvictionQueue(&queue, SAME_PRIORITY_FOR_BOTH_TREES); | 1053 scoped_ptr<EvictionTilePriorityQueue> queue( |
| 1072 EXPECT_FALSE(queue.IsEmpty()); | 1054 host_impl_.BuildEvictionQueue(SAME_PRIORITY_FOR_BOTH_TREES)); |
| 1055 EXPECT_FALSE(queue->IsEmpty()); |
| 1073 | 1056 |
| 1074 tile_count = 0; | 1057 tile_count = 0; |
| 1075 all_tiles.clear(); | 1058 all_tiles.clear(); |
| 1076 while (!queue.IsEmpty()) { | 1059 while (!queue->IsEmpty()) { |
| 1077 EXPECT_TRUE(queue.Top()); | 1060 EXPECT_TRUE(queue->Top()); |
| 1078 all_tiles.insert(queue.Top()); | 1061 all_tiles.insert(queue->Top()); |
| 1079 ++tile_count; | 1062 ++tile_count; |
| 1080 queue.Pop(); | 1063 queue->Pop(); |
| 1081 } | 1064 } |
| 1082 EXPECT_EQ(tile_count, all_tiles.size()); | 1065 EXPECT_EQ(tile_count, all_tiles.size()); |
| 1083 EXPECT_EQ(16u, tile_count); | 1066 EXPECT_EQ(16u, tile_count); |
| 1084 } | 1067 } |
| 1085 | 1068 |
| 1086 TEST_F(TileManagerTilePriorityQueueTest, | 1069 TEST_F(TileManagerTilePriorityQueueTest, |
| 1087 RasterTilePriorityQueueStaticViewport) { | 1070 RasterTilePriorityQueueStaticViewport) { |
| 1088 FakePictureLayerTilingClient client; | 1071 FakePictureLayerTilingClient client; |
| 1089 | 1072 |
| 1090 gfx::Rect viewport(50, 50, 100, 100); | 1073 gfx::Rect viewport(50, 50, 100, 100); |
| (...skipping 23 matching lines...) Expand all Loading... |
| 1114 EXPECT_EQ(841u, all_tiles.size()); | 1097 EXPECT_EQ(841u, all_tiles.size()); |
| 1115 | 1098 |
| 1116 // The explanation of each iteration is as follows: | 1099 // The explanation of each iteration is as follows: |
| 1117 // 1. First iteration tests that we can get all of the tiles correctly. | 1100 // 1. First iteration tests that we can get all of the tiles correctly. |
| 1118 // 2. Second iteration ensures that we can get all of the tiles again (first | 1101 // 2. Second iteration ensures that we can get all of the tiles again (first |
| 1119 // iteration didn't change any tiles), as well set all tiles to be ready to | 1102 // iteration didn't change any tiles), as well set all tiles to be ready to |
| 1120 // draw. | 1103 // draw. |
| 1121 // 3. Third iteration ensures that no tiles are returned, since they were all | 1104 // 3. Third iteration ensures that no tiles are returned, since they were all |
| 1122 // marked as ready to draw. | 1105 // marked as ready to draw. |
| 1123 for (int i = 0; i < 3; ++i) { | 1106 for (int i = 0; i < 3; ++i) { |
| 1124 scoped_ptr<TilingSetRasterQueue> queue( | 1107 scoped_ptr<TilingSetRasterQueueAll> queue( |
| 1125 new TilingSetRasterQueueAll(tiling_set.get(), false)); | 1108 new TilingSetRasterQueueAll(tiling_set.get(), false)); |
| 1126 | 1109 |
| 1127 // There are 3 bins in TilePriority. | 1110 // There are 3 bins in TilePriority. |
| 1128 bool have_tiles[3] = {}; | 1111 bool have_tiles[3] = {}; |
| 1129 | 1112 |
| 1130 // On the third iteration, we should get no tiles since everything was | 1113 // On the third iteration, we should get no tiles since everything was |
| 1131 // marked as ready to draw. | 1114 // marked as ready to draw. |
| 1132 if (i == 2) { | 1115 if (i == 2) { |
| 1133 EXPECT_TRUE(queue->IsEmpty()); | 1116 EXPECT_TRUE(queue->IsEmpty()); |
| 1134 continue; | 1117 continue; |
| (...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1224 true); | 1207 true); |
| 1225 | 1208 |
| 1226 gfx::Rect soon_rect = moved_viewport; | 1209 gfx::Rect soon_rect = moved_viewport; |
| 1227 soon_rect.Inset(-312.f, -312.f, -312.f, -312.f); | 1210 soon_rect.Inset(-312.f, -312.f, -312.f, -312.f); |
| 1228 | 1211 |
| 1229 // There are 3 bins in TilePriority. | 1212 // There are 3 bins in TilePriority. |
| 1230 bool have_tiles[3] = {}; | 1213 bool have_tiles[3] = {}; |
| 1231 Tile* last_tile = NULL; | 1214 Tile* last_tile = NULL; |
| 1232 int eventually_bin_order_correct_count = 0; | 1215 int eventually_bin_order_correct_count = 0; |
| 1233 int eventually_bin_order_incorrect_count = 0; | 1216 int eventually_bin_order_incorrect_count = 0; |
| 1234 scoped_ptr<TilingSetRasterQueue> queue( | 1217 scoped_ptr<TilingSetRasterQueueAll> queue( |
| 1235 new TilingSetRasterQueueAll(tiling_set.get(), false)); | 1218 new TilingSetRasterQueueAll(tiling_set.get(), false)); |
| 1236 for (; !queue->IsEmpty(); queue->Pop()) { | 1219 for (; !queue->IsEmpty(); queue->Pop()) { |
| 1237 if (!last_tile) | 1220 if (!last_tile) |
| 1238 last_tile = queue->Top(); | 1221 last_tile = queue->Top(); |
| 1239 | 1222 |
| 1240 Tile* new_tile = queue->Top(); | 1223 Tile* new_tile = queue->Top(); |
| 1241 | 1224 |
| 1242 TilePriority last_priority = last_tile->priority(ACTIVE_TREE); | 1225 TilePriority last_priority = last_tile->priority(ACTIVE_TREE); |
| 1243 TilePriority new_priority = new_tile->priority(ACTIVE_TREE); | 1226 TilePriority new_priority = new_tile->priority(ACTIVE_TREE); |
| 1244 | 1227 |
| (...skipping 20 matching lines...) Expand all Loading... |
| 1265 EXPECT_GT(eventually_bin_order_correct_count, | 1248 EXPECT_GT(eventually_bin_order_correct_count, |
| 1266 eventually_bin_order_incorrect_count); | 1249 eventually_bin_order_incorrect_count); |
| 1267 | 1250 |
| 1268 EXPECT_TRUE(have_tiles[TilePriority::NOW]); | 1251 EXPECT_TRUE(have_tiles[TilePriority::NOW]); |
| 1269 EXPECT_TRUE(have_tiles[TilePriority::SOON]); | 1252 EXPECT_TRUE(have_tiles[TilePriority::SOON]); |
| 1270 EXPECT_TRUE(have_tiles[TilePriority::EVENTUALLY]); | 1253 EXPECT_TRUE(have_tiles[TilePriority::EVENTUALLY]); |
| 1271 } | 1254 } |
| 1272 | 1255 |
| 1273 } // namespace | 1256 } // namespace |
| 1274 } // namespace cc | 1257 } // namespace cc |
| OLD | NEW |