OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 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/picture_layer_tiling.h" | 5 #include "cc/resources/picture_layer_tiling.h" |
6 | 6 |
7 #include <limits> | 7 #include <limits> |
8 #include <set> | 8 #include <set> |
9 | 9 |
10 #include "cc/base/math_util.h" | 10 #include "cc/base/math_util.h" |
(...skipping 18 matching lines...) Expand all Loading... |
29 gfx::Transform inverse; | 29 gfx::Transform inverse; |
30 if (!transform.GetInverse(&inverse)) | 30 if (!transform.GetInverse(&inverse)) |
31 return gfx::Rect(); | 31 return gfx::Rect(); |
32 | 32 |
33 gfx::RectF viewport_in_layer_space = MathUtil::ProjectClippedRect( | 33 gfx::RectF viewport_in_layer_space = MathUtil::ProjectClippedRect( |
34 inverse, gfx::RectF(gfx::Point(0, 0), device_viewport)); | 34 inverse, gfx::RectF(gfx::Point(0, 0), device_viewport)); |
35 return ToEnclosingRect(viewport_in_layer_space); | 35 return ToEnclosingRect(viewport_in_layer_space); |
36 } | 36 } |
37 | 37 |
38 static void UpdateAllTilePriorities(PictureLayerTilingSet* set, | 38 static void UpdateAllTilePriorities(PictureLayerTilingSet* set, |
39 WhichTree tree, | |
40 const gfx::Rect& visible_layer_rect, | 39 const gfx::Rect& visible_layer_rect, |
41 float layer_contents_scale, | 40 float layer_contents_scale, |
42 double current_frame_time_in_seconds) { | 41 double current_frame_time_in_seconds) { |
43 for (size_t i = 0; i < set->num_tilings(); ++i) { | 42 for (size_t i = 0; i < set->num_tilings(); ++i) { |
44 set->tiling_at(i)->ComputeTilePriorityRects(tree, | 43 set->tiling_at(i) |
45 visible_layer_rect, | 44 ->ComputeTilePriorityRects(visible_layer_rect, layer_contents_scale, |
46 layer_contents_scale, | 45 current_frame_time_in_seconds, Occlusion()); |
47 current_frame_time_in_seconds, | |
48 Occlusion()); | |
49 } | 46 } |
50 } | 47 } |
51 | 48 |
52 class TestablePictureLayerTiling : public PictureLayerTiling { | 49 class TestablePictureLayerTiling : public PictureLayerTiling { |
53 public: | 50 public: |
54 using PictureLayerTiling::SetLiveTilesRect; | 51 using PictureLayerTiling::SetLiveTilesRect; |
55 using PictureLayerTiling::TileAt; | 52 using PictureLayerTiling::TileAt; |
56 | 53 |
57 static scoped_ptr<TestablePictureLayerTiling> Create( | 54 static scoped_ptr<TestablePictureLayerTiling> Create( |
58 float contents_scale, | 55 float contents_scale, |
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
204 SetLiveRectAndVerifyTiles(gfx::Rect(original_layer_size)); | 201 SetLiveRectAndVerifyTiles(gfx::Rect(original_layer_size)); |
205 | 202 |
206 // Tiling only has one tile, since its total size is less than one. | 203 // Tiling only has one tile, since its total size is less than one. |
207 EXPECT_TRUE(tiling_->TileAt(0, 0)); | 204 EXPECT_TRUE(tiling_->TileAt(0, 0)); |
208 | 205 |
209 // Stop creating tiles so that any invalidations are left as holes. | 206 // Stop creating tiles so that any invalidations are left as holes. |
210 client_.set_allow_create_tile(false); | 207 client_.set_allow_create_tile(false); |
211 | 208 |
212 Region invalidation = | 209 Region invalidation = |
213 SubtractRegions(gfx::Rect(tile_size), gfx::Rect(original_layer_size)); | 210 SubtractRegions(gfx::Rect(tile_size), gfx::Rect(original_layer_size)); |
214 tiling_->UpdateTilesToCurrentRasterSource(invalidation, gfx::Size(200, 200)); | 211 tiling_->UpdateTilesToCurrentRasterSource(client_.raster_source(), |
| 212 invalidation, gfx::Size(200, 200)); |
215 EXPECT_FALSE(tiling_->TileAt(0, 0)); | 213 EXPECT_FALSE(tiling_->TileAt(0, 0)); |
216 } | 214 } |
217 | 215 |
218 TEST_F(PictureLayerTilingIteratorTest, CreateMissingTilesStaysInsideLiveRect) { | 216 TEST_F(PictureLayerTilingIteratorTest, CreateMissingTilesStaysInsideLiveRect) { |
219 // The tiling has three rows and columns. | 217 // The tiling has three rows and columns. |
220 Initialize(gfx::Size(100, 100), 1, gfx::Size(250, 250)); | 218 Initialize(gfx::Size(100, 100), 1, gfx::Size(250, 250)); |
221 EXPECT_EQ(3, tiling_->TilingDataForTesting().num_tiles_x()); | 219 EXPECT_EQ(3, tiling_->TilingDataForTesting().num_tiles_x()); |
222 EXPECT_EQ(3, tiling_->TilingDataForTesting().num_tiles_y()); | 220 EXPECT_EQ(3, tiling_->TilingDataForTesting().num_tiles_y()); |
223 | 221 |
224 // The live tiles rect is at the very edge of the right-most and | 222 // The live tiles rect is at the very edge of the right-most and |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
259 EXPECT_TRUE(tiling_->TileAt(2, 3)); | 257 EXPECT_TRUE(tiling_->TileAt(2, 3)); |
260 EXPECT_TRUE(tiling_->TileAt(1, 3)); | 258 EXPECT_TRUE(tiling_->TileAt(1, 3)); |
261 EXPECT_TRUE(tiling_->TileAt(0, 3)); | 259 EXPECT_TRUE(tiling_->TileAt(0, 3)); |
262 | 260 |
263 int right = tiling_->TilingDataForTesting().TileBounds(2, 2).x(); | 261 int right = tiling_->TilingDataForTesting().TileBounds(2, 2).x(); |
264 int bottom = tiling_->TilingDataForTesting().TileBounds(2, 3).y(); | 262 int bottom = tiling_->TilingDataForTesting().TileBounds(2, 3).y(); |
265 | 263 |
266 // Shrink the tiling so that the last tile row/column is entirely in the | 264 // Shrink the tiling so that the last tile row/column is entirely in the |
267 // border pixels of the interior tiles. That row/column is removed. | 265 // border pixels of the interior tiles. That row/column is removed. |
268 Region invalidation; | 266 Region invalidation; |
269 tiling_->UpdateTilesToCurrentRasterSource(invalidation, | 267 tiling_->UpdateTilesToCurrentRasterSource( |
270 gfx::Size(right + 1, bottom + 1)); | 268 client_.raster_source(), invalidation, gfx::Size(right + 1, bottom + 1)); |
271 EXPECT_EQ(2, tiling_->TilingDataForTesting().num_tiles_x()); | 269 EXPECT_EQ(2, tiling_->TilingDataForTesting().num_tiles_x()); |
272 EXPECT_EQ(3, tiling_->TilingDataForTesting().num_tiles_y()); | 270 EXPECT_EQ(3, tiling_->TilingDataForTesting().num_tiles_y()); |
273 | 271 |
274 // The live tiles rect was clamped to the pile size. | 272 // The live tiles rect was clamped to the pile size. |
275 EXPECT_EQ(gfx::Rect(right + 1, bottom + 1), tiling_->live_tiles_rect()); | 273 EXPECT_EQ(gfx::Rect(right + 1, bottom + 1), tiling_->live_tiles_rect()); |
276 | 274 |
277 // Since the row/column is gone, the tiles should be gone too. | 275 // Since the row/column is gone, the tiles should be gone too. |
278 EXPECT_FALSE(tiling_->TileAt(2, 0)); | 276 EXPECT_FALSE(tiling_->TileAt(2, 0)); |
279 EXPECT_FALSE(tiling_->TileAt(2, 1)); | 277 EXPECT_FALSE(tiling_->TileAt(2, 1)); |
280 EXPECT_FALSE(tiling_->TileAt(2, 2)); | 278 EXPECT_FALSE(tiling_->TileAt(2, 2)); |
281 EXPECT_FALSE(tiling_->TileAt(2, 3)); | 279 EXPECT_FALSE(tiling_->TileAt(2, 3)); |
282 EXPECT_FALSE(tiling_->TileAt(1, 3)); | 280 EXPECT_FALSE(tiling_->TileAt(1, 3)); |
283 EXPECT_FALSE(tiling_->TileAt(0, 3)); | 281 EXPECT_FALSE(tiling_->TileAt(0, 3)); |
284 | 282 |
285 // Growing outside the current right/bottom tiles border pixels should create | 283 // Growing outside the current right/bottom tiles border pixels should create |
286 // the tiles again, even though the live rect has not changed size. | 284 // the tiles again, even though the live rect has not changed size. |
287 tiling_->UpdateTilesToCurrentRasterSource(invalidation, | 285 tiling_->UpdateTilesToCurrentRasterSource( |
288 gfx::Size(right + 2, bottom + 2)); | 286 client_.raster_source(), invalidation, gfx::Size(right + 2, bottom + 2)); |
289 EXPECT_EQ(3, tiling_->TilingDataForTesting().num_tiles_x()); | 287 EXPECT_EQ(3, tiling_->TilingDataForTesting().num_tiles_x()); |
290 EXPECT_EQ(4, tiling_->TilingDataForTesting().num_tiles_y()); | 288 EXPECT_EQ(4, tiling_->TilingDataForTesting().num_tiles_y()); |
291 | 289 |
292 // Not changed. | 290 // Not changed. |
293 EXPECT_EQ(gfx::Rect(right + 1, bottom + 1), tiling_->live_tiles_rect()); | 291 EXPECT_EQ(gfx::Rect(right + 1, bottom + 1), tiling_->live_tiles_rect()); |
294 | 292 |
295 // The last row/column tiles are inside the live tiles rect. | 293 // The last row/column tiles are inside the live tiles rect. |
296 EXPECT_TRUE(gfx::Rect(right + 1, bottom + 1).Intersects( | 294 EXPECT_TRUE(gfx::Rect(right + 1, bottom + 1).Intersects( |
297 tiling_->TilingDataForTesting().TileBounds(2, 0))); | 295 tiling_->TilingDataForTesting().TileBounds(2, 0))); |
298 EXPECT_TRUE(gfx::Rect(right + 1, bottom + 1).Intersects( | 296 EXPECT_TRUE(gfx::Rect(right + 1, bottom + 1).Intersects( |
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
414 SetLiveRectAndVerifyTiles(gfx::Rect(original_layer_size)); | 412 SetLiveRectAndVerifyTiles(gfx::Rect(original_layer_size)); |
415 | 413 |
416 // Tiling only has one tile, since its total size is less than one. | 414 // Tiling only has one tile, since its total size is less than one. |
417 EXPECT_TRUE(tiling_->TileAt(0, 0)); | 415 EXPECT_TRUE(tiling_->TileAt(0, 0)); |
418 | 416 |
419 // Stop creating tiles so that any invalidations are left as holes. | 417 // Stop creating tiles so that any invalidations are left as holes. |
420 client_.set_allow_create_tile(false); | 418 client_.set_allow_create_tile(false); |
421 | 419 |
422 Region invalidation = | 420 Region invalidation = |
423 SubtractRegions(gfx::Rect(tile_size), gfx::Rect(original_layer_size)); | 421 SubtractRegions(gfx::Rect(tile_size), gfx::Rect(original_layer_size)); |
424 tiling_->UpdateTilesToCurrentRasterSource(invalidation, gfx::Size(200, 200)); | 422 tiling_->UpdateTilesToCurrentRasterSource(client_.raster_source(), |
| 423 invalidation, gfx::Size(200, 200)); |
425 EXPECT_FALSE(tiling_->TileAt(0, 0)); | 424 EXPECT_FALSE(tiling_->TileAt(0, 0)); |
426 | 425 |
427 // The original tile was the same size after resize, but it would include new | 426 // The original tile was the same size after resize, but it would include new |
428 // border pixels. | 427 // border pixels. |
429 EXPECT_EQ(gfx::Rect(original_layer_size), | 428 EXPECT_EQ(gfx::Rect(original_layer_size), |
430 tiling_->TilingDataForTesting().TileBounds(0, 0)); | 429 tiling_->TilingDataForTesting().TileBounds(0, 0)); |
431 } | 430 } |
432 | 431 |
433 TEST_F(PictureLayerTilingIteratorTest, LiveTilesExactlyCoverLiveTileRect) { | 432 TEST_F(PictureLayerTilingIteratorTest, LiveTilesExactlyCoverLiveTileRect) { |
434 Initialize(gfx::Size(100, 100), 1, gfx::Size(1099, 801)); | 433 Initialize(gfx::Size(100, 100), 1, gfx::Size(1099, 801)); |
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
536 client.set_skewport_extrapolation_limit_in_content_pixels(75); | 535 client.set_skewport_extrapolation_limit_in_content_pixels(75); |
537 client.set_tree(ACTIVE_TREE); | 536 client.set_tree(ACTIVE_TREE); |
538 scoped_ptr<TestablePictureLayerTiling> tiling; | 537 scoped_ptr<TestablePictureLayerTiling> tiling; |
539 | 538 |
540 gfx::Rect viewport(0, 0, 100, 100); | 539 gfx::Rect viewport(0, 0, 100, 100); |
541 gfx::Size layer_bounds(200, 200); | 540 gfx::Size layer_bounds(200, 200); |
542 | 541 |
543 client.SetTileSize(gfx::Size(100, 100)); | 542 client.SetTileSize(gfx::Size(100, 100)); |
544 tiling = TestablePictureLayerTiling::Create(1.0f, layer_bounds, &client); | 543 tiling = TestablePictureLayerTiling::Create(1.0f, layer_bounds, &client); |
545 | 544 |
546 tiling->ComputeTilePriorityRects( | 545 tiling->ComputeTilePriorityRects(viewport, 1.f, 1.0, Occlusion()); |
547 ACTIVE_TREE, viewport, 1.f, 1.0, Occlusion()); | |
548 | 546 |
549 // Move viewport down 50 pixels in 0.5 seconds. | 547 // Move viewport down 50 pixels in 0.5 seconds. |
550 gfx::Rect down_skewport = | 548 gfx::Rect down_skewport = |
551 tiling->ComputeSkewport(1.5, gfx::Rect(0, 50, 100, 100)); | 549 tiling->ComputeSkewport(1.5, gfx::Rect(0, 50, 100, 100)); |
552 | 550 |
553 EXPECT_EQ(0, down_skewport.x()); | 551 EXPECT_EQ(0, down_skewport.x()); |
554 EXPECT_EQ(50, down_skewport.y()); | 552 EXPECT_EQ(50, down_skewport.y()); |
555 EXPECT_EQ(100, down_skewport.width()); | 553 EXPECT_EQ(100, down_skewport.width()); |
556 EXPECT_EQ(175, down_skewport.height()); | 554 EXPECT_EQ(175, down_skewport.height()); |
557 EXPECT_TRUE(down_skewport.Contains(gfx::Rect(0, 50, 100, 100))); | 555 EXPECT_TRUE(down_skewport.Contains(gfx::Rect(0, 50, 100, 100))); |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
603 FakePictureLayerTilingClient client; | 601 FakePictureLayerTilingClient client; |
604 scoped_ptr<TestablePictureLayerTiling> tiling; | 602 scoped_ptr<TestablePictureLayerTiling> tiling; |
605 | 603 |
606 gfx::Rect viewport(0, 0, 100, 100); | 604 gfx::Rect viewport(0, 0, 100, 100); |
607 gfx::Size layer_bounds(200, 200); | 605 gfx::Size layer_bounds(200, 200); |
608 | 606 |
609 client.SetTileSize(gfx::Size(100, 100)); | 607 client.SetTileSize(gfx::Size(100, 100)); |
610 client.set_tree(ACTIVE_TREE); | 608 client.set_tree(ACTIVE_TREE); |
611 tiling = TestablePictureLayerTiling::Create(1.0f, layer_bounds, &client); | 609 tiling = TestablePictureLayerTiling::Create(1.0f, layer_bounds, &client); |
612 | 610 |
613 tiling->ComputeTilePriorityRects( | 611 tiling->ComputeTilePriorityRects(viewport, 1.f, 1.0, Occlusion()); |
614 ACTIVE_TREE, viewport, 1.f, 1.0, Occlusion()); | |
615 | 612 |
616 // Move viewport down 50 pixels in 0.5 seconds. | 613 // Move viewport down 50 pixels in 0.5 seconds. |
617 gfx::Rect down_skewport = | 614 gfx::Rect down_skewport = |
618 tiling->ComputeSkewport(1.5, gfx::Rect(0, 50, 100, 100)); | 615 tiling->ComputeSkewport(1.5, gfx::Rect(0, 50, 100, 100)); |
619 | 616 |
620 EXPECT_EQ(0, down_skewport.x()); | 617 EXPECT_EQ(0, down_skewport.x()); |
621 EXPECT_EQ(50, down_skewport.y()); | 618 EXPECT_EQ(50, down_skewport.y()); |
622 EXPECT_EQ(100, down_skewport.width()); | 619 EXPECT_EQ(100, down_skewport.width()); |
623 EXPECT_EQ(200, down_skewport.height()); | 620 EXPECT_EQ(200, down_skewport.height()); |
624 | 621 |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
671 | 668 |
672 // Tiling at 0.25 scale: this should create 47x47 tiles of size 10x10. | 669 // Tiling at 0.25 scale: this should create 47x47 tiles of size 10x10. |
673 // The reason is that each tile has a one pixel border, so tile at (1, 2) | 670 // The reason is that each tile has a one pixel border, so tile at (1, 2) |
674 // for instance begins at (8, 16) pixels. So tile at (46, 46) will begin at | 671 // for instance begins at (8, 16) pixels. So tile at (46, 46) will begin at |
675 // (368, 368) and extend to the end of 1500 * 0.25 = 375 edge of the | 672 // (368, 368) and extend to the end of 1500 * 0.25 = 375 edge of the |
676 // tiling. | 673 // tiling. |
677 tiling = TestablePictureLayerTiling::Create(0.25f, layer_bounds, &client); | 674 tiling = TestablePictureLayerTiling::Create(0.25f, layer_bounds, &client); |
678 gfx::Rect viewport_in_content_space = | 675 gfx::Rect viewport_in_content_space = |
679 gfx::ToEnclosedRect(gfx::ScaleRect(viewport, 0.25f)); | 676 gfx::ToEnclosedRect(gfx::ScaleRect(viewport, 0.25f)); |
680 | 677 |
681 tiling->ComputeTilePriorityRects( | 678 tiling->ComputeTilePriorityRects(viewport, 1.f, 1.0, Occlusion()); |
682 ACTIVE_TREE, viewport, 1.f, 1.0, Occlusion()); | |
683 tiling->UpdateAllTilePrioritiesForTesting(); | 679 tiling->UpdateAllTilePrioritiesForTesting(); |
684 | 680 |
685 gfx::Rect soon_rect = viewport; | 681 gfx::Rect soon_rect = viewport; |
686 soon_rect.Inset(-312.f, -312.f, -312.f, -312.f); | 682 soon_rect.Inset(-312.f, -312.f, -312.f, -312.f); |
687 gfx::Rect soon_rect_in_content_space = | 683 gfx::Rect soon_rect_in_content_space = |
688 gfx::ToEnclosedRect(gfx::ScaleRect(soon_rect, 0.25f)); | 684 gfx::ToEnclosedRect(gfx::ScaleRect(soon_rect, 0.25f)); |
689 | 685 |
690 // Sanity checks. | 686 // Sanity checks. |
691 for (int i = 0; i < 47; ++i) { | 687 for (int i = 0; i < 47; ++i) { |
692 for (int j = 0; j < 47; ++j) { | 688 for (int j = 0; j < 47; ++j) { |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
757 soon_rect = viewport; | 753 soon_rect = viewport; |
758 soon_rect.Inset(-312.f, -312.f, -312.f, -312.f); | 754 soon_rect.Inset(-312.f, -312.f, -312.f, -312.f); |
759 soon_rect_in_content_space = | 755 soon_rect_in_content_space = |
760 gfx::ToEnclosedRect(gfx::ScaleRect(soon_rect, 0.25f)); | 756 gfx::ToEnclosedRect(gfx::ScaleRect(soon_rect, 0.25f)); |
761 | 757 |
762 EXPECT_EQ(0, skewport.x()); | 758 EXPECT_EQ(0, skewport.x()); |
763 EXPECT_EQ(10, skewport.y()); | 759 EXPECT_EQ(10, skewport.y()); |
764 EXPECT_EQ(25, skewport.width()); | 760 EXPECT_EQ(25, skewport.width()); |
765 EXPECT_EQ(35, skewport.height()); | 761 EXPECT_EQ(35, skewport.height()); |
766 | 762 |
767 tiling->ComputeTilePriorityRects( | 763 tiling->ComputeTilePriorityRects(viewport, 1.f, 2.0, Occlusion()); |
768 ACTIVE_TREE, viewport, 1.f, 2.0, Occlusion()); | |
769 tiling->UpdateAllTilePrioritiesForTesting(); | 764 tiling->UpdateAllTilePrioritiesForTesting(); |
770 | 765 |
771 have_now = false; | 766 have_now = false; |
772 have_eventually = false; | 767 have_eventually = false; |
773 have_soon = false; | 768 have_soon = false; |
774 | 769 |
775 // Viewport moved, so we expect to find some NOW tiles, some SOON tiles and | 770 // Viewport moved, so we expect to find some NOW tiles, some SOON tiles and |
776 // some EVENTUALLY tiles. | 771 // some EVENTUALLY tiles. |
777 for (int i = 0; i < 47; ++i) { | 772 for (int i = 0; i < 47; ++i) { |
778 for (int j = 0; j < 47; ++j) { | 773 for (int j = 0; j < 47; ++j) { |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
810 priority = tiling->TileAt(5, 1)->priority(ACTIVE_TREE); | 805 priority = tiling->TileAt(5, 1)->priority(ACTIVE_TREE); |
811 EXPECT_FLOAT_EQ(68.f, priority.distance_to_visible); | 806 EXPECT_FLOAT_EQ(68.f, priority.distance_to_visible); |
812 | 807 |
813 priority = tiling->TileAt(2, 5)->priority(ACTIVE_TREE); | 808 priority = tiling->TileAt(2, 5)->priority(ACTIVE_TREE); |
814 EXPECT_FLOAT_EQ(28.f, priority.distance_to_visible); | 809 EXPECT_FLOAT_EQ(28.f, priority.distance_to_visible); |
815 | 810 |
816 priority = tiling->TileAt(3, 4)->priority(ACTIVE_TREE); | 811 priority = tiling->TileAt(3, 4)->priority(ACTIVE_TREE); |
817 EXPECT_FLOAT_EQ(4.f, priority.distance_to_visible); | 812 EXPECT_FLOAT_EQ(4.f, priority.distance_to_visible); |
818 | 813 |
819 // Change the underlying layer scale. | 814 // Change the underlying layer scale. |
820 tiling->ComputeTilePriorityRects( | 815 tiling->ComputeTilePriorityRects(viewport, 2.0f, 3.0, Occlusion()); |
821 ACTIVE_TREE, viewport, 2.0f, 3.0, Occlusion()); | |
822 tiling->UpdateAllTilePrioritiesForTesting(); | 816 tiling->UpdateAllTilePrioritiesForTesting(); |
823 | 817 |
824 priority = tiling->TileAt(5, 1)->priority(ACTIVE_TREE); | 818 priority = tiling->TileAt(5, 1)->priority(ACTIVE_TREE); |
825 EXPECT_FLOAT_EQ(136.f, priority.distance_to_visible); | 819 EXPECT_FLOAT_EQ(136.f, priority.distance_to_visible); |
826 | 820 |
827 priority = tiling->TileAt(2, 5)->priority(ACTIVE_TREE); | 821 priority = tiling->TileAt(2, 5)->priority(ACTIVE_TREE); |
828 EXPECT_FLOAT_EQ(56.f, priority.distance_to_visible); | 822 EXPECT_FLOAT_EQ(56.f, priority.distance_to_visible); |
829 | 823 |
830 priority = tiling->TileAt(3, 4)->priority(ACTIVE_TREE); | 824 priority = tiling->TileAt(3, 4)->priority(ACTIVE_TREE); |
831 EXPECT_FLOAT_EQ(8.f, priority.distance_to_visible); | 825 EXPECT_FLOAT_EQ(8.f, priority.distance_to_visible); |
832 | 826 |
833 // Test additional scales. | 827 // Test additional scales. |
834 tiling = TestablePictureLayerTiling::Create(0.2f, layer_bounds, &client); | 828 tiling = TestablePictureLayerTiling::Create(0.2f, layer_bounds, &client); |
835 tiling->ComputeTilePriorityRects( | 829 tiling->ComputeTilePriorityRects(viewport, 1.0f, 4.0, Occlusion()); |
836 ACTIVE_TREE, viewport, 1.0f, 4.0, Occlusion()); | |
837 tiling->UpdateAllTilePrioritiesForTesting(); | 830 tiling->UpdateAllTilePrioritiesForTesting(); |
838 | 831 |
839 priority = tiling->TileAt(5, 1)->priority(ACTIVE_TREE); | 832 priority = tiling->TileAt(5, 1)->priority(ACTIVE_TREE); |
840 EXPECT_FLOAT_EQ(110.f, priority.distance_to_visible); | 833 EXPECT_FLOAT_EQ(110.f, priority.distance_to_visible); |
841 | 834 |
842 priority = tiling->TileAt(2, 5)->priority(ACTIVE_TREE); | 835 priority = tiling->TileAt(2, 5)->priority(ACTIVE_TREE); |
843 EXPECT_FLOAT_EQ(70.f, priority.distance_to_visible); | 836 EXPECT_FLOAT_EQ(70.f, priority.distance_to_visible); |
844 | 837 |
845 priority = tiling->TileAt(3, 4)->priority(ACTIVE_TREE); | 838 priority = tiling->TileAt(3, 4)->priority(ACTIVE_TREE); |
846 EXPECT_FLOAT_EQ(60.f, priority.distance_to_visible); | 839 EXPECT_FLOAT_EQ(60.f, priority.distance_to_visible); |
847 | 840 |
848 tiling->ComputeTilePriorityRects( | 841 tiling->ComputeTilePriorityRects(viewport, 0.5f, 5.0, Occlusion()); |
849 ACTIVE_TREE, viewport, 0.5f, 5.0, Occlusion()); | |
850 tiling->UpdateAllTilePrioritiesForTesting(); | 842 tiling->UpdateAllTilePrioritiesForTesting(); |
851 | 843 |
852 priority = tiling->TileAt(5, 1)->priority(ACTIVE_TREE); | 844 priority = tiling->TileAt(5, 1)->priority(ACTIVE_TREE); |
853 EXPECT_FLOAT_EQ(55.f, priority.distance_to_visible); | 845 EXPECT_FLOAT_EQ(55.f, priority.distance_to_visible); |
854 | 846 |
855 priority = tiling->TileAt(2, 5)->priority(ACTIVE_TREE); | 847 priority = tiling->TileAt(2, 5)->priority(ACTIVE_TREE); |
856 EXPECT_FLOAT_EQ(35.f, priority.distance_to_visible); | 848 EXPECT_FLOAT_EQ(35.f, priority.distance_to_visible); |
857 | 849 |
858 priority = tiling->TileAt(3, 4)->priority(ACTIVE_TREE); | 850 priority = tiling->TileAt(3, 4)->priority(ACTIVE_TREE); |
859 EXPECT_FLOAT_EQ(30.f, priority.distance_to_visible); | 851 EXPECT_FLOAT_EQ(30.f, priority.distance_to_visible); |
(...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1088 gfx::Rect viewport(50, 50, 100, 100); | 1080 gfx::Rect viewport(50, 50, 100, 100); |
1089 gfx::Size layer_bounds(800, 800); | 1081 gfx::Size layer_bounds(800, 800); |
1090 | 1082 |
1091 gfx::Rect soon_rect = viewport; | 1083 gfx::Rect soon_rect = viewport; |
1092 soon_rect.Inset(-312.f, -312.f, -312.f, -312.f); | 1084 soon_rect.Inset(-312.f, -312.f, -312.f, -312.f); |
1093 | 1085 |
1094 client.SetTileSize(gfx::Size(30, 30)); | 1086 client.SetTileSize(gfx::Size(30, 30)); |
1095 client.set_tree(ACTIVE_TREE); | 1087 client.set_tree(ACTIVE_TREE); |
1096 | 1088 |
1097 tiling = TestablePictureLayerTiling::Create(1.0f, layer_bounds, &client); | 1089 tiling = TestablePictureLayerTiling::Create(1.0f, layer_bounds, &client); |
1098 tiling->ComputeTilePriorityRects( | 1090 tiling->ComputeTilePriorityRects(viewport, 1.0f, 1.0, Occlusion()); |
1099 ACTIVE_TREE, viewport, 1.0f, 1.0, Occlusion()); | |
1100 tiling->UpdateAllTilePrioritiesForTesting(); | 1091 tiling->UpdateAllTilePrioritiesForTesting(); |
1101 | 1092 |
1102 PictureLayerTiling::TilingRasterTileIterator empty_iterator; | 1093 PictureLayerTiling::TilingRasterTileIterator empty_iterator; |
1103 EXPECT_FALSE(empty_iterator); | 1094 EXPECT_FALSE(empty_iterator); |
1104 | 1095 |
1105 std::vector<Tile*> all_tiles = tiling->AllTilesForTesting(); | 1096 std::vector<Tile*> all_tiles = tiling->AllTilesForTesting(); |
1106 | 1097 |
1107 // Sanity check. | 1098 // Sanity check. |
1108 EXPECT_EQ(841u, all_tiles.size()); | 1099 EXPECT_EQ(841u, all_tiles.size()); |
1109 | 1100 |
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1194 scoped_ptr<TestablePictureLayerTiling> tiling; | 1185 scoped_ptr<TestablePictureLayerTiling> tiling; |
1195 | 1186 |
1196 gfx::Rect viewport(50, 0, 100, 100); | 1187 gfx::Rect viewport(50, 0, 100, 100); |
1197 gfx::Rect moved_viewport(50, 0, 100, 500); | 1188 gfx::Rect moved_viewport(50, 0, 100, 500); |
1198 gfx::Size layer_bounds(1000, 1000); | 1189 gfx::Size layer_bounds(1000, 1000); |
1199 | 1190 |
1200 client.SetTileSize(gfx::Size(30, 30)); | 1191 client.SetTileSize(gfx::Size(30, 30)); |
1201 client.set_tree(ACTIVE_TREE); | 1192 client.set_tree(ACTIVE_TREE); |
1202 | 1193 |
1203 tiling = TestablePictureLayerTiling::Create(1.f, layer_bounds, &client); | 1194 tiling = TestablePictureLayerTiling::Create(1.f, layer_bounds, &client); |
1204 tiling->ComputeTilePriorityRects( | 1195 tiling->ComputeTilePriorityRects(viewport, 1.0f, 1.0, Occlusion()); |
1205 ACTIVE_TREE, viewport, 1.0f, 1.0, Occlusion()); | 1196 tiling->ComputeTilePriorityRects(moved_viewport, 1.0f, 2.0, Occlusion()); |
1206 tiling->ComputeTilePriorityRects( | |
1207 ACTIVE_TREE, moved_viewport, 1.0f, 2.0, Occlusion()); | |
1208 tiling->UpdateAllTilePrioritiesForTesting(); | 1197 tiling->UpdateAllTilePrioritiesForTesting(); |
1209 | 1198 |
1210 gfx::Rect soon_rect = moved_viewport; | 1199 gfx::Rect soon_rect = moved_viewport; |
1211 soon_rect.Inset(-312.f, -312.f, -312.f, -312.f); | 1200 soon_rect.Inset(-312.f, -312.f, -312.f, -312.f); |
1212 | 1201 |
1213 // There are 3 bins in TilePriority. | 1202 // There are 3 bins in TilePriority. |
1214 bool have_tiles[3] = {}; | 1203 bool have_tiles[3] = {}; |
1215 Tile* last_tile = NULL; | 1204 Tile* last_tile = NULL; |
1216 int eventually_bin_order_correct_count = 0; | 1205 int eventually_bin_order_correct_count = 0; |
1217 int eventually_bin_order_incorrect_count = 0; | 1206 int eventually_bin_order_incorrect_count = 0; |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1269 FakePictureLayerTilingClient client(resource_provider.get()); | 1258 FakePictureLayerTilingClient client(resource_provider.get()); |
1270 scoped_ptr<TestablePictureLayerTiling> tiling; | 1259 scoped_ptr<TestablePictureLayerTiling> tiling; |
1271 | 1260 |
1272 gfx::Rect viewport(50, 50, 100, 100); | 1261 gfx::Rect viewport(50, 50, 100, 100); |
1273 gfx::Size layer_bounds(2000, 2000); | 1262 gfx::Size layer_bounds(2000, 2000); |
1274 | 1263 |
1275 client.SetTileSize(gfx::Size(30, 30)); | 1264 client.SetTileSize(gfx::Size(30, 30)); |
1276 client.set_tree(ACTIVE_TREE); | 1265 client.set_tree(ACTIVE_TREE); |
1277 | 1266 |
1278 tiling = TestablePictureLayerTiling::Create(1.0f, layer_bounds, &client); | 1267 tiling = TestablePictureLayerTiling::Create(1.0f, layer_bounds, &client); |
1279 tiling->ComputeTilePriorityRects( | 1268 tiling->ComputeTilePriorityRects(viewport, 1.0f, 1.0, Occlusion()); |
1280 ACTIVE_TREE, viewport, 1.0f, 1.0, Occlusion()); | |
1281 tiling->UpdateAllTilePrioritiesForTesting(); | 1269 tiling->UpdateAllTilePrioritiesForTesting(); |
1282 | 1270 |
1283 PictureLayerTiling::TilingRasterTileIterator empty_iterator; | 1271 PictureLayerTiling::TilingRasterTileIterator empty_iterator; |
1284 EXPECT_FALSE(empty_iterator); | 1272 EXPECT_FALSE(empty_iterator); |
1285 | 1273 |
1286 std::vector<Tile*> all_tiles = tiling->AllTilesForTesting(); | 1274 std::vector<Tile*> all_tiles = tiling->AllTilesForTesting(); |
1287 | 1275 |
1288 PictureLayerTiling::TilingEvictionTileIterator it( | 1276 PictureLayerTiling::TilingEvictionTileIterator it( |
1289 tiling.get(), SMOOTHNESS_TAKES_PRIORITY, PictureLayerTiling::NOW); | 1277 tiling.get(), SMOOTHNESS_TAKES_PRIORITY, PictureLayerTiling::NOW); |
1290 | 1278 |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1356 } | 1344 } |
1357 | 1345 |
1358 TEST_F(PictureLayerTilingIteratorTest, TilesExist) { | 1346 TEST_F(PictureLayerTilingIteratorTest, TilesExist) { |
1359 gfx::Size layer_bounds(1099, 801); | 1347 gfx::Size layer_bounds(1099, 801); |
1360 Initialize(gfx::Size(100, 100), 1.f, layer_bounds); | 1348 Initialize(gfx::Size(100, 100), 1.f, layer_bounds); |
1361 VerifyTilesExactlyCoverRect(1.f, gfx::Rect(layer_bounds)); | 1349 VerifyTilesExactlyCoverRect(1.f, gfx::Rect(layer_bounds)); |
1362 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, false)); | 1350 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, false)); |
1363 | 1351 |
1364 client_.set_tree(ACTIVE_TREE); | 1352 client_.set_tree(ACTIVE_TREE); |
1365 tiling_->ComputeTilePriorityRects( | 1353 tiling_->ComputeTilePriorityRects( |
1366 ACTIVE_TREE, | |
1367 gfx::Rect(layer_bounds), // visible content rect | 1354 gfx::Rect(layer_bounds), // visible content rect |
1368 1.f, // current contents scale | 1355 1.f, // current contents scale |
1369 1.0, // current frame time | 1356 1.0, // current frame time |
1370 Occlusion()); | 1357 Occlusion()); |
1371 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, true)); | 1358 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, true)); |
1372 | 1359 |
1373 // Make the viewport rect empty. All tiles are killed and become zombies. | 1360 // Make the viewport rect empty. All tiles are killed and become zombies. |
1374 tiling_->ComputeTilePriorityRects(ACTIVE_TREE, | 1361 tiling_->ComputeTilePriorityRects(gfx::Rect(), // visible content rect |
1375 gfx::Rect(), // visible content rect | |
1376 1.f, // current contents scale | 1362 1.f, // current contents scale |
1377 2.0, // current frame time | 1363 2.0, // current frame time |
1378 Occlusion()); | 1364 Occlusion()); |
1379 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, false)); | 1365 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, false)); |
1380 } | 1366 } |
1381 | 1367 |
1382 TEST_F(PictureLayerTilingIteratorTest, TilesExistGiantViewport) { | 1368 TEST_F(PictureLayerTilingIteratorTest, TilesExistGiantViewport) { |
1383 gfx::Size layer_bounds(1099, 801); | 1369 gfx::Size layer_bounds(1099, 801); |
1384 Initialize(gfx::Size(100, 100), 1.f, layer_bounds); | 1370 Initialize(gfx::Size(100, 100), 1.f, layer_bounds); |
1385 VerifyTilesExactlyCoverRect(1.f, gfx::Rect(layer_bounds)); | 1371 VerifyTilesExactlyCoverRect(1.f, gfx::Rect(layer_bounds)); |
1386 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, false)); | 1372 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, false)); |
1387 | 1373 |
1388 gfx::Rect giant_rect(-10000000, -10000000, 1000000000, 1000000000); | 1374 gfx::Rect giant_rect(-10000000, -10000000, 1000000000, 1000000000); |
1389 | 1375 |
1390 client_.set_tree(ACTIVE_TREE); | 1376 client_.set_tree(ACTIVE_TREE); |
1391 tiling_->ComputeTilePriorityRects( | 1377 tiling_->ComputeTilePriorityRects( |
1392 ACTIVE_TREE, | |
1393 gfx::Rect(layer_bounds), // visible content rect | 1378 gfx::Rect(layer_bounds), // visible content rect |
1394 1.f, // current contents scale | 1379 1.f, // current contents scale |
1395 1.0, // current frame time | 1380 1.0, // current frame time |
1396 Occlusion()); | 1381 Occlusion()); |
1397 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, true)); | 1382 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, true)); |
1398 | 1383 |
1399 // If the visible content rect is empty, it should still have live tiles. | 1384 // If the visible content rect is empty, it should still have live tiles. |
1400 tiling_->ComputeTilePriorityRects(ACTIVE_TREE, | 1385 tiling_->ComputeTilePriorityRects(giant_rect, // visible content rect |
1401 giant_rect, // visible content rect | |
1402 1.f, // current contents scale | 1386 1.f, // current contents scale |
1403 2.0, // current frame time | 1387 2.0, // current frame time |
1404 Occlusion()); | 1388 Occlusion()); |
1405 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, true)); | 1389 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, true)); |
1406 } | 1390 } |
1407 | 1391 |
1408 TEST_F(PictureLayerTilingIteratorTest, TilesExistOutsideViewport) { | 1392 TEST_F(PictureLayerTilingIteratorTest, TilesExistOutsideViewport) { |
1409 gfx::Size layer_bounds(1099, 801); | 1393 gfx::Size layer_bounds(1099, 801); |
1410 Initialize(gfx::Size(100, 100), 1.f, layer_bounds); | 1394 Initialize(gfx::Size(100, 100), 1.f, layer_bounds); |
1411 VerifyTilesExactlyCoverRect(1.f, gfx::Rect(layer_bounds)); | 1395 VerifyTilesExactlyCoverRect(1.f, gfx::Rect(layer_bounds)); |
1412 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, false)); | 1396 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, false)); |
1413 | 1397 |
1414 // This rect does not intersect with the layer, as the layer is outside the | 1398 // This rect does not intersect with the layer, as the layer is outside the |
1415 // viewport. | 1399 // viewport. |
1416 gfx::Rect viewport_rect(1100, 0, 1000, 1000); | 1400 gfx::Rect viewport_rect(1100, 0, 1000, 1000); |
1417 EXPECT_FALSE(viewport_rect.Intersects(gfx::Rect(layer_bounds))); | 1401 EXPECT_FALSE(viewport_rect.Intersects(gfx::Rect(layer_bounds))); |
1418 | 1402 |
1419 client_.set_tree(ACTIVE_TREE); | 1403 client_.set_tree(ACTIVE_TREE); |
1420 tiling_->ComputeTilePriorityRects(ACTIVE_TREE, | 1404 tiling_->ComputeTilePriorityRects(viewport_rect, // visible content rect |
1421 viewport_rect, // visible content rect | |
1422 1.f, // current contents scale | 1405 1.f, // current contents scale |
1423 1.0, // current frame time | 1406 1.0, // current frame time |
1424 Occlusion()); | 1407 Occlusion()); |
1425 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, true)); | 1408 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, true)); |
1426 } | 1409 } |
1427 | 1410 |
1428 static void TilesIntersectingRectExist(const gfx::Rect& rect, | 1411 static void TilesIntersectingRectExist(const gfx::Rect& rect, |
1429 bool intersect_exists, | 1412 bool intersect_exists, |
1430 Tile* tile, | 1413 Tile* tile, |
1431 const gfx::Rect& geometry_rect) { | 1414 const gfx::Rect& geometry_rect) { |
1432 bool intersects = rect.Intersects(geometry_rect); | 1415 bool intersects = rect.Intersects(geometry_rect); |
1433 bool expected_exists = intersect_exists ? intersects : !intersects; | 1416 bool expected_exists = intersect_exists ? intersects : !intersects; |
1434 EXPECT_EQ(expected_exists, tile != NULL) | 1417 EXPECT_EQ(expected_exists, tile != NULL) |
1435 << "Rects intersecting " << rect.ToString() << " should exist. " | 1418 << "Rects intersecting " << rect.ToString() << " should exist. " |
1436 << "Current tile rect is " << geometry_rect.ToString(); | 1419 << "Current tile rect is " << geometry_rect.ToString(); |
1437 } | 1420 } |
1438 | 1421 |
1439 TEST_F(PictureLayerTilingIteratorTest, | 1422 TEST_F(PictureLayerTilingIteratorTest, |
1440 TilesExistLargeViewportAndLayerWithSmallVisibleArea) { | 1423 TilesExistLargeViewportAndLayerWithSmallVisibleArea) { |
1441 gfx::Size layer_bounds(10000, 10000); | 1424 gfx::Size layer_bounds(10000, 10000); |
1442 Initialize(gfx::Size(100, 100), 1.f, layer_bounds); | 1425 Initialize(gfx::Size(100, 100), 1.f, layer_bounds); |
1443 VerifyTilesExactlyCoverRect(1.f, gfx::Rect(layer_bounds)); | 1426 VerifyTilesExactlyCoverRect(1.f, gfx::Rect(layer_bounds)); |
1444 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, false)); | 1427 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, false)); |
1445 | 1428 |
1446 gfx::Rect visible_rect(8000, 8000, 50, 50); | 1429 gfx::Rect visible_rect(8000, 8000, 50, 50); |
1447 | 1430 |
1448 client_.set_tree(ACTIVE_TREE); | 1431 client_.set_tree(ACTIVE_TREE); |
1449 set_max_tiles_for_interest_area(1); | 1432 set_max_tiles_for_interest_area(1); |
1450 tiling_->ComputeTilePriorityRects(ACTIVE_TREE, | 1433 tiling_->ComputeTilePriorityRects(visible_rect, // visible content rect |
1451 visible_rect, // visible content rect | |
1452 1.f, // current contents scale | 1434 1.f, // current contents scale |
1453 1.0, // current frame time | 1435 1.0, // current frame time |
1454 Occlusion()); | 1436 Occlusion()); |
1455 VerifyTiles(1.f, | 1437 VerifyTiles(1.f, |
1456 gfx::Rect(layer_bounds), | 1438 gfx::Rect(layer_bounds), |
1457 base::Bind(&TilesIntersectingRectExist, visible_rect, true)); | 1439 base::Bind(&TilesIntersectingRectExist, visible_rect, true)); |
1458 } | 1440 } |
1459 | 1441 |
1460 TEST_F(PictureLayerTilingIteratorTest, AddTilingsToMatchScale) { | 1442 TEST_F(PictureLayerTilingIteratorTest, AddTilingsToMatchScale) { |
1461 gfx::Size layer_bounds(1099, 801); | 1443 gfx::Size layer_bounds(1099, 801); |
1462 gfx::Size tile_size(100, 100); | 1444 gfx::Size tile_size(100, 100); |
1463 | 1445 |
1464 client_.SetTileSize(tile_size); | 1446 client_.SetTileSize(tile_size); |
1465 client_.set_tree(PENDING_TREE); | 1447 client_.set_tree(PENDING_TREE); |
1466 | 1448 |
1467 PictureLayerTilingSet active_set(&client_); | 1449 auto active_set = PictureLayerTilingSet::Create(&client_); |
1468 | 1450 |
1469 active_set.AddTiling(1.f, layer_bounds); | 1451 active_set->AddTiling(1.f, layer_bounds); |
1470 | 1452 |
1471 VerifyTiles(active_set.tiling_at(0), | 1453 VerifyTiles(active_set->tiling_at(0), 1.f, gfx::Rect(layer_bounds), |
1472 1.f, | |
1473 gfx::Rect(layer_bounds), | |
1474 base::Bind(&TileExists, false)); | 1454 base::Bind(&TileExists, false)); |
1475 | 1455 |
1476 UpdateAllTilePriorities(&active_set, | 1456 UpdateAllTilePriorities(active_set.get(), |
1477 PENDING_TREE, | |
1478 gfx::Rect(layer_bounds), // visible content rect | 1457 gfx::Rect(layer_bounds), // visible content rect |
1479 1.f, // current contents scale | 1458 1.f, // current contents scale |
1480 1.0); // current frame time | 1459 1.0); // current frame time |
1481 | 1460 |
1482 // The active tiling has tiles now. | 1461 // The active tiling has tiles now. |
1483 VerifyTiles(active_set.tiling_at(0), | 1462 VerifyTiles(active_set->tiling_at(0), 1.f, gfx::Rect(layer_bounds), |
1484 1.f, | |
1485 gfx::Rect(layer_bounds), | |
1486 base::Bind(&TileExists, true)); | 1463 base::Bind(&TileExists, true)); |
1487 | 1464 |
1488 // Add the same tilings to the pending set. | 1465 // Add the same tilings to the pending set. |
1489 PictureLayerTilingSet pending_set(&client_); | 1466 auto pending_set = PictureLayerTilingSet::Create(&client_); |
1490 Region invalidation; | 1467 Region invalidation; |
1491 pending_set.SyncTilings(active_set, layer_bounds, invalidation, 0.f); | 1468 pending_set->SyncTilings(*active_set, layer_bounds, invalidation, 0.f, |
| 1469 client_.raster_source()); |
1492 | 1470 |
1493 // The pending tiling starts with no tiles. | 1471 // The pending tiling starts with no tiles. |
1494 VerifyTiles(pending_set.tiling_at(0), | 1472 VerifyTiles(pending_set->tiling_at(0), 1.f, gfx::Rect(layer_bounds), |
1495 1.f, | |
1496 gfx::Rect(layer_bounds), | |
1497 base::Bind(&TileExists, false)); | 1473 base::Bind(&TileExists, false)); |
1498 | 1474 |
1499 // ComputeTilePriorityRects on the pending tiling at the same frame time. The | 1475 // ComputeTilePriorityRects on the pending tiling at the same frame time. The |
1500 // pending tiling should get tiles. | 1476 // pending tiling should get tiles. |
1501 UpdateAllTilePriorities(&pending_set, | 1477 UpdateAllTilePriorities(pending_set.get(), |
1502 PENDING_TREE, | |
1503 gfx::Rect(layer_bounds), // visible content rect | 1478 gfx::Rect(layer_bounds), // visible content rect |
1504 1.f, // current contents scale | 1479 1.f, // current contents scale |
1505 1.0); // current frame time | 1480 1.0); // current frame time |
1506 | 1481 |
1507 VerifyTiles(pending_set.tiling_at(0), | 1482 VerifyTiles(pending_set->tiling_at(0), 1.f, gfx::Rect(layer_bounds), |
1508 1.f, | |
1509 gfx::Rect(layer_bounds), | |
1510 base::Bind(&TileExists, true)); | 1483 base::Bind(&TileExists, true)); |
1511 } | 1484 } |
1512 | 1485 |
1513 TEST(ComputeTilePriorityRectsTest, VisibleTiles) { | 1486 TEST(ComputeTilePriorityRectsTest, VisibleTiles) { |
1514 // The TilePriority of visible tiles should have zero distance_to_visible | 1487 // The TilePriority of visible tiles should have zero distance_to_visible |
1515 // and time_to_visible. | 1488 // and time_to_visible. |
1516 | 1489 |
1517 FakePictureLayerTilingClient client; | 1490 FakePictureLayerTilingClient client; |
1518 scoped_ptr<TestablePictureLayerTiling> tiling; | 1491 scoped_ptr<TestablePictureLayerTiling> tiling; |
1519 | 1492 |
1520 gfx::Size device_viewport(800, 600); | 1493 gfx::Size device_viewport(800, 600); |
1521 gfx::Size last_layer_bounds(200, 200); | 1494 gfx::Size last_layer_bounds(200, 200); |
1522 gfx::Size current_layer_bounds(200, 200); | 1495 gfx::Size current_layer_bounds(200, 200); |
1523 float current_layer_contents_scale = 1.f; | 1496 float current_layer_contents_scale = 1.f; |
1524 gfx::Transform current_screen_transform; | 1497 gfx::Transform current_screen_transform; |
1525 double current_frame_time_in_seconds = 1.0; | 1498 double current_frame_time_in_seconds = 1.0; |
1526 | 1499 |
1527 gfx::Rect viewport_in_layer_space = ViewportInLayerSpace( | 1500 gfx::Rect viewport_in_layer_space = ViewportInLayerSpace( |
1528 current_screen_transform, device_viewport); | 1501 current_screen_transform, device_viewport); |
1529 | 1502 |
1530 client.SetTileSize(gfx::Size(100, 100)); | 1503 client.SetTileSize(gfx::Size(100, 100)); |
1531 client.set_tree(ACTIVE_TREE); | 1504 client.set_tree(ACTIVE_TREE); |
1532 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale | 1505 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale |
1533 current_layer_bounds, | 1506 current_layer_bounds, |
1534 &client); | 1507 &client); |
1535 | 1508 |
1536 tiling->ComputeTilePriorityRects(ACTIVE_TREE, | 1509 tiling->ComputeTilePriorityRects(viewport_in_layer_space, |
1537 viewport_in_layer_space, | |
1538 current_layer_contents_scale, | 1510 current_layer_contents_scale, |
1539 current_frame_time_in_seconds, | 1511 current_frame_time_in_seconds, Occlusion()); |
1540 Occlusion()); | |
1541 tiling->UpdateAllTilePrioritiesForTesting(); | 1512 tiling->UpdateAllTilePrioritiesForTesting(); |
1542 | 1513 |
1543 ASSERT_TRUE(tiling->TileAt(0, 0)); | 1514 ASSERT_TRUE(tiling->TileAt(0, 0)); |
1544 ASSERT_TRUE(tiling->TileAt(0, 1)); | 1515 ASSERT_TRUE(tiling->TileAt(0, 1)); |
1545 ASSERT_TRUE(tiling->TileAt(1, 0)); | 1516 ASSERT_TRUE(tiling->TileAt(1, 0)); |
1546 ASSERT_TRUE(tiling->TileAt(1, 1)); | 1517 ASSERT_TRUE(tiling->TileAt(1, 1)); |
1547 | 1518 |
1548 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE); | 1519 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE); |
1549 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); | 1520 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); |
1550 EXPECT_FLOAT_EQ(TilePriority::NOW, priority.priority_bin); | 1521 EXPECT_FLOAT_EQ(TilePriority::NOW, priority.priority_bin); |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1582 | 1553 |
1583 gfx::Rect viewport_in_layer_space = ViewportInLayerSpace( | 1554 gfx::Rect viewport_in_layer_space = ViewportInLayerSpace( |
1584 current_screen_transform, device_viewport); | 1555 current_screen_transform, device_viewport); |
1585 | 1556 |
1586 client.SetTileSize(gfx::Size(100, 100)); | 1557 client.SetTileSize(gfx::Size(100, 100)); |
1587 client.set_tree(ACTIVE_TREE); | 1558 client.set_tree(ACTIVE_TREE); |
1588 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale | 1559 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale |
1589 current_layer_bounds, | 1560 current_layer_bounds, |
1590 &client); | 1561 &client); |
1591 | 1562 |
1592 tiling->ComputeTilePriorityRects(ACTIVE_TREE, | 1563 tiling->ComputeTilePriorityRects(viewport_in_layer_space, |
1593 viewport_in_layer_space, | |
1594 current_layer_contents_scale, | 1564 current_layer_contents_scale, |
1595 current_frame_time_in_seconds, | 1565 current_frame_time_in_seconds, Occlusion()); |
1596 Occlusion()); | |
1597 tiling->UpdateAllTilePrioritiesForTesting(); | 1566 tiling->UpdateAllTilePrioritiesForTesting(); |
1598 | 1567 |
1599 ASSERT_TRUE(tiling->TileAt(0, 0)); | 1568 ASSERT_TRUE(tiling->TileAt(0, 0)); |
1600 ASSERT_TRUE(tiling->TileAt(0, 1)); | 1569 ASSERT_TRUE(tiling->TileAt(0, 1)); |
1601 ASSERT_TRUE(tiling->TileAt(1, 0)); | 1570 ASSERT_TRUE(tiling->TileAt(1, 0)); |
1602 ASSERT_TRUE(tiling->TileAt(1, 1)); | 1571 ASSERT_TRUE(tiling->TileAt(1, 1)); |
1603 | 1572 |
1604 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE); | 1573 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE); |
1605 EXPECT_GT(priority.distance_to_visible, 0.f); | 1574 EXPECT_GT(priority.distance_to_visible, 0.f); |
1606 EXPECT_NE(TilePriority::NOW, priority.priority_bin); | 1575 EXPECT_NE(TilePriority::NOW, priority.priority_bin); |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1648 | 1617 |
1649 gfx::Rect viewport_in_layer_space = ViewportInLayerSpace( | 1618 gfx::Rect viewport_in_layer_space = ViewportInLayerSpace( |
1650 current_screen_transform, device_viewport); | 1619 current_screen_transform, device_viewport); |
1651 | 1620 |
1652 client.SetTileSize(gfx::Size(100, 100)); | 1621 client.SetTileSize(gfx::Size(100, 100)); |
1653 client.set_tree(ACTIVE_TREE); | 1622 client.set_tree(ACTIVE_TREE); |
1654 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale | 1623 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale |
1655 current_layer_bounds, | 1624 current_layer_bounds, |
1656 &client); | 1625 &client); |
1657 | 1626 |
1658 tiling->ComputeTilePriorityRects(ACTIVE_TREE, | 1627 tiling->ComputeTilePriorityRects(viewport_in_layer_space, |
1659 viewport_in_layer_space, | |
1660 current_layer_contents_scale, | 1628 current_layer_contents_scale, |
1661 current_frame_time_in_seconds, | 1629 current_frame_time_in_seconds, Occlusion()); |
1662 Occlusion()); | |
1663 tiling->UpdateAllTilePrioritiesForTesting(); | 1630 tiling->UpdateAllTilePrioritiesForTesting(); |
1664 | 1631 |
1665 ASSERT_TRUE(tiling->TileAt(0, 0)); | 1632 ASSERT_TRUE(tiling->TileAt(0, 0)); |
1666 ASSERT_TRUE(tiling->TileAt(0, 1)); | 1633 ASSERT_TRUE(tiling->TileAt(0, 1)); |
1667 ASSERT_TRUE(tiling->TileAt(1, 0)); | 1634 ASSERT_TRUE(tiling->TileAt(1, 0)); |
1668 ASSERT_TRUE(tiling->TileAt(1, 1)); | 1635 ASSERT_TRUE(tiling->TileAt(1, 1)); |
1669 | 1636 |
1670 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE); | 1637 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE); |
1671 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); | 1638 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); |
1672 EXPECT_FLOAT_EQ(TilePriority::NOW, priority.priority_bin); | 1639 EXPECT_FLOAT_EQ(TilePriority::NOW, priority.priority_bin); |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1708 | 1675 |
1709 gfx::Rect viewport_in_layer_space = ViewportInLayerSpace( | 1676 gfx::Rect viewport_in_layer_space = ViewportInLayerSpace( |
1710 current_screen_transform, device_viewport); | 1677 current_screen_transform, device_viewport); |
1711 | 1678 |
1712 client.SetTileSize(gfx::Size(100, 100)); | 1679 client.SetTileSize(gfx::Size(100, 100)); |
1713 client.set_tree(ACTIVE_TREE); | 1680 client.set_tree(ACTIVE_TREE); |
1714 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale | 1681 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale |
1715 current_layer_bounds, | 1682 current_layer_bounds, |
1716 &client); | 1683 &client); |
1717 | 1684 |
1718 tiling->ComputeTilePriorityRects(ACTIVE_TREE, | 1685 tiling->ComputeTilePriorityRects(viewport_in_layer_space, |
1719 viewport_in_layer_space, | |
1720 current_layer_contents_scale, | 1686 current_layer_contents_scale, |
1721 current_frame_time_in_seconds, | 1687 current_frame_time_in_seconds, Occlusion()); |
1722 Occlusion()); | |
1723 tiling->UpdateAllTilePrioritiesForTesting(); | 1688 tiling->UpdateAllTilePrioritiesForTesting(); |
1724 | 1689 |
1725 ASSERT_TRUE(tiling->TileAt(0, 0)); | 1690 ASSERT_TRUE(tiling->TileAt(0, 0)); |
1726 ASSERT_TRUE(tiling->TileAt(0, 1)); | 1691 ASSERT_TRUE(tiling->TileAt(0, 1)); |
1727 ASSERT_TRUE(tiling->TileAt(1, 0)); | 1692 ASSERT_TRUE(tiling->TileAt(1, 0)); |
1728 ASSERT_TRUE(tiling->TileAt(1, 1)); | 1693 ASSERT_TRUE(tiling->TileAt(1, 1)); |
1729 | 1694 |
1730 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE); | 1695 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE); |
1731 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); | 1696 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); |
1732 EXPECT_EQ(TilePriority::NOW, priority.priority_bin); | 1697 EXPECT_EQ(TilePriority::NOW, priority.priority_bin); |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1792 | 1757 |
1793 gfx::Rect viewport_in_layer_space = ViewportInLayerSpace( | 1758 gfx::Rect viewport_in_layer_space = ViewportInLayerSpace( |
1794 current_screen_transform, device_viewport); | 1759 current_screen_transform, device_viewport); |
1795 | 1760 |
1796 client.SetTileSize(gfx::Size(100, 100)); | 1761 client.SetTileSize(gfx::Size(100, 100)); |
1797 client.set_tree(ACTIVE_TREE); | 1762 client.set_tree(ACTIVE_TREE); |
1798 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale | 1763 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale |
1799 current_layer_bounds, | 1764 current_layer_bounds, |
1800 &client); | 1765 &client); |
1801 | 1766 |
1802 tiling->ComputeTilePriorityRects(ACTIVE_TREE, | 1767 tiling->ComputeTilePriorityRects(viewport_in_layer_space, |
1803 viewport_in_layer_space, | |
1804 current_layer_contents_scale, | 1768 current_layer_contents_scale, |
1805 current_frame_time_in_seconds, | 1769 current_frame_time_in_seconds, Occlusion()); |
1806 Occlusion()); | |
1807 tiling->UpdateAllTilePrioritiesForTesting(); | 1770 tiling->UpdateAllTilePrioritiesForTesting(); |
1808 | 1771 |
1809 ASSERT_TRUE(tiling->TileAt(0, 0)); | 1772 ASSERT_TRUE(tiling->TileAt(0, 0)); |
1810 ASSERT_TRUE(tiling->TileAt(0, 1)); | 1773 ASSERT_TRUE(tiling->TileAt(0, 1)); |
1811 ASSERT_TRUE(tiling->TileAt(1, 0)); | 1774 ASSERT_TRUE(tiling->TileAt(1, 0)); |
1812 ASSERT_TRUE(tiling->TileAt(1, 1)); | 1775 ASSERT_TRUE(tiling->TileAt(1, 1)); |
1813 | 1776 |
1814 // All tiles will have a positive distance_to_visible | 1777 // All tiles will have a positive distance_to_visible |
1815 // and an infinite time_to_visible. | 1778 // and an infinite time_to_visible. |
1816 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE); | 1779 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE); |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1886 | 1849 |
1887 gfx::Rect viewport_in_layer_space = ViewportInLayerSpace( | 1850 gfx::Rect viewport_in_layer_space = ViewportInLayerSpace( |
1888 current_screen_transform, device_viewport); | 1851 current_screen_transform, device_viewport); |
1889 | 1852 |
1890 client.SetTileSize(gfx::Size(100, 100)); | 1853 client.SetTileSize(gfx::Size(100, 100)); |
1891 client.set_tree(ACTIVE_TREE); | 1854 client.set_tree(ACTIVE_TREE); |
1892 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale | 1855 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale |
1893 current_layer_bounds, | 1856 current_layer_bounds, |
1894 &client); | 1857 &client); |
1895 | 1858 |
1896 tiling->ComputeTilePriorityRects(ACTIVE_TREE, | 1859 tiling->ComputeTilePriorityRects(viewport_in_layer_space, |
1897 viewport_in_layer_space, | |
1898 current_layer_contents_scale, | 1860 current_layer_contents_scale, |
1899 current_frame_time_in_seconds, | 1861 current_frame_time_in_seconds, Occlusion()); |
1900 Occlusion()); | |
1901 tiling->UpdateAllTilePrioritiesForTesting(); | 1862 tiling->UpdateAllTilePrioritiesForTesting(); |
1902 | 1863 |
1903 ASSERT_TRUE(tiling->TileAt(0, 0)); | 1864 ASSERT_TRUE(tiling->TileAt(0, 0)); |
1904 ASSERT_TRUE(tiling->TileAt(0, 1)); | 1865 ASSERT_TRUE(tiling->TileAt(0, 1)); |
1905 ASSERT_TRUE(tiling->TileAt(1, 0)); | 1866 ASSERT_TRUE(tiling->TileAt(1, 0)); |
1906 ASSERT_TRUE(tiling->TileAt(1, 1)); | 1867 ASSERT_TRUE(tiling->TileAt(1, 1)); |
1907 | 1868 |
1908 // Left-side tiles will be clipped by the transform, so we have to assume | 1869 // Left-side tiles will be clipped by the transform, so we have to assume |
1909 // they are visible just in case. | 1870 // they are visible just in case. |
1910 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE); | 1871 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE); |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1951 gfx::Rect viewport_in_layer_space = ViewportInLayerSpace( | 1912 gfx::Rect viewport_in_layer_space = ViewportInLayerSpace( |
1952 current_screen_transform, device_viewport); | 1913 current_screen_transform, device_viewport); |
1953 | 1914 |
1954 client.SetTileSize(gfx::Size(100, 100)); | 1915 client.SetTileSize(gfx::Size(100, 100)); |
1955 client.set_tree(ACTIVE_TREE); | 1916 client.set_tree(ACTIVE_TREE); |
1956 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale | 1917 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale |
1957 current_layer_bounds, | 1918 current_layer_bounds, |
1958 &client); | 1919 &client); |
1959 | 1920 |
1960 // previous ("last") frame | 1921 // previous ("last") frame |
1961 tiling->ComputeTilePriorityRects(ACTIVE_TREE, | 1922 tiling->ComputeTilePriorityRects(viewport_in_layer_space, |
1962 viewport_in_layer_space, | |
1963 last_layer_contents_scale, | 1923 last_layer_contents_scale, |
1964 last_frame_time_in_seconds, | 1924 last_frame_time_in_seconds, Occlusion()); |
1965 Occlusion()); | |
1966 | 1925 |
1967 // current frame | 1926 // current frame |
1968 tiling->ComputeTilePriorityRects(ACTIVE_TREE, | 1927 tiling->ComputeTilePriorityRects(viewport_in_layer_space, |
1969 viewport_in_layer_space, | |
1970 current_layer_contents_scale, | 1928 current_layer_contents_scale, |
1971 current_frame_time_in_seconds, | 1929 current_frame_time_in_seconds, Occlusion()); |
1972 Occlusion()); | |
1973 tiling->UpdateAllTilePrioritiesForTesting(); | 1930 tiling->UpdateAllTilePrioritiesForTesting(); |
1974 | 1931 |
1975 ASSERT_TRUE(tiling->TileAt(0, 0)); | 1932 ASSERT_TRUE(tiling->TileAt(0, 0)); |
1976 ASSERT_TRUE(tiling->TileAt(0, 1)); | 1933 ASSERT_TRUE(tiling->TileAt(0, 1)); |
1977 ASSERT_TRUE(tiling->TileAt(1, 0)); | 1934 ASSERT_TRUE(tiling->TileAt(1, 0)); |
1978 ASSERT_TRUE(tiling->TileAt(1, 1)); | 1935 ASSERT_TRUE(tiling->TileAt(1, 1)); |
1979 | 1936 |
1980 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE); | 1937 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE); |
1981 EXPECT_GT(priority.distance_to_visible, 0.f); | 1938 EXPECT_GT(priority.distance_to_visible, 0.f); |
1982 EXPECT_NE(TilePriority::NOW, priority.priority_bin); | 1939 EXPECT_NE(TilePriority::NOW, priority.priority_bin); |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2030 gfx::Rect viewport_in_layer_space = ViewportInLayerSpace( | 1987 gfx::Rect viewport_in_layer_space = ViewportInLayerSpace( |
2031 current_screen_transform, device_viewport); | 1988 current_screen_transform, device_viewport); |
2032 | 1989 |
2033 client.SetTileSize(gfx::Size(100, 100)); | 1990 client.SetTileSize(gfx::Size(100, 100)); |
2034 client.set_tree(ACTIVE_TREE); | 1991 client.set_tree(ACTIVE_TREE); |
2035 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale | 1992 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale |
2036 current_layer_bounds, | 1993 current_layer_bounds, |
2037 &client); | 1994 &client); |
2038 | 1995 |
2039 // previous ("last") frame | 1996 // previous ("last") frame |
2040 tiling->ComputeTilePriorityRects(ACTIVE_TREE, | 1997 tiling->ComputeTilePriorityRects(viewport_in_layer_space, |
2041 viewport_in_layer_space, | |
2042 last_layer_contents_scale, | 1998 last_layer_contents_scale, |
2043 last_frame_time_in_seconds, | 1999 last_frame_time_in_seconds, Occlusion()); |
2044 Occlusion()); | |
2045 | 2000 |
2046 // current frame | 2001 // current frame |
2047 tiling->ComputeTilePriorityRects(ACTIVE_TREE, | 2002 tiling->ComputeTilePriorityRects(viewport_in_layer_space, |
2048 viewport_in_layer_space, | |
2049 current_layer_contents_scale, | 2003 current_layer_contents_scale, |
2050 current_frame_time_in_seconds, | 2004 current_frame_time_in_seconds, Occlusion()); |
2051 Occlusion()); | |
2052 tiling->UpdateAllTilePrioritiesForTesting(); | 2005 tiling->UpdateAllTilePrioritiesForTesting(); |
2053 | 2006 |
2054 ASSERT_TRUE(tiling->TileAt(0, 0)); | 2007 ASSERT_TRUE(tiling->TileAt(0, 0)); |
2055 ASSERT_TRUE(tiling->TileAt(0, 1)); | 2008 ASSERT_TRUE(tiling->TileAt(0, 1)); |
2056 ASSERT_TRUE(tiling->TileAt(1, 0)); | 2009 ASSERT_TRUE(tiling->TileAt(1, 0)); |
2057 ASSERT_TRUE(tiling->TileAt(1, 1)); | 2010 ASSERT_TRUE(tiling->TileAt(1, 1)); |
2058 | 2011 |
2059 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE); | 2012 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE); |
2060 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); | 2013 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); |
2061 EXPECT_EQ(TilePriority::NOW, priority.priority_bin); | 2014 EXPECT_EQ(TilePriority::NOW, priority.priority_bin); |
(...skipping 21 matching lines...) Expand all Loading... |
2083 FakePictureLayerTilingClient active_client; | 2036 FakePictureLayerTilingClient active_client; |
2084 scoped_ptr<TestablePictureLayerTiling> active_tiling; | 2037 scoped_ptr<TestablePictureLayerTiling> active_tiling; |
2085 | 2038 |
2086 active_client.SetTileSize(gfx::Size(100, 100)); | 2039 active_client.SetTileSize(gfx::Size(100, 100)); |
2087 active_client.set_tree(ACTIVE_TREE); | 2040 active_client.set_tree(ACTIVE_TREE); |
2088 active_client.set_max_tiles_for_interest_area(10); | 2041 active_client.set_max_tiles_for_interest_area(10); |
2089 active_tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale | 2042 active_tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale |
2090 gfx::Size(10000, 10000), | 2043 gfx::Size(10000, 10000), |
2091 &active_client); | 2044 &active_client); |
2092 // Create all tiles on this tiling. | 2045 // Create all tiles on this tiling. |
2093 active_tiling->ComputeTilePriorityRects( | 2046 active_tiling->ComputeTilePriorityRects(gfx::Rect(0, 0, 100, 100), 1.0f, 1.0f, |
2094 ACTIVE_TREE, gfx::Rect(0, 0, 100, 100), 1.0f, 1.0f, Occlusion()); | 2047 Occlusion()); |
2095 | 2048 |
2096 FakePictureLayerTilingClient recycle_client; | 2049 FakePictureLayerTilingClient recycle_client; |
2097 recycle_client.SetTileSize(gfx::Size(100, 100)); | 2050 recycle_client.SetTileSize(gfx::Size(100, 100)); |
2098 recycle_client.set_tree(PENDING_TREE); | 2051 recycle_client.set_tree(PENDING_TREE); |
2099 recycle_client.set_twin_tiling(active_tiling.get()); | 2052 recycle_client.set_twin_tiling(active_tiling.get()); |
2100 recycle_client.set_max_tiles_for_interest_area(10); | 2053 recycle_client.set_max_tiles_for_interest_area(10); |
2101 | 2054 |
2102 scoped_ptr<TestablePictureLayerTiling> recycle_tiling; | 2055 scoped_ptr<TestablePictureLayerTiling> recycle_tiling; |
2103 recycle_tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale | 2056 recycle_tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale |
2104 gfx::Size(10000, 10000), | 2057 gfx::Size(10000, 10000), |
2105 &recycle_client); | 2058 &recycle_client); |
2106 | 2059 |
2107 // Create all tiles on the second tiling. All tiles should be shared. | 2060 // Create all tiles on the second tiling. All tiles should be shared. |
2108 recycle_tiling->ComputeTilePriorityRects( | 2061 recycle_tiling->ComputeTilePriorityRects(gfx::Rect(0, 0, 100, 100), 1.0f, |
2109 PENDING_TREE, gfx::Rect(0, 0, 100, 100), 1.0f, 1.0f, Occlusion()); | 2062 1.0f, Occlusion()); |
2110 | 2063 |
2111 // Set the second tiling as recycled. | 2064 // Set the second tiling as recycled. |
2112 active_client.set_twin_tiling(NULL); | 2065 active_client.set_twin_tiling(NULL); |
2113 active_client.set_recycled_twin_tiling(recycle_tiling.get()); | 2066 active_client.set_recycled_twin_tiling(recycle_tiling.get()); |
2114 recycle_client.set_twin_tiling(NULL); | 2067 recycle_client.set_twin_tiling(NULL); |
2115 | 2068 |
2116 // Verify that tiles exist and are shared. | 2069 // Verify that tiles exist and are shared. |
2117 EXPECT_TRUE(active_tiling->TileAt(0, 0)); | 2070 EXPECT_TRUE(active_tiling->TileAt(0, 0)); |
2118 EXPECT_TRUE(recycle_tiling->TileAt(0, 0)); | 2071 EXPECT_TRUE(recycle_tiling->TileAt(0, 0)); |
2119 EXPECT_EQ(active_tiling->TileAt(0, 0), recycle_tiling->TileAt(0, 0)); | 2072 EXPECT_EQ(active_tiling->TileAt(0, 0), recycle_tiling->TileAt(0, 0)); |
2120 | 2073 |
2121 // Move the viewport far away from the (0, 0) tile. | 2074 // Move the viewport far away from the (0, 0) tile. |
2122 active_tiling->ComputeTilePriorityRects( | 2075 active_tiling->ComputeTilePriorityRects(gfx::Rect(9000, 9000, 100, 100), 1.0f, |
2123 ACTIVE_TREE, gfx::Rect(9000, 9000, 100, 100), 1.0f, 2.0, Occlusion()); | 2076 2.0, Occlusion()); |
2124 // Ensure the tile was deleted on both tilings. | 2077 // Ensure the tile was deleted on both tilings. |
2125 EXPECT_FALSE(active_tiling->TileAt(0, 0)); | 2078 EXPECT_FALSE(active_tiling->TileAt(0, 0)); |
2126 EXPECT_FALSE(recycle_tiling->TileAt(0, 0)); | 2079 EXPECT_FALSE(recycle_tiling->TileAt(0, 0)); |
2127 | 2080 |
2128 // Move the viewport back to (0, 0) tile. | 2081 // Move the viewport back to (0, 0) tile. |
2129 active_tiling->ComputeTilePriorityRects( | 2082 active_tiling->ComputeTilePriorityRects(gfx::Rect(0, 0, 100, 100), 1.0f, 3.0, |
2130 ACTIVE_TREE, gfx::Rect(0, 0, 100, 100), 1.0f, 3.0, Occlusion()); | 2083 Occlusion()); |
2131 | 2084 |
2132 // Ensure that we now have a tile here, but the recycle tiling does not. | 2085 // Ensure that we now have a tile here, but the recycle tiling does not. |
2133 EXPECT_TRUE(active_tiling->TileAt(0, 0)); | 2086 EXPECT_TRUE(active_tiling->TileAt(0, 0)); |
2134 EXPECT_FALSE(recycle_tiling->TileAt(0, 0)); | 2087 EXPECT_FALSE(recycle_tiling->TileAt(0, 0)); |
2135 } | 2088 } |
2136 | 2089 |
2137 TEST(PictureLayerTilingTest, RecycledTilesClearedOnReset) { | 2090 TEST(PictureLayerTilingTest, RecycledTilesClearedOnReset) { |
2138 FakePictureLayerTilingClient active_client; | 2091 FakePictureLayerTilingClient active_client; |
2139 scoped_ptr<TestablePictureLayerTiling> active_tiling; | 2092 scoped_ptr<TestablePictureLayerTiling> active_tiling; |
2140 | 2093 |
2141 active_client.SetTileSize(gfx::Size(100, 100)); | 2094 active_client.SetTileSize(gfx::Size(100, 100)); |
2142 active_client.set_tree(ACTIVE_TREE); | 2095 active_client.set_tree(ACTIVE_TREE); |
2143 active_tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale | 2096 active_tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale |
2144 gfx::Size(100, 100), | 2097 gfx::Size(100, 100), |
2145 &active_client); | 2098 &active_client); |
2146 // Create all tiles on this tiling. | 2099 // Create all tiles on this tiling. |
2147 active_tiling->ComputeTilePriorityRects( | 2100 active_tiling->ComputeTilePriorityRects(gfx::Rect(0, 0, 100, 100), 1.0f, 1.0f, |
2148 ACTIVE_TREE, gfx::Rect(0, 0, 100, 100), 1.0f, 1.0f, Occlusion()); | 2101 Occlusion()); |
2149 | 2102 |
2150 FakePictureLayerTilingClient recycle_client; | 2103 FakePictureLayerTilingClient recycle_client; |
2151 recycle_client.SetTileSize(gfx::Size(100, 100)); | 2104 recycle_client.SetTileSize(gfx::Size(100, 100)); |
2152 recycle_client.set_tree(PENDING_TREE); | 2105 recycle_client.set_tree(PENDING_TREE); |
2153 recycle_client.set_twin_tiling(active_tiling.get()); | 2106 recycle_client.set_twin_tiling(active_tiling.get()); |
2154 recycle_client.set_max_tiles_for_interest_area(10); | 2107 recycle_client.set_max_tiles_for_interest_area(10); |
2155 | 2108 |
2156 scoped_ptr<TestablePictureLayerTiling> recycle_tiling; | 2109 scoped_ptr<TestablePictureLayerTiling> recycle_tiling; |
2157 recycle_tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale | 2110 recycle_tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale |
2158 gfx::Size(100, 100), | 2111 gfx::Size(100, 100), |
2159 &recycle_client); | 2112 &recycle_client); |
2160 | 2113 |
2161 // Create all tiles on the recycle tiling. All tiles should be shared. | 2114 // Create all tiles on the recycle tiling. All tiles should be shared. |
2162 recycle_tiling->ComputeTilePriorityRects( | 2115 recycle_tiling->ComputeTilePriorityRects(gfx::Rect(0, 0, 100, 100), 1.0f, |
2163 PENDING_TREE, gfx::Rect(0, 0, 100, 100), 1.0f, 1.0f, Occlusion()); | 2116 1.0f, Occlusion()); |
2164 | 2117 |
2165 // Set the second tiling as recycled. | 2118 // Set the second tiling as recycled. |
2166 active_client.set_twin_tiling(NULL); | 2119 active_client.set_twin_tiling(NULL); |
2167 active_client.set_recycled_twin_tiling(recycle_tiling.get()); | 2120 active_client.set_recycled_twin_tiling(recycle_tiling.get()); |
2168 recycle_client.set_twin_tiling(NULL); | 2121 recycle_client.set_twin_tiling(NULL); |
2169 | 2122 |
2170 // Verify that tiles exist and are shared. | 2123 // Verify that tiles exist and are shared. |
2171 EXPECT_TRUE(active_tiling->TileAt(0, 0)); | 2124 EXPECT_TRUE(active_tiling->TileAt(0, 0)); |
2172 EXPECT_TRUE(recycle_tiling->TileAt(0, 0)); | 2125 EXPECT_TRUE(recycle_tiling->TileAt(0, 0)); |
2173 EXPECT_EQ(active_tiling->TileAt(0, 0), recycle_tiling->TileAt(0, 0)); | 2126 EXPECT_EQ(active_tiling->TileAt(0, 0), recycle_tiling->TileAt(0, 0)); |
(...skipping 13 matching lines...) Expand all Loading... |
2187 EXPECT_EQ(4u, tiling_->AllRefTilesForTesting().size()); | 2140 EXPECT_EQ(4u, tiling_->AllRefTilesForTesting().size()); |
2188 | 2141 |
2189 client_.SetTileSize(gfx::Size(250, 200)); | 2142 client_.SetTileSize(gfx::Size(250, 200)); |
2190 client_.set_tree(PENDING_TREE); | 2143 client_.set_tree(PENDING_TREE); |
2191 | 2144 |
2192 // Tile size in the tiling should still be 150x100. | 2145 // Tile size in the tiling should still be 150x100. |
2193 EXPECT_EQ(150, tiling_->TilingDataForTesting().max_texture_size().width()); | 2146 EXPECT_EQ(150, tiling_->TilingDataForTesting().max_texture_size().width()); |
2194 EXPECT_EQ(100, tiling_->TilingDataForTesting().max_texture_size().height()); | 2147 EXPECT_EQ(100, tiling_->TilingDataForTesting().max_texture_size().height()); |
2195 | 2148 |
2196 Region invalidation; | 2149 Region invalidation; |
2197 tiling_->UpdateTilesToCurrentRasterSource(invalidation, gfx::Size(250, 150)); | 2150 tiling_->UpdateTilesToCurrentRasterSource(client_.raster_source(), |
| 2151 invalidation, gfx::Size(250, 150)); |
2198 | 2152 |
2199 // Tile size in the tiling should be resized to 250x200. | 2153 // Tile size in the tiling should be resized to 250x200. |
2200 EXPECT_EQ(250, tiling_->TilingDataForTesting().max_texture_size().width()); | 2154 EXPECT_EQ(250, tiling_->TilingDataForTesting().max_texture_size().width()); |
2201 EXPECT_EQ(200, tiling_->TilingDataForTesting().max_texture_size().height()); | 2155 EXPECT_EQ(200, tiling_->TilingDataForTesting().max_texture_size().height()); |
2202 EXPECT_EQ(0u, tiling_->AllRefTilesForTesting().size()); | 2156 EXPECT_EQ(0u, tiling_->AllRefTilesForTesting().size()); |
2203 } | 2157 } |
2204 | 2158 |
2205 } // namespace | 2159 } // namespace |
2206 } // namespace cc | 2160 } // namespace cc |
OLD | NEW |