| 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/test/begin_frame_args_test.h" | 10 #include "cc/test/begin_frame_args_test.h" |
| 10 #include "cc/test/fake_impl_proxy.h" | 11 #include "cc/test/fake_impl_proxy.h" |
| 11 #include "cc/test/fake_layer_tree_host_impl.h" | 12 #include "cc/test/fake_layer_tree_host_impl.h" |
| 12 #include "cc/test/fake_output_surface.h" | 13 #include "cc/test/fake_output_surface.h" |
| 13 #include "cc/test/fake_output_surface_client.h" | 14 #include "cc/test/fake_output_surface_client.h" |
| 14 #include "cc/test/fake_picture_layer_impl.h" | 15 #include "cc/test/fake_picture_layer_impl.h" |
| 15 #include "cc/test/fake_picture_layer_tiling_client.h" | 16 #include "cc/test/fake_picture_layer_tiling_client.h" |
| 16 #include "cc/test/fake_picture_pile_impl.h" | 17 #include "cc/test/fake_picture_pile_impl.h" |
| 17 #include "cc/test/fake_tile_manager.h" | 18 #include "cc/test/fake_tile_manager.h" |
| 18 #include "cc/test/impl_side_painting_settings.h" | 19 #include "cc/test/impl_side_painting_settings.h" |
| (...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 144 FakePictureLayerImpl* pending_layer_; | 145 FakePictureLayerImpl* pending_layer_; |
| 145 FakePictureLayerImpl* active_layer_; | 146 FakePictureLayerImpl* active_layer_; |
| 146 }; | 147 }; |
| 147 | 148 |
| 148 TEST_F(TileManagerTilePriorityQueueTest, RasterTilePriorityQueue) { | 149 TEST_F(TileManagerTilePriorityQueueTest, RasterTilePriorityQueue) { |
| 149 const gfx::Size layer_bounds(1000, 1000); | 150 const gfx::Size layer_bounds(1000, 1000); |
| 150 host_impl_.SetViewportSize(layer_bounds); | 151 host_impl_.SetViewportSize(layer_bounds); |
| 151 SetupDefaultTrees(layer_bounds); | 152 SetupDefaultTrees(layer_bounds); |
| 152 | 153 |
| 153 RasterTilePriorityQueue queue; | 154 RasterTilePriorityQueue queue; |
| 154 host_impl_.BuildRasterQueue(&queue, SAME_PRIORITY_FOR_BOTH_TREES); | 155 host_impl_.BuildRasterQueue(&queue, SAME_PRIORITY_FOR_BOTH_TREES, |
| 156 RasterTilePriorityQueue::Type::ALL); |
| 155 EXPECT_FALSE(queue.IsEmpty()); | 157 EXPECT_FALSE(queue.IsEmpty()); |
| 156 | 158 |
| 157 size_t tile_count = 0; | 159 size_t tile_count = 0; |
| 158 std::set<Tile*> all_tiles; | 160 std::set<Tile*> all_tiles; |
| 159 while (!queue.IsEmpty()) { | 161 while (!queue.IsEmpty()) { |
| 160 EXPECT_TRUE(queue.Top()); | 162 EXPECT_TRUE(queue.Top()); |
| 161 all_tiles.insert(queue.Top()); | 163 all_tiles.insert(queue.Top()); |
| 162 ++tile_count; | 164 ++tile_count; |
| 163 queue.Pop(); | 165 queue.Pop(); |
| 164 } | 166 } |
| 165 | 167 |
| 166 EXPECT_EQ(tile_count, all_tiles.size()); | 168 EXPECT_EQ(tile_count, all_tiles.size()); |
| 167 EXPECT_EQ(16u, tile_count); | 169 EXPECT_EQ(16u, tile_count); |
| 168 | 170 |
| 169 // Sanity check, all tiles should be visible. | 171 // Sanity check, all tiles should be visible. |
| 170 std::set<Tile*> smoothness_tiles; | 172 std::set<Tile*> smoothness_tiles; |
| 171 queue.Reset(); | 173 queue.Reset(); |
| 172 host_impl_.BuildRasterQueue(&queue, SMOOTHNESS_TAKES_PRIORITY); | 174 host_impl_.BuildRasterQueue(&queue, SMOOTHNESS_TAKES_PRIORITY, |
| 175 RasterTilePriorityQueue::Type::ALL); |
| 173 bool had_low_res = false; | 176 bool had_low_res = false; |
| 174 while (!queue.IsEmpty()) { | 177 while (!queue.IsEmpty()) { |
| 175 Tile* tile = queue.Top(); | 178 Tile* tile = queue.Top(); |
| 176 EXPECT_TRUE(tile); | 179 EXPECT_TRUE(tile); |
| 177 EXPECT_EQ(TilePriority::NOW, tile->priority(ACTIVE_TREE).priority_bin); | 180 EXPECT_EQ(TilePriority::NOW, tile->priority(ACTIVE_TREE).priority_bin); |
| 178 EXPECT_EQ(TilePriority::NOW, tile->priority(PENDING_TREE).priority_bin); | 181 EXPECT_EQ(TilePriority::NOW, tile->priority(PENDING_TREE).priority_bin); |
| 179 if (tile->priority(ACTIVE_TREE).resolution == LOW_RESOLUTION) | 182 if (tile->priority(ACTIVE_TREE).resolution == LOW_RESOLUTION) |
| 180 had_low_res = true; | 183 had_low_res = true; |
| 181 else | 184 else |
| 182 smoothness_tiles.insert(tile); | 185 smoothness_tiles.insert(tile); |
| 183 queue.Pop(); | 186 queue.Pop(); |
| 184 } | 187 } |
| 185 EXPECT_EQ(all_tiles, smoothness_tiles); | 188 EXPECT_EQ(all_tiles, smoothness_tiles); |
| 186 EXPECT_TRUE(had_low_res); | 189 EXPECT_TRUE(had_low_res); |
| 187 | 190 |
| 191 // Check that everything is required for activation. |
| 192 queue.Reset(); |
| 193 host_impl_.BuildRasterQueue( |
| 194 &queue, SMOOTHNESS_TAKES_PRIORITY, |
| 195 RasterTilePriorityQueue::Type::REQUIRED_FOR_ACTIVATION); |
| 196 std::set<Tile*> required_for_activation_tiles; |
| 197 while (!queue.IsEmpty()) { |
| 198 Tile* tile = queue.Top(); |
| 199 EXPECT_TRUE(tile->required_for_activation()); |
| 200 required_for_activation_tiles.insert(tile); |
| 201 queue.Pop(); |
| 202 } |
| 203 EXPECT_EQ(all_tiles, required_for_activation_tiles); |
| 204 |
| 205 // Check that everything is required for draw. |
| 206 queue.Reset(); |
| 207 host_impl_.BuildRasterQueue(&queue, SMOOTHNESS_TAKES_PRIORITY, |
| 208 RasterTilePriorityQueue::Type::REQUIRED_FOR_DRAW); |
| 209 std::set<Tile*> required_for_draw_tiles; |
| 210 while (!queue.IsEmpty()) { |
| 211 Tile* tile = queue.Top(); |
| 212 EXPECT_TRUE(tile->required_for_draw()); |
| 213 required_for_draw_tiles.insert(tile); |
| 214 queue.Pop(); |
| 215 } |
| 216 EXPECT_EQ(all_tiles, required_for_draw_tiles); |
| 217 |
| 188 Region invalidation(gfx::Rect(0, 0, 500, 500)); | 218 Region invalidation(gfx::Rect(0, 0, 500, 500)); |
| 189 | 219 |
| 190 // Invalidate the pending tree. | 220 // Invalidate the pending tree. |
| 191 pending_layer_->set_invalidation(invalidation); | 221 pending_layer_->set_invalidation(invalidation); |
| 192 pending_layer_->HighResTiling()->Invalidate(invalidation); | 222 pending_layer_->HighResTiling()->Invalidate(invalidation); |
| 193 pending_layer_->LowResTiling()->Invalidate(invalidation); | 223 pending_layer_->LowResTiling()->Invalidate(invalidation); |
| 194 | 224 |
| 195 active_layer_->ResetAllTilesPriorities(); | 225 active_layer_->ResetAllTilesPriorities(); |
| 196 pending_layer_->ResetAllTilesPriorities(); | 226 pending_layer_->ResetAllTilesPriorities(); |
| 197 | 227 |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 232 active_layer_->LowResTiling()->AllTilesForTesting(); | 262 active_layer_->LowResTiling()->AllTilesForTesting(); |
| 233 for (size_t i = 0; i < active_low_res_tiles.size(); ++i) | 263 for (size_t i = 0; i < active_low_res_tiles.size(); ++i) |
| 234 all_tiles.insert(active_low_res_tiles[i]); | 264 all_tiles.insert(active_low_res_tiles[i]); |
| 235 | 265 |
| 236 Tile* last_tile = NULL; | 266 Tile* last_tile = NULL; |
| 237 smoothness_tiles.clear(); | 267 smoothness_tiles.clear(); |
| 238 tile_count = 0; | 268 tile_count = 0; |
| 239 size_t correct_order_tiles = 0u; | 269 size_t correct_order_tiles = 0u; |
| 240 // Here we expect to get increasing ACTIVE_TREE priority_bin. | 270 // Here we expect to get increasing ACTIVE_TREE priority_bin. |
| 241 queue.Reset(); | 271 queue.Reset(); |
| 242 host_impl_.BuildRasterQueue(&queue, SMOOTHNESS_TAKES_PRIORITY); | 272 host_impl_.BuildRasterQueue(&queue, SMOOTHNESS_TAKES_PRIORITY, |
| 273 RasterTilePriorityQueue::Type::ALL); |
| 274 std::set<Tile*> expected_required_for_draw_tiles; |
| 275 std::set<Tile*> expected_required_for_activation_tiles; |
| 243 while (!queue.IsEmpty()) { | 276 while (!queue.IsEmpty()) { |
| 244 Tile* tile = queue.Top(); | 277 Tile* tile = queue.Top(); |
| 245 EXPECT_TRUE(tile); | 278 EXPECT_TRUE(tile); |
| 246 | 279 |
| 247 if (!last_tile) | 280 if (!last_tile) |
| 248 last_tile = tile; | 281 last_tile = tile; |
| 249 | 282 |
| 250 EXPECT_LE(last_tile->priority(ACTIVE_TREE).priority_bin, | 283 EXPECT_LE(last_tile->priority(ACTIVE_TREE).priority_bin, |
| 251 tile->priority(ACTIVE_TREE).priority_bin); | 284 tile->priority(ACTIVE_TREE).priority_bin); |
| 252 bool skip_updating_last_tile = false; | 285 bool skip_updating_last_tile = false; |
| (...skipping 15 matching lines...) Expand all Loading... |
| 268 last_tile->priority(ACTIVE_TREE).resolution != | 301 last_tile->priority(ACTIVE_TREE).resolution != |
| 269 tile->priority(ACTIVE_TREE).resolution) { | 302 tile->priority(ACTIVE_TREE).resolution) { |
| 270 // Low resolution should come first. | 303 // Low resolution should come first. |
| 271 EXPECT_EQ(LOW_RESOLUTION, last_tile->priority(ACTIVE_TREE).resolution); | 304 EXPECT_EQ(LOW_RESOLUTION, last_tile->priority(ACTIVE_TREE).resolution); |
| 272 } | 305 } |
| 273 | 306 |
| 274 if (!skip_updating_last_tile) | 307 if (!skip_updating_last_tile) |
| 275 last_tile = tile; | 308 last_tile = tile; |
| 276 ++tile_count; | 309 ++tile_count; |
| 277 smoothness_tiles.insert(tile); | 310 smoothness_tiles.insert(tile); |
| 311 if (tile->required_for_draw()) |
| 312 expected_required_for_draw_tiles.insert(tile); |
| 313 if (tile->required_for_activation()) |
| 314 expected_required_for_activation_tiles.insert(tile); |
| 278 queue.Pop(); | 315 queue.Pop(); |
| 279 } | 316 } |
| 280 | 317 |
| 281 EXPECT_EQ(tile_count, smoothness_tiles.size()); | 318 EXPECT_EQ(tile_count, smoothness_tiles.size()); |
| 282 EXPECT_EQ(all_tiles, smoothness_tiles); | 319 EXPECT_EQ(all_tiles, smoothness_tiles); |
| 283 // Since we don't guarantee increasing distance due to spiral iterator, we | 320 // Since we don't guarantee increasing distance due to spiral iterator, we |
| 284 // should check that we're _mostly_ right. | 321 // should check that we're _mostly_ right. |
| 285 EXPECT_GT(correct_order_tiles, 3 * tile_count / 4); | 322 EXPECT_GT(correct_order_tiles, 3 * tile_count / 4); |
| 286 | 323 |
| 324 // Check that we have consistent required_for_activation tiles. |
| 325 queue.Reset(); |
| 326 host_impl_.BuildRasterQueue( |
| 327 &queue, SMOOTHNESS_TAKES_PRIORITY, |
| 328 RasterTilePriorityQueue::Type::REQUIRED_FOR_ACTIVATION); |
| 329 required_for_activation_tiles.clear(); |
| 330 while (!queue.IsEmpty()) { |
| 331 Tile* tile = queue.Top(); |
| 332 EXPECT_TRUE(tile->required_for_activation()); |
| 333 required_for_activation_tiles.insert(tile); |
| 334 queue.Pop(); |
| 335 } |
| 336 EXPECT_EQ(expected_required_for_activation_tiles, |
| 337 required_for_activation_tiles); |
| 338 EXPECT_NE(all_tiles, required_for_activation_tiles); |
| 339 |
| 340 // Check that we have consistent required_for_draw tiles. |
| 341 queue.Reset(); |
| 342 host_impl_.BuildRasterQueue(&queue, SMOOTHNESS_TAKES_PRIORITY, |
| 343 RasterTilePriorityQueue::Type::REQUIRED_FOR_DRAW); |
| 344 required_for_draw_tiles.clear(); |
| 345 while (!queue.IsEmpty()) { |
| 346 Tile* tile = queue.Top(); |
| 347 EXPECT_TRUE(tile->required_for_draw()); |
| 348 required_for_draw_tiles.insert(tile); |
| 349 queue.Pop(); |
| 350 } |
| 351 EXPECT_EQ(expected_required_for_draw_tiles, required_for_draw_tiles); |
| 352 EXPECT_NE(all_tiles, required_for_draw_tiles); |
| 353 |
| 287 std::set<Tile*> new_content_tiles; | 354 std::set<Tile*> new_content_tiles; |
| 288 last_tile = NULL; | 355 last_tile = NULL; |
| 289 size_t increasing_distance_tiles = 0u; | 356 size_t increasing_distance_tiles = 0u; |
| 290 // Here we expect to get increasing PENDING_TREE priority_bin. | 357 // Here we expect to get increasing PENDING_TREE priority_bin. |
| 291 queue.Reset(); | 358 queue.Reset(); |
| 292 host_impl_.BuildRasterQueue(&queue, NEW_CONTENT_TAKES_PRIORITY); | 359 host_impl_.BuildRasterQueue(&queue, NEW_CONTENT_TAKES_PRIORITY, |
| 360 RasterTilePriorityQueue::Type::ALL); |
| 293 tile_count = 0; | 361 tile_count = 0; |
| 294 while (!queue.IsEmpty()) { | 362 while (!queue.IsEmpty()) { |
| 295 Tile* tile = queue.Top(); | 363 Tile* tile = queue.Top(); |
| 296 EXPECT_TRUE(tile); | 364 EXPECT_TRUE(tile); |
| 297 | 365 |
| 298 if (!last_tile) | 366 if (!last_tile) |
| 299 last_tile = tile; | 367 last_tile = tile; |
| 300 | 368 |
| 301 EXPECT_LE(last_tile->priority(PENDING_TREE).priority_bin, | 369 EXPECT_LE(last_tile->priority(PENDING_TREE).priority_bin, |
| 302 tile->priority(PENDING_TREE).priority_bin); | 370 tile->priority(PENDING_TREE).priority_bin); |
| (...skipping 15 matching lines...) Expand all Loading... |
| 318 new_content_tiles.insert(tile); | 386 new_content_tiles.insert(tile); |
| 319 ++tile_count; | 387 ++tile_count; |
| 320 queue.Pop(); | 388 queue.Pop(); |
| 321 } | 389 } |
| 322 | 390 |
| 323 EXPECT_EQ(tile_count, new_content_tiles.size()); | 391 EXPECT_EQ(tile_count, new_content_tiles.size()); |
| 324 EXPECT_EQ(high_res_tiles, new_content_tiles); | 392 EXPECT_EQ(high_res_tiles, new_content_tiles); |
| 325 // Since we don't guarantee increasing distance due to spiral iterator, we | 393 // Since we don't guarantee increasing distance due to spiral iterator, we |
| 326 // should check that we're _mostly_ right. | 394 // should check that we're _mostly_ right. |
| 327 EXPECT_GE(increasing_distance_tiles, 3 * tile_count / 4); | 395 EXPECT_GE(increasing_distance_tiles, 3 * tile_count / 4); |
| 396 |
| 397 // Check that we have consistent required_for_activation tiles. |
| 398 queue.Reset(); |
| 399 host_impl_.BuildRasterQueue( |
| 400 &queue, NEW_CONTENT_TAKES_PRIORITY, |
| 401 RasterTilePriorityQueue::Type::REQUIRED_FOR_ACTIVATION); |
| 402 required_for_activation_tiles.clear(); |
| 403 while (!queue.IsEmpty()) { |
| 404 Tile* tile = queue.Top(); |
| 405 EXPECT_TRUE(tile->required_for_activation()); |
| 406 required_for_activation_tiles.insert(tile); |
| 407 queue.Pop(); |
| 408 } |
| 409 EXPECT_EQ(expected_required_for_activation_tiles, |
| 410 required_for_activation_tiles); |
| 411 EXPECT_NE(new_content_tiles, required_for_activation_tiles); |
| 412 |
| 413 // Check that we have consistent required_for_draw tiles. |
| 414 queue.Reset(); |
| 415 host_impl_.BuildRasterQueue(&queue, NEW_CONTENT_TAKES_PRIORITY, |
| 416 RasterTilePriorityQueue::Type::REQUIRED_FOR_DRAW); |
| 417 required_for_draw_tiles.clear(); |
| 418 while (!queue.IsEmpty()) { |
| 419 Tile* tile = queue.Top(); |
| 420 EXPECT_TRUE(tile->required_for_draw()); |
| 421 required_for_draw_tiles.insert(tile); |
| 422 queue.Pop(); |
| 423 } |
| 424 EXPECT_EQ(expected_required_for_draw_tiles, required_for_draw_tiles); |
| 425 EXPECT_NE(new_content_tiles, required_for_draw_tiles); |
| 426 } |
| 427 |
| 428 TEST_F(TileManagerTilePriorityQueueTest, RasterTilePriorityQueueInvalidation) { |
| 429 const gfx::Size layer_bounds(1000, 1000); |
| 430 host_impl_.SetViewportSize(gfx::Size(500, 500)); |
| 431 SetupDefaultTrees(layer_bounds); |
| 432 |
| 433 // Use a tile's content rect as an invalidation. We should inset it a bit to |
| 434 // ensure that border math doesn't invalidate neighbouring tiles. |
| 435 gfx::Rect invalidation = |
| 436 pending_layer_->HighResTiling()->TileAt(1, 0)->content_rect(); |
| 437 invalidation.Inset(2, 2); |
| 438 |
| 439 pending_layer_->set_invalidation(invalidation); |
| 440 pending_layer_->HighResTiling()->Invalidate(invalidation); |
| 441 pending_layer_->LowResTiling()->Invalidate(invalidation); |
| 442 |
| 443 // Sanity checks: Tile at 0, 0 should be the same on both trees, tile at 1, 0 |
| 444 // should be different. |
| 445 EXPECT_TRUE(pending_layer_->HighResTiling()->TileAt(0, 0)); |
| 446 EXPECT_TRUE(active_layer_->HighResTiling()->TileAt(0, 0)); |
| 447 EXPECT_EQ(pending_layer_->HighResTiling()->TileAt(0, 0), |
| 448 active_layer_->HighResTiling()->TileAt(0, 0)); |
| 449 EXPECT_TRUE(pending_layer_->HighResTiling()->TileAt(1, 0)); |
| 450 EXPECT_TRUE(active_layer_->HighResTiling()->TileAt(1, 0)); |
| 451 EXPECT_NE(pending_layer_->HighResTiling()->TileAt(1, 0), |
| 452 active_layer_->HighResTiling()->TileAt(1, 0)); |
| 453 |
| 454 std::set<Tile*> expected_now_tiles; |
| 455 std::set<Tile*> expected_required_for_draw_tiles; |
| 456 std::set<Tile*> expected_required_for_activation_tiles; |
| 457 for (int i = 0; i <= 1; ++i) { |
| 458 for (int j = 0; j <= 1; ++j) { |
| 459 expected_now_tiles.insert(pending_layer_->HighResTiling()->TileAt(i, j)); |
| 460 expected_now_tiles.insert(active_layer_->HighResTiling()->TileAt(i, j)); |
| 461 |
| 462 expected_required_for_activation_tiles.insert( |
| 463 pending_layer_->HighResTiling()->TileAt(i, j)); |
| 464 expected_required_for_draw_tiles.insert( |
| 465 active_layer_->HighResTiling()->TileAt(i, j)); |
| 466 } |
| 467 } |
| 468 // Expect 3 shared tiles and 1 unshared tile in total. |
| 469 EXPECT_EQ(5u, expected_now_tiles.size()); |
| 470 // Expect 4 tiles for each draw and activation, but not all the same. |
| 471 EXPECT_EQ(4u, expected_required_for_activation_tiles.size()); |
| 472 EXPECT_EQ(4u, expected_required_for_draw_tiles.size()); |
| 473 EXPECT_NE(expected_required_for_draw_tiles, |
| 474 expected_required_for_activation_tiles); |
| 475 |
| 476 std::set<Tile*> expected_all_tiles; |
| 477 for (int i = 0; i <= 3; ++i) { |
| 478 for (int j = 0; j <= 3; ++j) { |
| 479 expected_all_tiles.insert(pending_layer_->HighResTiling()->TileAt(i, j)); |
| 480 expected_all_tiles.insert(active_layer_->HighResTiling()->TileAt(i, j)); |
| 481 } |
| 482 } |
| 483 // Expect 15 shared tiles and 1 unshared tile. |
| 484 EXPECT_EQ(17u, expected_all_tiles.size()); |
| 485 |
| 486 // The actual test will now build different queues and verify that the queues |
| 487 // return the same information as computed manually above. |
| 488 RasterTilePriorityQueue queue; |
| 489 host_impl_.BuildRasterQueue(&queue, SAME_PRIORITY_FOR_BOTH_TREES, |
| 490 RasterTilePriorityQueue::Type::ALL); |
| 491 std::set<Tile*> actual_now_tiles; |
| 492 std::set<Tile*> actual_all_tiles; |
| 493 while (!queue.IsEmpty()) { |
| 494 Tile* tile = queue.Top(); |
| 495 queue.Pop(); |
| 496 if (tile->combined_priority().priority_bin == TilePriority::NOW) |
| 497 actual_now_tiles.insert(tile); |
| 498 actual_all_tiles.insert(tile); |
| 499 } |
| 500 EXPECT_EQ(expected_now_tiles, actual_now_tiles); |
| 501 EXPECT_EQ(expected_all_tiles, actual_all_tiles); |
| 502 |
| 503 queue.Reset(); |
| 504 host_impl_.BuildRasterQueue(&queue, SAME_PRIORITY_FOR_BOTH_TREES, |
| 505 RasterTilePriorityQueue::Type::REQUIRED_FOR_DRAW); |
| 506 std::set<Tile*> actual_required_for_draw_tiles; |
| 507 while (!queue.IsEmpty()) { |
| 508 Tile* tile = queue.Top(); |
| 509 queue.Pop(); |
| 510 actual_required_for_draw_tiles.insert(tile); |
| 511 } |
| 512 EXPECT_EQ(expected_required_for_draw_tiles, actual_required_for_draw_tiles); |
| 513 |
| 514 queue.Reset(); |
| 515 host_impl_.BuildRasterQueue( |
| 516 &queue, SAME_PRIORITY_FOR_BOTH_TREES, |
| 517 RasterTilePriorityQueue::Type::REQUIRED_FOR_ACTIVATION); |
| 518 std::set<Tile*> actual_required_for_activation_tiles; |
| 519 while (!queue.IsEmpty()) { |
| 520 Tile* tile = queue.Top(); |
| 521 queue.Pop(); |
| 522 actual_required_for_activation_tiles.insert(tile); |
| 523 } |
| 524 EXPECT_EQ(expected_required_for_activation_tiles, |
| 525 actual_required_for_activation_tiles); |
| 328 } | 526 } |
| 329 | 527 |
| 330 TEST_F(TileManagerTilePriorityQueueTest, ActivationComesBeforeEventually) { | 528 TEST_F(TileManagerTilePriorityQueueTest, ActivationComesBeforeEventually) { |
| 331 base::TimeTicks time_ticks; | 529 base::TimeTicks time_ticks; |
| 332 time_ticks += base::TimeDelta::FromMilliseconds(1); | 530 time_ticks += base::TimeDelta::FromMilliseconds(1); |
| 333 host_impl_.SetCurrentBeginFrameArgs( | 531 host_impl_.SetCurrentBeginFrameArgs( |
| 334 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, time_ticks)); | 532 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, time_ticks)); |
| 335 | 533 |
| 336 gfx::Size layer_bounds(1000, 1000); | 534 gfx::Size layer_bounds(1000, 1000); |
| 337 SetupDefaultTrees(layer_bounds); | 535 SetupDefaultTrees(layer_bounds); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 349 | 547 |
| 350 // Set a small viewport, so we have soon and eventually tiles. | 548 // Set a small viewport, so we have soon and eventually tiles. |
| 351 host_impl_.SetViewportSize(gfx::Size(200, 200)); | 549 host_impl_.SetViewportSize(gfx::Size(200, 200)); |
| 352 time_ticks += base::TimeDelta::FromMilliseconds(1); | 550 time_ticks += base::TimeDelta::FromMilliseconds(1); |
| 353 host_impl_.SetCurrentBeginFrameArgs( | 551 host_impl_.SetCurrentBeginFrameArgs( |
| 354 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, time_ticks)); | 552 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, time_ticks)); |
| 355 host_impl_.pending_tree()->UpdateDrawProperties(); | 553 host_impl_.pending_tree()->UpdateDrawProperties(); |
| 356 | 554 |
| 357 RasterTilePriorityQueue queue; | 555 RasterTilePriorityQueue queue; |
| 358 host_impl_.SetRequiresHighResToDraw(); | 556 host_impl_.SetRequiresHighResToDraw(); |
| 359 host_impl_.BuildRasterQueue(&queue, SMOOTHNESS_TAKES_PRIORITY); | 557 host_impl_.BuildRasterQueue(&queue, SMOOTHNESS_TAKES_PRIORITY, |
| 558 RasterTilePriorityQueue::Type::ALL); |
| 360 EXPECT_FALSE(queue.IsEmpty()); | 559 EXPECT_FALSE(queue.IsEmpty()); |
| 361 | 560 |
| 362 // Get all the tiles that are NOW or SOON and make sure they are ready to | 561 // Get all the tiles that are NOW or SOON and make sure they are ready to |
| 363 // draw. | 562 // draw. |
| 364 std::vector<Tile*> all_tiles; | 563 std::vector<Tile*> all_tiles; |
| 365 while (!queue.IsEmpty()) { | 564 while (!queue.IsEmpty()) { |
| 366 Tile* tile = queue.Top(); | 565 Tile* tile = queue.Top(); |
| 367 if (tile->combined_priority().priority_bin >= TilePriority::EVENTUALLY) | 566 if (tile->combined_priority().priority_bin >= TilePriority::EVENTUALLY) |
| 368 break; | 567 break; |
| 369 | 568 |
| (...skipping 14 matching lines...) Expand all Loading... |
| 384 host_impl_.SetViewportSize(layer_bounds); | 583 host_impl_.SetViewportSize(layer_bounds); |
| 385 SetupDefaultTrees(layer_bounds); | 584 SetupDefaultTrees(layer_bounds); |
| 386 | 585 |
| 387 EvictionTilePriorityQueue empty_queue; | 586 EvictionTilePriorityQueue empty_queue; |
| 388 host_impl_.BuildEvictionQueue(&empty_queue, SAME_PRIORITY_FOR_BOTH_TREES); | 587 host_impl_.BuildEvictionQueue(&empty_queue, SAME_PRIORITY_FOR_BOTH_TREES); |
| 389 EXPECT_TRUE(empty_queue.IsEmpty()); | 588 EXPECT_TRUE(empty_queue.IsEmpty()); |
| 390 std::set<Tile*> all_tiles; | 589 std::set<Tile*> all_tiles; |
| 391 size_t tile_count = 0; | 590 size_t tile_count = 0; |
| 392 | 591 |
| 393 RasterTilePriorityQueue raster_queue; | 592 RasterTilePriorityQueue raster_queue; |
| 394 host_impl_.BuildRasterQueue(&raster_queue, SAME_PRIORITY_FOR_BOTH_TREES); | 593 host_impl_.BuildRasterQueue(&raster_queue, SAME_PRIORITY_FOR_BOTH_TREES, |
| 594 RasterTilePriorityQueue::Type::ALL); |
| 395 while (!raster_queue.IsEmpty()) { | 595 while (!raster_queue.IsEmpty()) { |
| 396 ++tile_count; | 596 ++tile_count; |
| 397 EXPECT_TRUE(raster_queue.Top()); | 597 EXPECT_TRUE(raster_queue.Top()); |
| 398 all_tiles.insert(raster_queue.Top()); | 598 all_tiles.insert(raster_queue.Top()); |
| 399 raster_queue.Pop(); | 599 raster_queue.Pop(); |
| 400 } | 600 } |
| 401 | 601 |
| 402 EXPECT_EQ(tile_count, all_tiles.size()); | 602 EXPECT_EQ(tile_count, all_tiles.size()); |
| 403 EXPECT_EQ(16u, tile_count); | 603 EXPECT_EQ(16u, tile_count); |
| 404 | 604 |
| (...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 581 pending_child_layer->SetDrawsContent(true); | 781 pending_child_layer->SetDrawsContent(true); |
| 582 | 782 |
| 583 time_ticks += base::TimeDelta::FromMilliseconds(1); | 783 time_ticks += base::TimeDelta::FromMilliseconds(1); |
| 584 host_impl_.SetCurrentBeginFrameArgs( | 784 host_impl_.SetCurrentBeginFrameArgs( |
| 585 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, time_ticks)); | 785 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, time_ticks)); |
| 586 host_impl_.pending_tree()->UpdateDrawProperties(); | 786 host_impl_.pending_tree()->UpdateDrawProperties(); |
| 587 | 787 |
| 588 std::set<Tile*> all_tiles; | 788 std::set<Tile*> all_tiles; |
| 589 size_t tile_count = 0; | 789 size_t tile_count = 0; |
| 590 RasterTilePriorityQueue raster_queue; | 790 RasterTilePriorityQueue raster_queue; |
| 591 host_impl_.BuildRasterQueue(&raster_queue, SAME_PRIORITY_FOR_BOTH_TREES); | 791 host_impl_.BuildRasterQueue(&raster_queue, SAME_PRIORITY_FOR_BOTH_TREES, |
| 792 RasterTilePriorityQueue::Type::ALL); |
| 592 while (!raster_queue.IsEmpty()) { | 793 while (!raster_queue.IsEmpty()) { |
| 593 ++tile_count; | 794 ++tile_count; |
| 594 EXPECT_TRUE(raster_queue.Top()); | 795 EXPECT_TRUE(raster_queue.Top()); |
| 595 all_tiles.insert(raster_queue.Top()); | 796 all_tiles.insert(raster_queue.Top()); |
| 596 raster_queue.Pop(); | 797 raster_queue.Pop(); |
| 597 } | 798 } |
| 598 EXPECT_EQ(tile_count, all_tiles.size()); | 799 EXPECT_EQ(tile_count, all_tiles.size()); |
| 599 EXPECT_EQ(32u, tile_count); | 800 EXPECT_EQ(32u, tile_count); |
| 600 | 801 |
| 601 pending_layer_->ResetAllTilesPriorities(); | 802 pending_layer_->ResetAllTilesPriorities(); |
| (...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 786 EXPECT_EQ(tile_count, new_content_tiles.size()); | 987 EXPECT_EQ(tile_count, new_content_tiles.size()); |
| 787 EXPECT_EQ(all_tiles, new_content_tiles); | 988 EXPECT_EQ(all_tiles, new_content_tiles); |
| 788 } | 989 } |
| 789 | 990 |
| 790 TEST_F(TileManagerTilePriorityQueueTest, RasterTilePriorityQueueEmptyLayers) { | 991 TEST_F(TileManagerTilePriorityQueueTest, RasterTilePriorityQueueEmptyLayers) { |
| 791 const gfx::Size layer_bounds(1000, 1000); | 992 const gfx::Size layer_bounds(1000, 1000); |
| 792 host_impl_.SetViewportSize(layer_bounds); | 993 host_impl_.SetViewportSize(layer_bounds); |
| 793 SetupDefaultTrees(layer_bounds); | 994 SetupDefaultTrees(layer_bounds); |
| 794 | 995 |
| 795 RasterTilePriorityQueue queue; | 996 RasterTilePriorityQueue queue; |
| 796 host_impl_.BuildRasterQueue(&queue, SAME_PRIORITY_FOR_BOTH_TREES); | 997 host_impl_.BuildRasterQueue(&queue, SAME_PRIORITY_FOR_BOTH_TREES, |
| 998 RasterTilePriorityQueue::Type::ALL); |
| 797 EXPECT_FALSE(queue.IsEmpty()); | 999 EXPECT_FALSE(queue.IsEmpty()); |
| 798 | 1000 |
| 799 size_t tile_count = 0; | 1001 size_t tile_count = 0; |
| 800 std::set<Tile*> all_tiles; | 1002 std::set<Tile*> all_tiles; |
| 801 while (!queue.IsEmpty()) { | 1003 while (!queue.IsEmpty()) { |
| 802 EXPECT_TRUE(queue.Top()); | 1004 EXPECT_TRUE(queue.Top()); |
| 803 all_tiles.insert(queue.Top()); | 1005 all_tiles.insert(queue.Top()); |
| 804 ++tile_count; | 1006 ++tile_count; |
| 805 queue.Pop(); | 1007 queue.Pop(); |
| 806 } | 1008 } |
| 807 | 1009 |
| 808 EXPECT_EQ(tile_count, all_tiles.size()); | 1010 EXPECT_EQ(tile_count, all_tiles.size()); |
| 809 EXPECT_EQ(16u, tile_count); | 1011 EXPECT_EQ(16u, tile_count); |
| 810 | 1012 |
| 811 queue.Reset(); | 1013 queue.Reset(); |
| 812 for (int i = 1; i < 10; ++i) { | 1014 for (int i = 1; i < 10; ++i) { |
| 813 scoped_ptr<FakePictureLayerImpl> pending_layer = | 1015 scoped_ptr<FakePictureLayerImpl> pending_layer = |
| 814 FakePictureLayerImpl::Create(host_impl_.pending_tree(), id_ + i); | 1016 FakePictureLayerImpl::Create(host_impl_.pending_tree(), id_ + i); |
| 815 pending_layer->SetDrawsContent(true); | 1017 pending_layer->SetDrawsContent(true); |
| 816 pending_layer->set_has_valid_tile_priorities(true); | 1018 pending_layer->set_has_valid_tile_priorities(true); |
| 817 pending_layer_->AddChild(pending_layer.Pass()); | 1019 pending_layer_->AddChild(pending_layer.Pass()); |
| 818 } | 1020 } |
| 819 | 1021 |
| 820 host_impl_.BuildRasterQueue(&queue, SAME_PRIORITY_FOR_BOTH_TREES); | 1022 host_impl_.BuildRasterQueue(&queue, SAME_PRIORITY_FOR_BOTH_TREES, |
| 1023 RasterTilePriorityQueue::Type::ALL); |
| 821 EXPECT_FALSE(queue.IsEmpty()); | 1024 EXPECT_FALSE(queue.IsEmpty()); |
| 822 | 1025 |
| 823 tile_count = 0; | 1026 tile_count = 0; |
| 824 all_tiles.clear(); | 1027 all_tiles.clear(); |
| 825 while (!queue.IsEmpty()) { | 1028 while (!queue.IsEmpty()) { |
| 826 EXPECT_TRUE(queue.Top()); | 1029 EXPECT_TRUE(queue.Top()); |
| 827 all_tiles.insert(queue.Top()); | 1030 all_tiles.insert(queue.Top()); |
| 828 ++tile_count; | 1031 ++tile_count; |
| 829 queue.Pop(); | 1032 queue.Pop(); |
| 830 } | 1033 } |
| 831 EXPECT_EQ(tile_count, all_tiles.size()); | 1034 EXPECT_EQ(tile_count, all_tiles.size()); |
| 832 EXPECT_EQ(16u, tile_count); | 1035 EXPECT_EQ(16u, tile_count); |
| 833 } | 1036 } |
| 834 | 1037 |
| 835 TEST_F(TileManagerTilePriorityQueueTest, EvictionTilePriorityQueueEmptyLayers) { | 1038 TEST_F(TileManagerTilePriorityQueueTest, EvictionTilePriorityQueueEmptyLayers) { |
| 836 const gfx::Size layer_bounds(1000, 1000); | 1039 const gfx::Size layer_bounds(1000, 1000); |
| 837 host_impl_.SetViewportSize(layer_bounds); | 1040 host_impl_.SetViewportSize(layer_bounds); |
| 838 SetupDefaultTrees(layer_bounds); | 1041 SetupDefaultTrees(layer_bounds); |
| 839 | 1042 |
| 840 RasterTilePriorityQueue raster_queue; | 1043 RasterTilePriorityQueue raster_queue; |
| 841 host_impl_.BuildRasterQueue(&raster_queue, SAME_PRIORITY_FOR_BOTH_TREES); | 1044 host_impl_.BuildRasterQueue(&raster_queue, SAME_PRIORITY_FOR_BOTH_TREES, |
| 1045 RasterTilePriorityQueue::Type::ALL); |
| 842 EXPECT_FALSE(raster_queue.IsEmpty()); | 1046 EXPECT_FALSE(raster_queue.IsEmpty()); |
| 843 | 1047 |
| 844 size_t tile_count = 0; | 1048 size_t tile_count = 0; |
| 845 std::set<Tile*> all_tiles; | 1049 std::set<Tile*> all_tiles; |
| 846 while (!raster_queue.IsEmpty()) { | 1050 while (!raster_queue.IsEmpty()) { |
| 847 EXPECT_TRUE(raster_queue.Top()); | 1051 EXPECT_TRUE(raster_queue.Top()); |
| 848 all_tiles.insert(raster_queue.Top()); | 1052 all_tiles.insert(raster_queue.Top()); |
| 849 ++tile_count; | 1053 ++tile_count; |
| 850 raster_queue.Pop(); | 1054 raster_queue.Pop(); |
| 851 } | 1055 } |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 898 &client, settings.max_tiles_for_interest_area, | 1102 &client, settings.max_tiles_for_interest_area, |
| 899 settings.skewport_target_time_in_seconds, | 1103 settings.skewport_target_time_in_seconds, |
| 900 settings.skewport_extrapolation_limit_in_content_pixels); | 1104 settings.skewport_extrapolation_limit_in_content_pixels); |
| 901 | 1105 |
| 902 scoped_refptr<FakePicturePileImpl> pile = | 1106 scoped_refptr<FakePicturePileImpl> pile = |
| 903 FakePicturePileImpl::CreateFilledPileWithDefaultTileSize(layer_bounds); | 1107 FakePicturePileImpl::CreateFilledPileWithDefaultTileSize(layer_bounds); |
| 904 PictureLayerTiling* tiling = tiling_set->AddTiling(1.0f, pile); | 1108 PictureLayerTiling* tiling = tiling_set->AddTiling(1.0f, pile); |
| 905 tiling->set_resolution(HIGH_RESOLUTION); | 1109 tiling->set_resolution(HIGH_RESOLUTION); |
| 906 | 1110 |
| 907 tiling_set->UpdateTilePriorities(viewport, 1.0f, 1.0, Occlusion(), true); | 1111 tiling_set->UpdateTilePriorities(viewport, 1.0f, 1.0, Occlusion(), true); |
| 908 | |
| 909 TilingSetRasterQueue empty_queue; | |
| 910 EXPECT_TRUE(empty_queue.IsEmpty()); | |
| 911 | |
| 912 std::vector<Tile*> all_tiles = tiling->AllTilesForTesting(); | 1112 std::vector<Tile*> all_tiles = tiling->AllTilesForTesting(); |
| 913 | |
| 914 // Sanity check. | 1113 // Sanity check. |
| 915 EXPECT_EQ(841u, all_tiles.size()); | 1114 EXPECT_EQ(841u, all_tiles.size()); |
| 916 | 1115 |
| 917 // The explanation of each iteration is as follows: | 1116 // The explanation of each iteration is as follows: |
| 918 // 1. First iteration tests that we can get all of the tiles correctly. | 1117 // 1. First iteration tests that we can get all of the tiles correctly. |
| 919 // 2. Second iteration ensures that we can get all of the tiles again (first | 1118 // 2. Second iteration ensures that we can get all of the tiles again (first |
| 920 // iteration didn't change any tiles), as well set all tiles to be ready to | 1119 // iteration didn't change any tiles), as well set all tiles to be ready to |
| 921 // draw. | 1120 // draw. |
| 922 // 3. Third iteration ensures that no tiles are returned, since they were all | 1121 // 3. Third iteration ensures that no tiles are returned, since they were all |
| 923 // marked as ready to draw. | 1122 // marked as ready to draw. |
| 924 for (int i = 0; i < 3; ++i) { | 1123 for (int i = 0; i < 3; ++i) { |
| 925 TilingSetRasterQueue queue(tiling_set.get(), false); | 1124 scoped_ptr<TilingSetRasterQueue> queue( |
| 1125 new TilingSetRasterQueueAll(tiling_set.get(), false)); |
| 926 | 1126 |
| 927 // There are 3 bins in TilePriority. | 1127 // There are 3 bins in TilePriority. |
| 928 bool have_tiles[3] = {}; | 1128 bool have_tiles[3] = {}; |
| 929 | 1129 |
| 930 // On the third iteration, we should get no tiles since everything was | 1130 // On the third iteration, we should get no tiles since everything was |
| 931 // marked as ready to draw. | 1131 // marked as ready to draw. |
| 932 if (i == 2) { | 1132 if (i == 2) { |
| 933 EXPECT_TRUE(queue.IsEmpty()); | 1133 EXPECT_TRUE(queue->IsEmpty()); |
| 934 continue; | 1134 continue; |
| 935 } | 1135 } |
| 936 | 1136 |
| 937 EXPECT_FALSE(queue.IsEmpty()); | 1137 EXPECT_FALSE(queue->IsEmpty()); |
| 938 std::set<Tile*> unique_tiles; | 1138 std::set<Tile*> unique_tiles; |
| 939 unique_tiles.insert(queue.Top()); | 1139 unique_tiles.insert(queue->Top()); |
| 940 Tile* last_tile = queue.Top(); | 1140 Tile* last_tile = queue->Top(); |
| 941 have_tiles[last_tile->priority(ACTIVE_TREE).priority_bin] = true; | 1141 have_tiles[last_tile->priority(ACTIVE_TREE).priority_bin] = true; |
| 942 | 1142 |
| 943 // On the second iteration, mark everything as ready to draw (solid color). | 1143 // On the second iteration, mark everything as ready to draw (solid color). |
| 944 if (i == 1) { | 1144 if (i == 1) { |
| 945 TileDrawInfo& draw_info = last_tile->draw_info(); | 1145 TileDrawInfo& draw_info = last_tile->draw_info(); |
| 946 draw_info.SetSolidColorForTesting(SK_ColorRED); | 1146 draw_info.SetSolidColorForTesting(SK_ColorRED); |
| 947 } | 1147 } |
| 948 queue.Pop(); | 1148 queue->Pop(); |
| 949 int eventually_bin_order_correct_count = 0; | 1149 int eventually_bin_order_correct_count = 0; |
| 950 int eventually_bin_order_incorrect_count = 0; | 1150 int eventually_bin_order_incorrect_count = 0; |
| 951 while (!queue.IsEmpty()) { | 1151 while (!queue->IsEmpty()) { |
| 952 Tile* new_tile = queue.Top(); | 1152 Tile* new_tile = queue->Top(); |
| 953 queue.Pop(); | 1153 queue->Pop(); |
| 954 unique_tiles.insert(new_tile); | 1154 unique_tiles.insert(new_tile); |
| 955 | 1155 |
| 956 TilePriority last_priority = last_tile->priority(ACTIVE_TREE); | 1156 TilePriority last_priority = last_tile->priority(ACTIVE_TREE); |
| 957 TilePriority new_priority = new_tile->priority(ACTIVE_TREE); | 1157 TilePriority new_priority = new_tile->priority(ACTIVE_TREE); |
| 958 EXPECT_LE(last_priority.priority_bin, new_priority.priority_bin); | 1158 EXPECT_LE(last_priority.priority_bin, new_priority.priority_bin); |
| 959 if (last_priority.priority_bin == new_priority.priority_bin) { | 1159 if (last_priority.priority_bin == new_priority.priority_bin) { |
| 960 if (last_priority.priority_bin == TilePriority::EVENTUALLY) { | 1160 if (last_priority.priority_bin == TilePriority::EVENTUALLY) { |
| 961 bool order_correct = last_priority.distance_to_visible <= | 1161 bool order_correct = last_priority.distance_to_visible <= |
| 962 new_priority.distance_to_visible; | 1162 new_priority.distance_to_visible; |
| 963 eventually_bin_order_correct_count += order_correct; | 1163 eventually_bin_order_correct_count += order_correct; |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1024 true); | 1224 true); |
| 1025 | 1225 |
| 1026 gfx::Rect soon_rect = moved_viewport; | 1226 gfx::Rect soon_rect = moved_viewport; |
| 1027 soon_rect.Inset(-312.f, -312.f, -312.f, -312.f); | 1227 soon_rect.Inset(-312.f, -312.f, -312.f, -312.f); |
| 1028 | 1228 |
| 1029 // There are 3 bins in TilePriority. | 1229 // There are 3 bins in TilePriority. |
| 1030 bool have_tiles[3] = {}; | 1230 bool have_tiles[3] = {}; |
| 1031 Tile* last_tile = NULL; | 1231 Tile* last_tile = NULL; |
| 1032 int eventually_bin_order_correct_count = 0; | 1232 int eventually_bin_order_correct_count = 0; |
| 1033 int eventually_bin_order_incorrect_count = 0; | 1233 int eventually_bin_order_incorrect_count = 0; |
| 1034 for (TilingSetRasterQueue queue(tiling_set.get(), false); !queue.IsEmpty(); | 1234 scoped_ptr<TilingSetRasterQueue> queue( |
| 1035 queue.Pop()) { | 1235 new TilingSetRasterQueueAll(tiling_set.get(), false)); |
| 1236 for (; !queue->IsEmpty(); queue->Pop()) { |
| 1036 if (!last_tile) | 1237 if (!last_tile) |
| 1037 last_tile = queue.Top(); | 1238 last_tile = queue->Top(); |
| 1038 | 1239 |
| 1039 Tile* new_tile = queue.Top(); | 1240 Tile* new_tile = queue->Top(); |
| 1040 | 1241 |
| 1041 TilePriority last_priority = last_tile->priority(ACTIVE_TREE); | 1242 TilePriority last_priority = last_tile->priority(ACTIVE_TREE); |
| 1042 TilePriority new_priority = new_tile->priority(ACTIVE_TREE); | 1243 TilePriority new_priority = new_tile->priority(ACTIVE_TREE); |
| 1043 | 1244 |
| 1044 have_tiles[new_priority.priority_bin] = true; | 1245 have_tiles[new_priority.priority_bin] = true; |
| 1045 | 1246 |
| 1046 EXPECT_LE(last_priority.priority_bin, new_priority.priority_bin); | 1247 EXPECT_LE(last_priority.priority_bin, new_priority.priority_bin); |
| 1047 if (last_priority.priority_bin == new_priority.priority_bin) { | 1248 if (last_priority.priority_bin == new_priority.priority_bin) { |
| 1048 if (last_priority.priority_bin == TilePriority::EVENTUALLY) { | 1249 if (last_priority.priority_bin == TilePriority::EVENTUALLY) { |
| 1049 bool order_correct = last_priority.distance_to_visible <= | 1250 bool order_correct = last_priority.distance_to_visible <= |
| (...skipping 14 matching lines...) Expand all Loading... |
| 1064 EXPECT_GT(eventually_bin_order_correct_count, | 1265 EXPECT_GT(eventually_bin_order_correct_count, |
| 1065 eventually_bin_order_incorrect_count); | 1266 eventually_bin_order_incorrect_count); |
| 1066 | 1267 |
| 1067 EXPECT_TRUE(have_tiles[TilePriority::NOW]); | 1268 EXPECT_TRUE(have_tiles[TilePriority::NOW]); |
| 1068 EXPECT_TRUE(have_tiles[TilePriority::SOON]); | 1269 EXPECT_TRUE(have_tiles[TilePriority::SOON]); |
| 1069 EXPECT_TRUE(have_tiles[TilePriority::EVENTUALLY]); | 1270 EXPECT_TRUE(have_tiles[TilePriority::EVENTUALLY]); |
| 1070 } | 1271 } |
| 1071 | 1272 |
| 1072 } // namespace | 1273 } // namespace |
| 1073 } // namespace cc | 1274 } // namespace cc |
| OLD | NEW |