Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(468)

Side by Side Diff: cc/layers/picture_layer_impl_unittest.cc

Issue 952893003: Update from https://crrev.com/317530 (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Fix gn for nacl Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « cc/layers/picture_layer_impl_perftest.cc ('k') | cc/layers/scroll_blocks_on.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/layers/picture_layer_impl.h" 5 #include "cc/layers/picture_layer_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <limits> 8 #include <limits>
9 #include <set> 9 #include <set>
10 #include <utility> 10 #include <utility>
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
121 121
122 void ActivateTree() { 122 void ActivateTree() {
123 host_impl_.ActivateSyncTree(); 123 host_impl_.ActivateSyncTree();
124 CHECK(!host_impl_.pending_tree()); 124 CHECK(!host_impl_.pending_tree());
125 CHECK(host_impl_.recycle_tree()); 125 CHECK(host_impl_.recycle_tree());
126 old_pending_layer_ = pending_layer_; 126 old_pending_layer_ = pending_layer_;
127 pending_layer_ = nullptr; 127 pending_layer_ = nullptr;
128 active_layer_ = static_cast<FakePictureLayerImpl*>( 128 active_layer_ = static_cast<FakePictureLayerImpl*>(
129 host_impl_.active_tree()->LayerById(id_)); 129 host_impl_.active_tree()->LayerById(id_));
130 130
131 host_impl_.active_tree()->UpdateDrawProperties(); 131 bool update_lcd_text = false;
132 host_impl_.active_tree()->UpdateDrawProperties(update_lcd_text);
132 } 133 }
133 134
134 void SetupDefaultTreesWithFixedTileSize(const gfx::Size& layer_bounds, 135 void SetupDefaultTreesWithFixedTileSize(const gfx::Size& layer_bounds,
135 const gfx::Size& tile_size, 136 const gfx::Size& tile_size,
136 const Region& invalidation) { 137 const Region& invalidation) {
137 gfx::Size pile_tile_size(100, 100); 138 gfx::Size pile_tile_size(100, 100);
138 139
139 scoped_refptr<FakePicturePileImpl> pending_pile = 140 scoped_refptr<FakePicturePileImpl> pending_pile =
140 FakePicturePileImpl::CreateFilledPile(pile_tile_size, layer_bounds); 141 FakePicturePileImpl::CreateFilledPile(pile_tile_size, layer_bounds);
141 scoped_refptr<FakePicturePileImpl> active_pile = 142 scoped_refptr<FakePicturePileImpl> active_pile =
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
216 pending_layer->SetContentBounds(raster_source->GetSize()); 217 pending_layer->SetContentBounds(raster_source->GetSize());
217 pending_layer->SetRasterSourceOnPending(raster_source, invalidation); 218 pending_layer->SetRasterSourceOnPending(raster_source, invalidation);
218 219
219 pending_root->AddChild(pending_layer.Pass()); 220 pending_root->AddChild(pending_layer.Pass());
220 pending_tree->SetRootLayer(pending_root.Pass()); 221 pending_tree->SetRootLayer(pending_root.Pass());
221 222
222 pending_layer_ = static_cast<FakePictureLayerImpl*>( 223 pending_layer_ = static_cast<FakePictureLayerImpl*>(
223 host_impl_.pending_tree()->LayerById(id_)); 224 host_impl_.pending_tree()->LayerById(id_));
224 225
225 // Add tilings/tiles for the layer. 226 // Add tilings/tiles for the layer.
226 host_impl_.pending_tree()->UpdateDrawProperties(); 227 bool update_lcd_text = false;
228 host_impl_.pending_tree()->UpdateDrawProperties(update_lcd_text);
227 } 229 }
228 230
229 void SetupDrawPropertiesAndUpdateTiles(FakePictureLayerImpl* layer, 231 void SetupDrawPropertiesAndUpdateTiles(FakePictureLayerImpl* layer,
230 float ideal_contents_scale, 232 float ideal_contents_scale,
231 float device_scale_factor, 233 float device_scale_factor,
232 float page_scale_factor, 234 float page_scale_factor,
233 float maximum_animation_contents_scale, 235 float maximum_animation_contents_scale,
234 bool animating_transform_to_screen) { 236 bool animating_transform_to_screen) {
235 layer->draw_properties().ideal_contents_scale = ideal_contents_scale; 237 layer->draw_properties().ideal_contents_scale = ideal_contents_scale;
236 layer->draw_properties().device_scale_factor = device_scale_factor; 238 layer->draw_properties().device_scale_factor = device_scale_factor;
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after
424 gfx::Rect viewport = gfx::Rect(layer_bounds), 426 gfx::Rect viewport = gfx::Rect(layer_bounds),
425 viewport_rect_for_tile_priority = gfx::Rect(0, 0, 100, 100); 427 viewport_rect_for_tile_priority = gfx::Rect(0, 0, 100, 100);
426 gfx::Transform transform, transform_for_tile_priority; 428 gfx::Transform transform, transform_for_tile_priority;
427 429
428 host_impl_.SetExternalDrawConstraints(transform, 430 host_impl_.SetExternalDrawConstraints(transform,
429 viewport, 431 viewport,
430 viewport, 432 viewport,
431 viewport_rect_for_tile_priority, 433 viewport_rect_for_tile_priority,
432 transform_for_tile_priority, 434 transform_for_tile_priority,
433 resourceless_software_draw); 435 resourceless_software_draw);
434 host_impl_.active_tree()->UpdateDrawProperties(); 436 bool update_lcd_text = false;
437 host_impl_.active_tree()->UpdateDrawProperties(update_lcd_text);
435 438
436 gfx::Rect viewport_rect_for_tile_priority_in_view_space = 439 gfx::Rect viewport_rect_for_tile_priority_in_view_space =
437 viewport_rect_for_tile_priority; 440 viewport_rect_for_tile_priority;
438 441
439 // Verify the viewport rect for tile priority is used in picture layer tiling. 442 // Verify the viewport rect for tile priority is used in picture layer tiling.
440 EXPECT_EQ(viewport_rect_for_tile_priority_in_view_space, 443 EXPECT_EQ(viewport_rect_for_tile_priority_in_view_space,
441 active_layer_->viewport_rect_for_tile_priority_in_content_space()); 444 active_layer_->viewport_rect_for_tile_priority_in_content_space());
442 PictureLayerTilingSet* tilings = active_layer_->tilings(); 445 PictureLayerTilingSet* tilings = active_layer_->tilings();
443 for (size_t i = 0; i < tilings->num_tilings(); i++) { 446 for (size_t i = 0; i < tilings->num_tilings(); i++) {
444 PictureLayerTiling* tiling = tilings->tiling_at(i); 447 PictureLayerTiling* tiling = tilings->tiling_at(i);
(...skipping 13 matching lines...) Expand all
458 461
459 viewport_rect_for_tile_priority = gfx::Rect(200, 200, 100, 100); 462 viewport_rect_for_tile_priority = gfx::Rect(200, 200, 100, 100);
460 transform_for_tile_priority.Translate(100, 100); 463 transform_for_tile_priority.Translate(100, 100);
461 transform_for_tile_priority.Rotate(45); 464 transform_for_tile_priority.Rotate(45);
462 host_impl_.SetExternalDrawConstraints(transform, 465 host_impl_.SetExternalDrawConstraints(transform,
463 viewport, 466 viewport,
464 viewport, 467 viewport,
465 viewport_rect_for_tile_priority, 468 viewport_rect_for_tile_priority,
466 transform_for_tile_priority, 469 transform_for_tile_priority,
467 resourceless_software_draw); 470 resourceless_software_draw);
468 host_impl_.active_tree()->UpdateDrawProperties(); 471 host_impl_.active_tree()->UpdateDrawProperties(update_lcd_text);
469 472
470 gfx::Transform screen_to_view(gfx::Transform::kSkipInitialization); 473 gfx::Transform screen_to_view(gfx::Transform::kSkipInitialization);
471 bool success = transform_for_tile_priority.GetInverse(&screen_to_view); 474 bool success = transform_for_tile_priority.GetInverse(&screen_to_view);
472 EXPECT_TRUE(success); 475 EXPECT_TRUE(success);
473 476
474 // Note that we don't clip this to the layer bounds, since it is expected that 477 // Note that we don't clip this to the layer bounds, since it is expected that
475 // the rect will sometimes be outside of the layer bounds. If we clip to 478 // the rect will sometimes be outside of the layer bounds. If we clip to
476 // bounds, then tile priorities will end up being incorrect in cases of fully 479 // bounds, then tile priorities will end up being incorrect in cases of fully
477 // offscreen layer. 480 // offscreen layer.
478 viewport_rect_for_tile_priority_in_view_space = 481 viewport_rect_for_tile_priority_in_view_space =
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
596 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, time_ticks)); 599 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, time_ticks));
597 600
598 bool resourceless_software_draw = false; 601 bool resourceless_software_draw = false;
599 gfx::Rect viewport = gfx::Rect(layer_bounds); 602 gfx::Rect viewport = gfx::Rect(layer_bounds);
600 gfx::Rect viewport_rect_for_tile_priority(0, 0, 100, 100); 603 gfx::Rect viewport_rect_for_tile_priority(0, 0, 100, 100);
601 gfx::Transform transform, transform_for_tile_priority; 604 gfx::Transform transform, transform_for_tile_priority;
602 605
603 host_impl_.SetExternalDrawConstraints( 606 host_impl_.SetExternalDrawConstraints(
604 transform, viewport, viewport, viewport_rect_for_tile_priority, 607 transform, viewport, viewport, viewport_rect_for_tile_priority,
605 transform_for_tile_priority, resourceless_software_draw); 608 transform_for_tile_priority, resourceless_software_draw);
606 host_impl_.active_tree()->UpdateDrawProperties(); 609 bool update_lcd_text = false;
610 host_impl_.active_tree()->UpdateDrawProperties(update_lcd_text);
607 611
608 EXPECT_EQ(viewport_rect_for_tile_priority, 612 EXPECT_EQ(viewport_rect_for_tile_priority,
609 active_layer_->viewport_rect_for_tile_priority_in_content_space()); 613 active_layer_->viewport_rect_for_tile_priority_in_content_space());
610 614
611 time_ticks += base::TimeDelta::FromMilliseconds(200); 615 time_ticks += base::TimeDelta::FromMilliseconds(200);
612 host_impl_.SetCurrentBeginFrameArgs( 616 host_impl_.SetCurrentBeginFrameArgs(
613 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, time_ticks)); 617 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, time_ticks));
614 618
615 gfx::Rect another_viewport_rect_for_tile_priority(11, 11, 50, 50); 619 gfx::Rect another_viewport_rect_for_tile_priority(11, 11, 50, 50);
616 host_impl_.SetExternalDrawConstraints( 620 host_impl_.SetExternalDrawConstraints(
617 transform, viewport, viewport, another_viewport_rect_for_tile_priority, 621 transform, viewport, viewport, another_viewport_rect_for_tile_priority,
618 transform_for_tile_priority, resourceless_software_draw); 622 transform_for_tile_priority, resourceless_software_draw);
619 623
620 // Didn't call UpdateDrawProperties yet. The viewport rect for tile priority 624 // Didn't call UpdateDrawProperties yet. The viewport rect for tile priority
621 // should remain to be the previously cached value. 625 // should remain to be the previously cached value.
622 EXPECT_EQ(viewport_rect_for_tile_priority, 626 EXPECT_EQ(viewport_rect_for_tile_priority,
623 active_layer_->viewport_rect_for_tile_priority_in_content_space()); 627 active_layer_->viewport_rect_for_tile_priority_in_content_space());
624 host_impl_.active_tree()->UpdateDrawProperties(); 628 host_impl_.active_tree()->UpdateDrawProperties(update_lcd_text);
625 629
626 // Now the UpdateDrawProperties is called. The viewport rect for tile 630 // Now the UpdateDrawProperties is called. The viewport rect for tile
627 // priority should be the latest value. 631 // priority should be the latest value.
628 EXPECT_EQ(another_viewport_rect_for_tile_priority, 632 EXPECT_EQ(another_viewport_rect_for_tile_priority,
629 active_layer_->viewport_rect_for_tile_priority_in_content_space()); 633 active_layer_->viewport_rect_for_tile_priority_in_content_space());
630 } 634 }
631 635
632 TEST_F(PictureLayerImplTest, ClonePartialInvalidation) { 636 TEST_F(PictureLayerImplTest, ClonePartialInvalidation) {
633 gfx::Size tile_size(100, 100); 637 gfx::Size tile_size(100, 100);
634 gfx::Size layer_bounds(400, 400); 638 gfx::Size layer_bounds(400, 400);
(...skipping 670 matching lines...) Expand 10 before | Expand all | Expand 10 after
1305 host_impl_.pending_tree(), 3, valid_pile); 1309 host_impl_.pending_tree(), 3, valid_pile);
1306 mask_ptr->SetBounds(layer_bounds); 1310 mask_ptr->SetBounds(layer_bounds);
1307 mask_ptr->SetContentBounds(layer_bounds); 1311 mask_ptr->SetContentBounds(layer_bounds);
1308 mask_ptr->SetDrawsContent(true); 1312 mask_ptr->SetDrawsContent(true);
1309 pending_layer_->SetMaskLayer(mask_ptr.Pass()); 1313 pending_layer_->SetMaskLayer(mask_ptr.Pass());
1310 pending_layer_->SetHasRenderSurface(true); 1314 pending_layer_->SetHasRenderSurface(true);
1311 1315
1312 time_ticks += base::TimeDelta::FromMilliseconds(1); 1316 time_ticks += base::TimeDelta::FromMilliseconds(1);
1313 host_impl_.SetCurrentBeginFrameArgs( 1317 host_impl_.SetCurrentBeginFrameArgs(
1314 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, time_ticks)); 1318 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, time_ticks));
1315 host_impl_.pending_tree()->UpdateDrawProperties(); 1319 bool update_lcd_text = false;
1320 host_impl_.pending_tree()->UpdateDrawProperties(update_lcd_text);
1316 1321
1317 FakePictureLayerImpl* pending_mask = 1322 FakePictureLayerImpl* pending_mask =
1318 static_cast<FakePictureLayerImpl*>(pending_layer_->mask_layer()); 1323 static_cast<FakePictureLayerImpl*>(pending_layer_->mask_layer());
1319 1324
1320 EXPECT_EQ(1.f, pending_mask->HighResTiling()->contents_scale()); 1325 EXPECT_EQ(1.f, pending_mask->HighResTiling()->contents_scale());
1321 EXPECT_EQ(1u, pending_mask->num_tilings()); 1326 EXPECT_EQ(1u, pending_mask->num_tilings());
1322 1327
1323 host_impl_.tile_manager()->InitializeTilesWithResourcesForTesting( 1328 host_impl_.tile_manager()->InitializeTilesWithResourcesForTesting(
1324 pending_mask->HighResTiling()->AllTilesForTesting()); 1329 pending_mask->HighResTiling()->AllTilesForTesting());
1325 1330
(...skipping 29 matching lines...) Expand all
1355 FakePicturePileImpl::CreateFilledPile(tile_size, huge_bounds); 1360 FakePicturePileImpl::CreateFilledPile(tile_size, huge_bounds);
1356 1361
1357 SetupPendingTree(huge_pile); 1362 SetupPendingTree(huge_pile);
1358 pending_mask->SetBounds(huge_bounds); 1363 pending_mask->SetBounds(huge_bounds);
1359 pending_mask->SetContentBounds(huge_bounds); 1364 pending_mask->SetContentBounds(huge_bounds);
1360 pending_mask->SetRasterSourceOnPending(huge_pile, Region()); 1365 pending_mask->SetRasterSourceOnPending(huge_pile, Region());
1361 1366
1362 time_ticks += base::TimeDelta::FromMilliseconds(1); 1367 time_ticks += base::TimeDelta::FromMilliseconds(1);
1363 host_impl_.SetCurrentBeginFrameArgs( 1368 host_impl_.SetCurrentBeginFrameArgs(
1364 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, time_ticks)); 1369 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, time_ticks));
1365 host_impl_.pending_tree()->UpdateDrawProperties(); 1370 host_impl_.pending_tree()->UpdateDrawProperties(update_lcd_text);
1366 1371
1367 // The mask tiling gets scaled down. 1372 // The mask tiling gets scaled down.
1368 EXPECT_LT(pending_mask->HighResTiling()->contents_scale(), 1.f); 1373 EXPECT_LT(pending_mask->HighResTiling()->contents_scale(), 1.f);
1369 EXPECT_EQ(1u, pending_mask->num_tilings()); 1374 EXPECT_EQ(1u, pending_mask->num_tilings());
1370 1375
1371 host_impl_.tile_manager()->InitializeTilesWithResourcesForTesting( 1376 host_impl_.tile_manager()->InitializeTilesWithResourcesForTesting(
1372 pending_mask->HighResTiling()->AllTilesForTesting()); 1377 pending_mask->HighResTiling()->AllTilesForTesting());
1373 1378
1374 ActivateTree(); 1379 ActivateTree();
1375 1380
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
1411 SetupPendingTree(extra_huge_pile); 1416 SetupPendingTree(extra_huge_pile);
1412 pending_mask->SetBounds(extra_huge_bounds); 1417 pending_mask->SetBounds(extra_huge_bounds);
1413 pending_mask->SetContentBounds(extra_huge_bounds); 1418 pending_mask->SetContentBounds(extra_huge_bounds);
1414 pending_mask->SetRasterSourceOnPending(extra_huge_pile, Region()); 1419 pending_mask->SetRasterSourceOnPending(extra_huge_pile, Region());
1415 1420
1416 EXPECT_FALSE(pending_mask->CanHaveTilings()); 1421 EXPECT_FALSE(pending_mask->CanHaveTilings());
1417 1422
1418 time_ticks += base::TimeDelta::FromMilliseconds(1); 1423 time_ticks += base::TimeDelta::FromMilliseconds(1);
1419 host_impl_.SetCurrentBeginFrameArgs( 1424 host_impl_.SetCurrentBeginFrameArgs(
1420 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, time_ticks)); 1425 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, time_ticks));
1421 host_impl_.pending_tree()->UpdateDrawProperties(); 1426 host_impl_.pending_tree()->UpdateDrawProperties(update_lcd_text);
1422 1427
1423 EXPECT_EQ(0u, pending_mask->num_tilings()); 1428 EXPECT_EQ(0u, pending_mask->num_tilings());
1424 } 1429 }
1425 1430
1426 TEST_F(PictureLayerImplTest, ScaledMaskLayer) { 1431 TEST_F(PictureLayerImplTest, ScaledMaskLayer) {
1427 base::TimeTicks time_ticks; 1432 base::TimeTicks time_ticks;
1428 time_ticks += base::TimeDelta::FromMilliseconds(1); 1433 time_ticks += base::TimeDelta::FromMilliseconds(1);
1429 host_impl_.SetCurrentBeginFrameArgs( 1434 host_impl_.SetCurrentBeginFrameArgs(
1430 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, time_ticks)); 1435 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, time_ticks));
1431 1436
(...skipping 11 matching lines...) Expand all
1443 host_impl_.pending_tree(), 3, valid_pile); 1448 host_impl_.pending_tree(), 3, valid_pile);
1444 mask_ptr->SetBounds(layer_bounds); 1449 mask_ptr->SetBounds(layer_bounds);
1445 mask_ptr->SetContentBounds(layer_bounds); 1450 mask_ptr->SetContentBounds(layer_bounds);
1446 mask_ptr->SetDrawsContent(true); 1451 mask_ptr->SetDrawsContent(true);
1447 pending_layer_->SetMaskLayer(mask_ptr.Pass()); 1452 pending_layer_->SetMaskLayer(mask_ptr.Pass());
1448 pending_layer_->SetHasRenderSurface(true); 1453 pending_layer_->SetHasRenderSurface(true);
1449 1454
1450 time_ticks += base::TimeDelta::FromMilliseconds(1); 1455 time_ticks += base::TimeDelta::FromMilliseconds(1);
1451 host_impl_.SetCurrentBeginFrameArgs( 1456 host_impl_.SetCurrentBeginFrameArgs(
1452 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, time_ticks)); 1457 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, time_ticks));
1453 host_impl_.pending_tree()->UpdateDrawProperties(); 1458 bool update_lcd_text = false;
1459 host_impl_.pending_tree()->UpdateDrawProperties(update_lcd_text);
1454 1460
1455 FakePictureLayerImpl* pending_mask = 1461 FakePictureLayerImpl* pending_mask =
1456 static_cast<FakePictureLayerImpl*>(pending_layer_->mask_layer()); 1462 static_cast<FakePictureLayerImpl*>(pending_layer_->mask_layer());
1457 1463
1458 // Masks are scaled, and do not have a low res tiling. 1464 // Masks are scaled, and do not have a low res tiling.
1459 EXPECT_EQ(1.3f, pending_mask->HighResTiling()->contents_scale()); 1465 EXPECT_EQ(1.3f, pending_mask->HighResTiling()->contents_scale());
1460 EXPECT_EQ(1u, pending_mask->num_tilings()); 1466 EXPECT_EQ(1u, pending_mask->num_tilings());
1461 1467
1462 host_impl_.tile_manager()->InitializeTilesWithResourcesForTesting( 1468 host_impl_.tile_manager()->InitializeTilesWithResourcesForTesting(
1463 pending_mask->HighResTiling()->AllTilesForTesting()); 1469 pending_mask->HighResTiling()->AllTilesForTesting());
(...skipping 300 matching lines...) Expand 10 before | Expand all | Expand 10 after
1764 bool resourceless_software_draw = false; 1770 bool resourceless_software_draw = false;
1765 host_impl_.SetExternalDrawConstraints(transform, 1771 host_impl_.SetExternalDrawConstraints(transform,
1766 viewport, 1772 viewport,
1767 viewport, 1773 viewport,
1768 external_viewport_for_tile_priority, 1774 external_viewport_for_tile_priority,
1769 transform_for_tile_priority, 1775 transform_for_tile_priority,
1770 resourceless_software_draw); 1776 resourceless_software_draw);
1771 time_ticks += base::TimeDelta::FromMilliseconds(1); 1777 time_ticks += base::TimeDelta::FromMilliseconds(1);
1772 host_impl_.SetCurrentBeginFrameArgs( 1778 host_impl_.SetCurrentBeginFrameArgs(
1773 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, time_ticks)); 1779 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, time_ticks));
1774 host_impl_.pending_tree()->UpdateDrawProperties(); 1780 bool update_lcd_text = false;
1781 host_impl_.pending_tree()->UpdateDrawProperties(update_lcd_text);
1775 1782
1776 // Set visible content rect that is different from 1783 // Set visible content rect that is different from
1777 // external_viewport_for_tile_priority. 1784 // external_viewport_for_tile_priority.
1778 pending_layer_->draw_properties().visible_content_rect = visible_content_rect; 1785 pending_layer_->draw_properties().visible_content_rect = visible_content_rect;
1779 time_ticks += base::TimeDelta::FromMilliseconds(200); 1786 time_ticks += base::TimeDelta::FromMilliseconds(200);
1780 host_impl_.SetCurrentBeginFrameArgs( 1787 host_impl_.SetCurrentBeginFrameArgs(
1781 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, time_ticks)); 1788 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, time_ticks));
1782 pending_layer_->UpdateTiles(resourceless_software_draw); 1789 pending_layer_->UpdateTiles(resourceless_software_draw);
1783 1790
1784 // Intersect the two rects. Any tile outside should not be required for 1791 // Intersect the two rects. Any tile outside should not be required for
(...skipping 19 matching lines...) Expand all
1804 num_outside++; 1811 num_outside++;
1805 EXPECT_FALSE(tile->required_for_activation()); 1812 EXPECT_FALSE(tile->required_for_activation());
1806 } 1813 }
1807 } 1814 }
1808 1815
1809 EXPECT_GT(num_inside, 0); 1816 EXPECT_GT(num_inside, 0);
1810 EXPECT_GT(num_outside, 0); 1817 EXPECT_GT(num_outside, 0);
1811 1818
1812 // Activate and draw active layer. 1819 // Activate and draw active layer.
1813 host_impl_.ActivateSyncTree(); 1820 host_impl_.ActivateSyncTree();
1814 host_impl_.active_tree()->UpdateDrawProperties(); 1821 host_impl_.active_tree()->UpdateDrawProperties(update_lcd_text);
1815 active_layer_->draw_properties().visible_content_rect = visible_content_rect; 1822 active_layer_->draw_properties().visible_content_rect = visible_content_rect;
1816 1823
1817 scoped_ptr<RenderPass> render_pass = RenderPass::Create(); 1824 scoped_ptr<RenderPass> render_pass = RenderPass::Create();
1818 AppendQuadsData data; 1825 AppendQuadsData data;
1819 active_layer_->WillDraw(DRAW_MODE_SOFTWARE, nullptr); 1826 active_layer_->WillDraw(DRAW_MODE_SOFTWARE, nullptr);
1820 active_layer_->AppendQuads(render_pass.get(), &data); 1827 active_layer_->AppendQuads(render_pass.get(), &data);
1821 active_layer_->DidDraw(nullptr); 1828 active_layer_->DidDraw(nullptr);
1822 1829
1823 // All tiles in activation rect is ready to draw. 1830 // All tiles in activation rect is ready to draw.
1824 EXPECT_EQ(0u, data.num_missing_tiles); 1831 EXPECT_EQ(0u, data.num_missing_tiles);
(...skipping 583 matching lines...) Expand 10 before | Expand all | Expand 10 after
2408 // Toggling the gpu rasterization clears all tilings on both trees. 2415 // Toggling the gpu rasterization clears all tilings on both trees.
2409 host_impl_.SetUseGpuRasterization(true); 2416 host_impl_.SetUseGpuRasterization(true);
2410 EXPECT_EQ(0u, pending_layer_->tilings()->num_tilings()); 2417 EXPECT_EQ(0u, pending_layer_->tilings()->num_tilings());
2411 EXPECT_EQ(0u, active_layer_->tilings()->num_tilings()); 2418 EXPECT_EQ(0u, active_layer_->tilings()->num_tilings());
2412 2419
2413 // Make sure that we can still add tiling to the pending layer, 2420 // Make sure that we can still add tiling to the pending layer,
2414 // that gets synced to the active layer. 2421 // that gets synced to the active layer.
2415 time_ticks += base::TimeDelta::FromMilliseconds(1); 2422 time_ticks += base::TimeDelta::FromMilliseconds(1);
2416 host_impl_.SetCurrentBeginFrameArgs( 2423 host_impl_.SetCurrentBeginFrameArgs(
2417 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, time_ticks)); 2424 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, time_ticks));
2418 host_impl_.pending_tree()->UpdateDrawProperties(); 2425 bool update_lcd_text = false;
2426 host_impl_.pending_tree()->UpdateDrawProperties(update_lcd_text);
2419 EXPECT_TRUE(pending_layer_->tilings()->FindTilingWithScale(1.f)); 2427 EXPECT_TRUE(pending_layer_->tilings()->FindTilingWithScale(1.f));
2420 2428
2421 ActivateTree(); 2429 ActivateTree();
2422 EXPECT_TRUE(active_layer_->tilings()->FindTilingWithScale(1.f)); 2430 EXPECT_TRUE(active_layer_->tilings()->FindTilingWithScale(1.f));
2423 2431
2424 SetupPendingTree(pending_pile); 2432 SetupPendingTree(pending_pile);
2425 EXPECT_TRUE(pending_layer_->tilings()->FindTilingWithScale(1.f)); 2433 EXPECT_TRUE(pending_layer_->tilings()->FindTilingWithScale(1.f));
2426 2434
2427 // Toggling the gpu rasterization clears all tilings on both trees. 2435 // Toggling the gpu rasterization clears all tilings on both trees.
2428 EXPECT_TRUE(host_impl_.use_gpu_rasterization()); 2436 EXPECT_TRUE(host_impl_.use_gpu_rasterization());
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after
2589 2597
2590 SetupTrees(pending_pile, active_pile); 2598 SetupTrees(pending_pile, active_pile);
2591 } 2599 }
2592 }; 2600 };
2593 2601
2594 // This test is really a LayerTreeHostImpl test, in that it makes sure 2602 // This test is really a LayerTreeHostImpl test, in that it makes sure
2595 // that trees need update draw properties after deferred initialization. 2603 // that trees need update draw properties after deferred initialization.
2596 // However, this is also a regression test for PictureLayerImpl in that 2604 // However, this is also a regression test for PictureLayerImpl in that
2597 // not having this update will cause a crash. 2605 // not having this update will cause a crash.
2598 TEST_F(DeferredInitPictureLayerImplTest, PreventUpdateTilesDuringLostContext) { 2606 TEST_F(DeferredInitPictureLayerImplTest, PreventUpdateTilesDuringLostContext) {
2599 host_impl_.pending_tree()->UpdateDrawProperties(); 2607 host_impl_.pending_tree()->UpdateDrawProperties(true);
2600 host_impl_.active_tree()->UpdateDrawProperties(); 2608 host_impl_.active_tree()->UpdateDrawProperties(false);
2601 EXPECT_FALSE(host_impl_.pending_tree()->needs_update_draw_properties()); 2609 EXPECT_FALSE(host_impl_.pending_tree()->needs_update_draw_properties());
2602 EXPECT_FALSE(host_impl_.active_tree()->needs_update_draw_properties()); 2610 EXPECT_FALSE(host_impl_.active_tree()->needs_update_draw_properties());
2603 2611
2604 FakeOutputSurface* fake_output_surface = 2612 FakeOutputSurface* fake_output_surface =
2605 static_cast<FakeOutputSurface*>(host_impl_.output_surface()); 2613 static_cast<FakeOutputSurface*>(host_impl_.output_surface());
2606 ASSERT_TRUE(fake_output_surface->InitializeAndSetContext3d( 2614 ASSERT_TRUE(fake_output_surface->InitializeAndSetContext3d(
2607 TestContextProvider::Create(), TestContextProvider::Create())); 2615 TestContextProvider::Create(), TestContextProvider::Create()));
2608 2616
2609 // These will crash PictureLayerImpl if this is not true. 2617 // These will crash PictureLayerImpl if this is not true.
2610 ASSERT_TRUE(host_impl_.pending_tree()->needs_update_draw_properties()); 2618 ASSERT_TRUE(host_impl_.pending_tree()->needs_update_draw_properties());
2611 ASSERT_TRUE(host_impl_.active_tree()->needs_update_draw_properties()); 2619 ASSERT_TRUE(host_impl_.active_tree()->needs_update_draw_properties());
2612 host_impl_.active_tree()->UpdateDrawProperties(); 2620 host_impl_.active_tree()->UpdateDrawProperties(false);
2613 } 2621 }
2614 2622
2615 TEST_F(PictureLayerImplTest, HighResTilingDuringAnimationForCpuRasterization) { 2623 TEST_F(PictureLayerImplTest, HighResTilingDuringAnimationForCpuRasterization) {
2616 gfx::Size viewport_size(1000, 1000); 2624 gfx::Size viewport_size(1000, 1000);
2617 host_impl_.SetViewportSize(viewport_size); 2625 host_impl_.SetViewportSize(viewport_size);
2618 2626
2619 gfx::Size layer_bounds(100, 100); 2627 gfx::Size layer_bounds(100, 100);
2620 SetupDefaultTrees(layer_bounds); 2628 SetupDefaultTrees(layer_bounds);
2621 2629
2622 float contents_scale = 1.f; 2630 float contents_scale = 1.f;
(...skipping 1225 matching lines...) Expand 10 before | Expand all | Expand 10 after
3848 // raster on demand is not allowed and tile is OOM. 3856 // raster on demand is not allowed and tile is OOM.
3849 gfx::Size tile_size = host_impl_.settings().default_tile_size; 3857 gfx::Size tile_size = host_impl_.settings().default_tile_size;
3850 gfx::Size layer_bounds(1000, 1000); 3858 gfx::Size layer_bounds(1000, 1000);
3851 3859
3852 // Create tiles. 3860 // Create tiles.
3853 scoped_refptr<FakePicturePileImpl> pending_pile = 3861 scoped_refptr<FakePicturePileImpl> pending_pile =
3854 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); 3862 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds);
3855 SetupPendingTree(pending_pile); 3863 SetupPendingTree(pending_pile);
3856 pending_layer_->SetBounds(layer_bounds); 3864 pending_layer_->SetBounds(layer_bounds);
3857 ActivateTree(); 3865 ActivateTree();
3858 host_impl_.active_tree()->UpdateDrawProperties(); 3866 bool update_lcd_text = false;
3867 host_impl_.active_tree()->UpdateDrawProperties(update_lcd_text);
3859 std::vector<Tile*> tiles = 3868 std::vector<Tile*> tiles =
3860 active_layer_->HighResTiling()->AllTilesForTesting(); 3869 active_layer_->HighResTiling()->AllTilesForTesting();
3861 host_impl_.tile_manager()->InitializeTilesWithResourcesForTesting(tiles); 3870 host_impl_.tile_manager()->InitializeTilesWithResourcesForTesting(tiles);
3862 3871
3863 // Force tiles after max_tiles to be OOM. TileManager uses 3872 // Force tiles after max_tiles to be OOM. TileManager uses
3864 // GlobalStateThatImpactsTilesPriority from LayerTreeHostImpl, and we cannot 3873 // GlobalStateThatImpactsTilesPriority from LayerTreeHostImpl, and we cannot
3865 // directly set state to host_impl_, so we set policy that would change the 3874 // directly set state to host_impl_, so we set policy that would change the
3866 // state. We also need to update tree priority separately. 3875 // state. We also need to update tree priority separately.
3867 GlobalStateThatImpactsTilePriority state; 3876 GlobalStateThatImpactsTilePriority state;
3868 size_t max_tiles = 1; 3877 size_t max_tiles = 1;
(...skipping 29 matching lines...) Expand all
3898 class OcclusionTrackingPictureLayerImplTest : public PictureLayerImplTest { 3907 class OcclusionTrackingPictureLayerImplTest : public PictureLayerImplTest {
3899 public: 3908 public:
3900 OcclusionTrackingPictureLayerImplTest() 3909 OcclusionTrackingPictureLayerImplTest()
3901 : PictureLayerImplTest(OcclusionTrackingSettings()) {} 3910 : PictureLayerImplTest(OcclusionTrackingSettings()) {}
3902 3911
3903 void VerifyEvictionConsidersOcclusion(FakePictureLayerImpl* layer, 3912 void VerifyEvictionConsidersOcclusion(FakePictureLayerImpl* layer,
3904 FakePictureLayerImpl* twin_layer, 3913 FakePictureLayerImpl* twin_layer,
3905 WhichTree tree, 3914 WhichTree tree,
3906 size_t expected_occluded_tile_count) { 3915 size_t expected_occluded_tile_count) {
3907 WhichTree twin_tree = tree == ACTIVE_TREE ? PENDING_TREE : ACTIVE_TREE; 3916 WhichTree twin_tree = tree == ACTIVE_TREE ? PENDING_TREE : ACTIVE_TREE;
3908 for (int priority_count = 0; priority_count < NUM_TREE_PRIORITIES; 3917 for (int priority_count = 0; priority_count <= LAST_TREE_PRIORITY;
3909 ++priority_count) { 3918 ++priority_count) {
3910 TreePriority tree_priority = static_cast<TreePriority>(priority_count); 3919 TreePriority tree_priority = static_cast<TreePriority>(priority_count);
3911 size_t occluded_tile_count = 0u; 3920 size_t occluded_tile_count = 0u;
3912 Tile* last_tile = nullptr; 3921 Tile* last_tile = nullptr;
3913 std::set<Tile*> shared_tiles; 3922 std::set<Tile*> shared_tiles;
3914 3923
3915 scoped_ptr<TilingSetEvictionQueue> queue( 3924 scoped_ptr<TilingSetEvictionQueue> queue(
3916 new TilingSetEvictionQueue(layer->picture_layer_tiling_set(), 3925 new TilingSetEvictionQueue(layer->picture_layer_tiling_set(),
3917 tree_priority, layer && twin_layer)); 3926 tree_priority, layer && twin_layer));
3918 while (!queue->IsEmpty()) { 3927 while (!queue->IsEmpty()) {
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
3999 case SMOOTHNESS_TAKES_PRIORITY: 4008 case SMOOTHNESS_TAKES_PRIORITY:
4000 // Shared tiles should be returned only by an active tree 4009 // Shared tiles should be returned only by an active tree
4001 // eviction queue. 4010 // eviction queue.
4002 EXPECT_EQ(PENDING_TREE, tree); 4011 EXPECT_EQ(PENDING_TREE, tree);
4003 break; 4012 break;
4004 case NEW_CONTENT_TAKES_PRIORITY: 4013 case NEW_CONTENT_TAKES_PRIORITY:
4005 // Shared tiles should be returned only by a pending tree 4014 // Shared tiles should be returned only by a pending tree
4006 // eviction queue. 4015 // eviction queue.
4007 EXPECT_EQ(ACTIVE_TREE, tree); 4016 EXPECT_EQ(ACTIVE_TREE, tree);
4008 break; 4017 break;
4009 case NUM_TREE_PRIORITIES:
4010 NOTREACHED();
4011 break;
4012 } 4018 }
4013 } 4019 }
4014 queue->Pop(); 4020 queue->Pop();
4015 } 4021 }
4016 EXPECT_EQ(expected_occluded_tile_count, occluded_tile_count); 4022 EXPECT_EQ(expected_occluded_tile_count, occluded_tile_count);
4017 } 4023 }
4018 } 4024 }
4019 }; 4025 };
4020 4026
4021 TEST_F(OcclusionTrackingPictureLayerImplTest, 4027 TEST_F(OcclusionTrackingPictureLayerImplTest,
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
4061 LayerImpl* layer1 = pending_layer_->children()[0]; 4067 LayerImpl* layer1 = pending_layer_->children()[0];
4062 layer1->SetBounds(layer_bounds); 4068 layer1->SetBounds(layer_bounds);
4063 layer1->SetContentBounds(layer_bounds); 4069 layer1->SetContentBounds(layer_bounds);
4064 layer1->SetDrawsContent(true); 4070 layer1->SetDrawsContent(true);
4065 layer1->SetContentsOpaque(true); 4071 layer1->SetContentsOpaque(true);
4066 layer1->SetPosition(occluding_layer_position); 4072 layer1->SetPosition(occluding_layer_position);
4067 4073
4068 time_ticks += base::TimeDelta::FromMilliseconds(200); 4074 time_ticks += base::TimeDelta::FromMilliseconds(200);
4069 host_impl_.SetCurrentBeginFrameArgs( 4075 host_impl_.SetCurrentBeginFrameArgs(
4070 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, time_ticks)); 4076 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, time_ticks));
4071 host_impl_.pending_tree()->UpdateDrawProperties(); 4077 bool update_lcd_text = false;
4078 host_impl_.pending_tree()->UpdateDrawProperties(update_lcd_text);
4072 4079
4073 unoccluded_tile_count = 0; 4080 unoccluded_tile_count = 0;
4074 queue.reset(new TilingSetRasterQueueAll( 4081 queue.reset(new TilingSetRasterQueueAll(
4075 pending_layer_->picture_layer_tiling_set(), false)); 4082 pending_layer_->picture_layer_tiling_set(), false));
4076 while (!queue->IsEmpty()) { 4083 while (!queue->IsEmpty()) {
4077 Tile* tile = queue->Top(); 4084 Tile* tile = queue->Top();
4078 4085
4079 EXPECT_FALSE(tile->is_occluded(PENDING_TREE)); 4086 EXPECT_FALSE(tile->is_occluded(PENDING_TREE));
4080 4087
4081 bool tile_is_visible = 4088 bool tile_is_visible =
4082 tile->content_rect().Intersects(pending_layer_->visible_content_rect()); 4089 tile->content_rect().Intersects(pending_layer_->visible_content_rect());
4083 if (tile_is_visible) 4090 if (tile_is_visible)
4084 unoccluded_tile_count++; 4091 unoccluded_tile_count++;
4085 queue->Pop(); 4092 queue->Pop();
4086 } 4093 }
4087 EXPECT_EQ(20, unoccluded_tile_count); 4094 EXPECT_EQ(20, unoccluded_tile_count);
4088 4095
4089 // Full occlusion. 4096 // Full occlusion.
4090 layer1->SetPosition(gfx::Point(0, 0)); 4097 layer1->SetPosition(gfx::Point(0, 0));
4091 4098
4092 time_ticks += base::TimeDelta::FromMilliseconds(200); 4099 time_ticks += base::TimeDelta::FromMilliseconds(200);
4093 host_impl_.SetCurrentBeginFrameArgs( 4100 host_impl_.SetCurrentBeginFrameArgs(
4094 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, time_ticks)); 4101 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, time_ticks));
4095 host_impl_.pending_tree()->UpdateDrawProperties(); 4102 host_impl_.pending_tree()->UpdateDrawProperties(update_lcd_text);
4096 4103
4097 unoccluded_tile_count = 0; 4104 unoccluded_tile_count = 0;
4098 queue.reset(new TilingSetRasterQueueAll( 4105 queue.reset(new TilingSetRasterQueueAll(
4099 pending_layer_->picture_layer_tiling_set(), false)); 4106 pending_layer_->picture_layer_tiling_set(), false));
4100 while (!queue->IsEmpty()) { 4107 while (!queue->IsEmpty()) {
4101 Tile* tile = queue->Top(); 4108 Tile* tile = queue->Top();
4102 4109
4103 EXPECT_FALSE(tile->is_occluded(PENDING_TREE)); 4110 EXPECT_FALSE(tile->is_occluded(PENDING_TREE));
4104 4111
4105 bool tile_is_visible = 4112 bool tile_is_visible =
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
4159 LayerImpl* layer1 = pending_layer_->children()[0]; 4166 LayerImpl* layer1 = pending_layer_->children()[0];
4160 layer1->SetBounds(layer_bounds); 4167 layer1->SetBounds(layer_bounds);
4161 layer1->SetContentBounds(layer_bounds); 4168 layer1->SetContentBounds(layer_bounds);
4162 layer1->SetDrawsContent(true); 4169 layer1->SetDrawsContent(true);
4163 layer1->SetContentsOpaque(true); 4170 layer1->SetContentsOpaque(true);
4164 layer1->SetPosition(occluding_layer_position); 4171 layer1->SetPosition(occluding_layer_position);
4165 4172
4166 time_ticks += base::TimeDelta::FromMilliseconds(200); 4173 time_ticks += base::TimeDelta::FromMilliseconds(200);
4167 host_impl_.SetCurrentBeginFrameArgs( 4174 host_impl_.SetCurrentBeginFrameArgs(
4168 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, time_ticks)); 4175 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, time_ticks));
4169 host_impl_.pending_tree()->UpdateDrawProperties(); 4176 bool update_lcd_text = false;
4177 host_impl_.pending_tree()->UpdateDrawProperties(update_lcd_text);
4170 4178
4171 for (size_t i = 0; i < pending_layer_->num_tilings(); ++i) { 4179 for (size_t i = 0; i < pending_layer_->num_tilings(); ++i) {
4172 PictureLayerTiling* tiling = pending_layer_->tilings()->tiling_at(i); 4180 PictureLayerTiling* tiling = pending_layer_->tilings()->tiling_at(i);
4173 tiling->UpdateAllTilePrioritiesForTesting(); 4181 tiling->UpdateAllTilePrioritiesForTesting();
4174 4182
4175 occluded_tile_count = 0; 4183 occluded_tile_count = 0;
4176 for (PictureLayerTiling::CoverageIterator iter( 4184 for (PictureLayerTiling::CoverageIterator iter(
4177 tiling, 4185 tiling,
4178 pending_layer_->contents_scale_x(), 4186 pending_layer_->contents_scale_x(),
4179 gfx::Rect(layer_bounds)); 4187 gfx::Rect(layer_bounds));
(...skipping 19 matching lines...) Expand all
4199 NOTREACHED(); 4207 NOTREACHED();
4200 } 4208 }
4201 } 4209 }
4202 4210
4203 // Full occlusion. 4211 // Full occlusion.
4204 layer1->SetPosition(gfx::PointF(0, 0)); 4212 layer1->SetPosition(gfx::PointF(0, 0));
4205 4213
4206 time_ticks += base::TimeDelta::FromMilliseconds(200); 4214 time_ticks += base::TimeDelta::FromMilliseconds(200);
4207 host_impl_.SetCurrentBeginFrameArgs( 4215 host_impl_.SetCurrentBeginFrameArgs(
4208 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, time_ticks)); 4216 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, time_ticks));
4209 host_impl_.pending_tree()->UpdateDrawProperties(); 4217 host_impl_.pending_tree()->UpdateDrawProperties(update_lcd_text);
4210 4218
4211 for (size_t i = 0; i < pending_layer_->num_tilings(); ++i) { 4219 for (size_t i = 0; i < pending_layer_->num_tilings(); ++i) {
4212 PictureLayerTiling* tiling = pending_layer_->tilings()->tiling_at(i); 4220 PictureLayerTiling* tiling = pending_layer_->tilings()->tiling_at(i);
4213 tiling->UpdateAllTilePrioritiesForTesting(); 4221 tiling->UpdateAllTilePrioritiesForTesting();
4214 4222
4215 occluded_tile_count = 0; 4223 occluded_tile_count = 0;
4216 for (PictureLayerTiling::CoverageIterator iter( 4224 for (PictureLayerTiling::CoverageIterator iter(
4217 tiling, 4225 tiling,
4218 pending_layer_->contents_scale_x(), 4226 pending_layer_->contents_scale_x(),
4219 gfx::Rect(layer_bounds)); 4227 gfx::Rect(layer_bounds));
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
4273 pending_layer_->AddTiling(low_res_factor); 4281 pending_layer_->AddTiling(low_res_factor);
4274 pending_layer_->AddTiling(0.3f); 4282 pending_layer_->AddTiling(0.3f);
4275 pending_layer_->AddTiling(0.7f); 4283 pending_layer_->AddTiling(0.7f);
4276 pending_layer_->AddTiling(1.0f); 4284 pending_layer_->AddTiling(1.0f);
4277 pending_layer_->AddTiling(2.0f); 4285 pending_layer_->AddTiling(2.0f);
4278 4286
4279 time_ticks += base::TimeDelta::FromMilliseconds(1); 4287 time_ticks += base::TimeDelta::FromMilliseconds(1);
4280 host_impl_.SetCurrentBeginFrameArgs( 4288 host_impl_.SetCurrentBeginFrameArgs(
4281 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, time_ticks)); 4289 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, time_ticks));
4282 // UpdateDrawProperties with the occluding layer. 4290 // UpdateDrawProperties with the occluding layer.
4283 host_impl_.pending_tree()->UpdateDrawProperties(); 4291 bool update_lcd_text = false;
4292 host_impl_.pending_tree()->UpdateDrawProperties(update_lcd_text);
4284 4293
4285 EXPECT_EQ(5u, pending_layer_->num_tilings()); 4294 EXPECT_EQ(5u, pending_layer_->num_tilings());
4286 4295
4287 int occluded_tile_count = 0; 4296 int occluded_tile_count = 0;
4288 for (size_t i = 0; i < pending_layer_->num_tilings(); ++i) { 4297 for (size_t i = 0; i < pending_layer_->num_tilings(); ++i) {
4289 PictureLayerTiling* tiling = pending_layer_->tilings()->tiling_at(i); 4298 PictureLayerTiling* tiling = pending_layer_->tilings()->tiling_at(i);
4290 tiling->UpdateAllTilePrioritiesForTesting(); 4299 tiling->UpdateAllTilePrioritiesForTesting();
4291 std::vector<Tile*> tiles = tiling->AllTilesForTesting(); 4300 std::vector<Tile*> tiles = tiling->AllTilesForTesting();
4292 4301
4293 occluded_tile_count = 0; 4302 occluded_tile_count = 0;
(...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after
4472 pending_occluding_layer->SetContentsOpaque(true); 4481 pending_occluding_layer->SetContentsOpaque(true);
4473 pending_occluding_layer->SetPosition(pending_occluding_layer_position); 4482 pending_occluding_layer->SetPosition(pending_occluding_layer_position);
4474 4483
4475 EXPECT_EQ(2u, pending_layer_->num_tilings()); 4484 EXPECT_EQ(2u, pending_layer_->num_tilings());
4476 EXPECT_EQ(2u, active_layer_->num_tilings()); 4485 EXPECT_EQ(2u, active_layer_->num_tilings());
4477 4486
4478 time_ticks += base::TimeDelta::FromMilliseconds(1); 4487 time_ticks += base::TimeDelta::FromMilliseconds(1);
4479 host_impl_.SetCurrentBeginFrameArgs( 4488 host_impl_.SetCurrentBeginFrameArgs(
4480 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, time_ticks)); 4489 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, time_ticks));
4481 // UpdateDrawProperties with the occluding layer. 4490 // UpdateDrawProperties with the occluding layer.
4482 host_impl_.pending_tree()->UpdateDrawProperties(); 4491 bool update_lcd_text = false;
4492 host_impl_.pending_tree()->UpdateDrawProperties(update_lcd_text);
4483 4493
4484 // The expected number of occluded tiles on each of the 2 tilings for each of 4494 // The expected number of occluded tiles on each of the 2 tilings for each of
4485 // the 3 tree priorities. 4495 // the 3 tree priorities.
4486 size_t expected_occluded_tile_count_on_both[] = {9u, 1u}; 4496 size_t expected_occluded_tile_count_on_both[] = {9u, 1u};
4487 size_t expected_occluded_tile_count_on_active[] = {30u, 3u}; 4497 size_t expected_occluded_tile_count_on_active[] = {30u, 3u};
4488 size_t expected_occluded_tile_count_on_pending[] = {30u, 3u}; 4498 size_t expected_occluded_tile_count_on_pending[] = {30u, 3u};
4489 4499
4490 size_t total_expected_occluded_tile_count_on_trees[] = {33u, 33u}; 4500 size_t total_expected_occluded_tile_count_on_trees[] = {33u, 33u};
4491 4501
4492 // Verify number of occluded tiles on the pending layer for each tiling. 4502 // Verify number of occluded tiles on the pending layer for each tiling.
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after
4663 scoped_ptr<FakeLayerTreeHost> host = FakeLayerTreeHost::Create(&host_client); 4673 scoped_ptr<FakeLayerTreeHost> host = FakeLayerTreeHost::Create(&host_client);
4664 host->SetRootLayer(layer); 4674 host->SetRootLayer(layer);
4665 RecordingSource* recording_source = layer->GetRecordingSourceForTesting(); 4675 RecordingSource* recording_source = layer->GetRecordingSourceForTesting();
4666 4676
4667 int frame_number = 0; 4677 int frame_number = 0;
4668 4678
4669 client.set_fill_with_nonsolid_color(!test_for_solid); 4679 client.set_fill_with_nonsolid_color(!test_for_solid);
4670 4680
4671 Region invalidation(layer_rect); 4681 Region invalidation(layer_rect);
4672 recording_source->UpdateAndExpandInvalidation( 4682 recording_source->UpdateAndExpandInvalidation(
4673 &client, &invalidation, false, layer_bounds, layer_rect, frame_number++, 4683 &client, &invalidation, layer_bounds, layer_rect, frame_number++,
4674 RecordingSource::RECORD_NORMALLY); 4684 RecordingSource::RECORD_NORMALLY);
4675 4685
4676 scoped_refptr<RasterSource> pending_raster_source = 4686 scoped_refptr<RasterSource> pending_raster_source =
4677 recording_source->CreateRasterSource(); 4687 recording_source->CreateRasterSource(true);
4678 4688
4679 SetupPendingTreeWithFixedTileSize(pending_raster_source, tile_size, Region()); 4689 SetupPendingTreeWithFixedTileSize(pending_raster_source, tile_size, Region());
4680 ActivateTree(); 4690 ActivateTree();
4681 4691
4682 if (test_for_solid) { 4692 if (test_for_solid) {
4683 EXPECT_EQ(0u, active_layer_->tilings()->num_tilings()); 4693 EXPECT_EQ(0u, active_layer_->tilings()->num_tilings());
4684 } else { 4694 } else {
4685 ASSERT_TRUE(active_layer_->tilings()); 4695 ASSERT_TRUE(active_layer_->tilings());
4686 ASSERT_GT(active_layer_->tilings()->num_tilings(), 0u); 4696 ASSERT_GT(active_layer_->tilings()->num_tilings(), 0u);
4687 std::vector<Tile*> tiles = 4697 std::vector<Tile*> tiles =
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
4726 scoped_ptr<FakeLayerTreeHost> host = FakeLayerTreeHost::Create(&host_client); 4736 scoped_ptr<FakeLayerTreeHost> host = FakeLayerTreeHost::Create(&host_client);
4727 host->SetRootLayer(layer); 4737 host->SetRootLayer(layer);
4728 RecordingSource* recording_source = layer->GetRecordingSourceForTesting(); 4738 RecordingSource* recording_source = layer->GetRecordingSourceForTesting();
4729 4739
4730 int frame_number = 0; 4740 int frame_number = 0;
4731 4741
4732 client.set_fill_with_nonsolid_color(true); 4742 client.set_fill_with_nonsolid_color(true);
4733 4743
4734 Region invalidation1(layer_rect); 4744 Region invalidation1(layer_rect);
4735 recording_source->UpdateAndExpandInvalidation( 4745 recording_source->UpdateAndExpandInvalidation(
4736 &client, &invalidation1, false, layer_bounds, layer_rect, frame_number++, 4746 &client, &invalidation1, layer_bounds, layer_rect, frame_number++,
4737 RecordingSource::RECORD_NORMALLY); 4747 RecordingSource::RECORD_NORMALLY);
4738 4748
4739 scoped_refptr<RasterSource> raster_source1 = 4749 scoped_refptr<RasterSource> raster_source1 =
4740 recording_source->CreateRasterSource(); 4750 recording_source->CreateRasterSource(true);
4741 4751
4742 SetupPendingTree(raster_source1); 4752 SetupPendingTree(raster_source1);
4743 ActivateTree(); 4753 ActivateTree();
4744 host_impl_.active_tree()->UpdateDrawProperties(); 4754 bool update_lcd_text = false;
4755 host_impl_.active_tree()->UpdateDrawProperties(update_lcd_text);
4745 4756
4746 // We've started with a solid layer that contains some tilings. 4757 // We've started with a solid layer that contains some tilings.
4747 ASSERT_TRUE(active_layer_->tilings()); 4758 ASSERT_TRUE(active_layer_->tilings());
4748 EXPECT_NE(0u, active_layer_->tilings()->num_tilings()); 4759 EXPECT_NE(0u, active_layer_->tilings()->num_tilings());
4749 4760
4750 client.set_fill_with_nonsolid_color(false); 4761 client.set_fill_with_nonsolid_color(false);
4751 4762
4752 Region invalidation2(layer_rect); 4763 Region invalidation2(layer_rect);
4753 recording_source->UpdateAndExpandInvalidation( 4764 recording_source->UpdateAndExpandInvalidation(
4754 &client, &invalidation2, false, layer_bounds, layer_rect, frame_number++, 4765 &client, &invalidation2, layer_bounds, layer_rect, frame_number++,
4755 RecordingSource::RECORD_NORMALLY); 4766 RecordingSource::RECORD_NORMALLY);
4756 4767
4757 scoped_refptr<RasterSource> raster_source2 = 4768 scoped_refptr<RasterSource> raster_source2 =
4758 recording_source->CreateRasterSource(); 4769 recording_source->CreateRasterSource(true);
4759 4770
4760 SetupPendingTree(raster_source2); 4771 SetupPendingTree(raster_source2);
4761 ActivateTree(); 4772 ActivateTree();
4762 4773
4763 // We've switched to a solid color, so we should end up with no tilings. 4774 // We've switched to a solid color, so we should end up with no tilings.
4764 ASSERT_TRUE(active_layer_->tilings()); 4775 ASSERT_TRUE(active_layer_->tilings());
4765 EXPECT_EQ(0u, active_layer_->tilings()->num_tilings()); 4776 EXPECT_EQ(0u, active_layer_->tilings()->num_tilings());
4766 } 4777 }
4767 4778
4768 TEST_F(PictureLayerImplTest, ChangeInViewportAllowsTilingUpdates) { 4779 TEST_F(PictureLayerImplTest, ChangeInViewportAllowsTilingUpdates) {
(...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after
4947 result = layer->CalculateTileSize(gfx::Size(447, 400)); 4958 result = layer->CalculateTileSize(gfx::Size(447, 400));
4948 EXPECT_EQ(result.width(), 448); 4959 EXPECT_EQ(result.width(), 448);
4949 EXPECT_EQ(result.height(), 448); 4960 EXPECT_EQ(result.height(), 448);
4950 result = layer->CalculateTileSize(gfx::Size(500, 499)); 4961 result = layer->CalculateTileSize(gfx::Size(500, 499));
4951 EXPECT_EQ(result.width(), 512); 4962 EXPECT_EQ(result.width(), 512);
4952 EXPECT_EQ(result.height(), 500 + 2); 4963 EXPECT_EQ(result.height(), 500 + 2);
4953 } 4964 }
4954 4965
4955 } // namespace 4966 } // namespace
4956 } // namespace cc 4967 } // namespace cc
OLDNEW
« no previous file with comments | « cc/layers/picture_layer_impl_perftest.cc ('k') | cc/layers/scroll_blocks_on.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698