OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "cc/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> |
11 | 11 |
12 #include "cc/base/math_util.h" | 12 #include "cc/base/math_util.h" |
13 #include "cc/layers/append_quads_data.h" | 13 #include "cc/layers/append_quads_data.h" |
14 #include "cc/layers/picture_layer.h" | 14 #include "cc/layers/picture_layer.h" |
15 #include "cc/quads/draw_quad.h" | 15 #include "cc/quads/draw_quad.h" |
| 16 #include "cc/test/begin_frame_args_test.h" |
16 #include "cc/test/fake_content_layer_client.h" | 17 #include "cc/test/fake_content_layer_client.h" |
17 #include "cc/test/fake_impl_proxy.h" | 18 #include "cc/test/fake_impl_proxy.h" |
18 #include "cc/test/fake_layer_tree_host_impl.h" | 19 #include "cc/test/fake_layer_tree_host_impl.h" |
19 #include "cc/test/fake_output_surface.h" | 20 #include "cc/test/fake_output_surface.h" |
20 #include "cc/test/fake_picture_layer_impl.h" | 21 #include "cc/test/fake_picture_layer_impl.h" |
21 #include "cc/test/fake_picture_pile_impl.h" | 22 #include "cc/test/fake_picture_pile_impl.h" |
22 #include "cc/test/geometry_test_utils.h" | 23 #include "cc/test/geometry_test_utils.h" |
23 #include "cc/test/impl_side_painting_settings.h" | 24 #include "cc/test/impl_side_painting_settings.h" |
24 #include "cc/test/layer_test_common.h" | 25 #include "cc/test/layer_test_common.h" |
25 #include "cc/test/test_shared_bitmap_manager.h" | 26 #include "cc/test/test_shared_bitmap_manager.h" |
(...skipping 273 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
299 | 300 |
300 const PictureLayerTilingSet* tilings = pending_layer_->tilings(); | 301 const PictureLayerTilingSet* tilings = pending_layer_->tilings(); |
301 EXPECT_GT(tilings->num_tilings(), 0u); | 302 EXPECT_GT(tilings->num_tilings(), 0u); |
302 for (size_t i = 0; i < tilings->num_tilings(); ++i) | 303 for (size_t i = 0; i < tilings->num_tilings(); ++i) |
303 VerifyAllTilesExistAndHavePile(tilings->tiling_at(i), active_pile.get()); | 304 VerifyAllTilesExistAndHavePile(tilings->tiling_at(i), active_pile.get()); |
304 } | 305 } |
305 | 306 |
306 TEST_F(PictureLayerImplTest, ExternalViewportRectForPrioritizingTiles) { | 307 TEST_F(PictureLayerImplTest, ExternalViewportRectForPrioritizingTiles) { |
307 base::TimeTicks time_ticks; | 308 base::TimeTicks time_ticks; |
308 time_ticks += base::TimeDelta::FromMilliseconds(1); | 309 time_ticks += base::TimeDelta::FromMilliseconds(1); |
309 host_impl_.SetCurrentFrameTimeTicks(time_ticks); | 310 host_impl_.SetCurrentBeginFrameArgs( |
| 311 CreateBeginFrameArgsForTesting(time_ticks)); |
310 gfx::Size tile_size(100, 100); | 312 gfx::Size tile_size(100, 100); |
311 gfx::Size layer_bounds(400, 400); | 313 gfx::Size layer_bounds(400, 400); |
312 | 314 |
313 scoped_refptr<FakePicturePileImpl> pending_pile = | 315 scoped_refptr<FakePicturePileImpl> pending_pile = |
314 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 316 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); |
315 scoped_refptr<FakePicturePileImpl> active_pile = | 317 scoped_refptr<FakePicturePileImpl> active_pile = |
316 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 318 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); |
317 | 319 |
318 SetupTrees(pending_pile, active_pile); | 320 SetupTrees(pending_pile, active_pile); |
319 | 321 |
320 Region invalidation; | 322 Region invalidation; |
321 AddDefaultTilingsWithInvalidation(invalidation); | 323 AddDefaultTilingsWithInvalidation(invalidation); |
322 SetupDrawPropertiesAndUpdateTiles(active_layer_, 1.f, 1.f, 1.f, 1.f, false); | 324 SetupDrawPropertiesAndUpdateTiles(active_layer_, 1.f, 1.f, 1.f, 1.f, false); |
323 | 325 |
324 time_ticks += base::TimeDelta::FromMilliseconds(200); | 326 time_ticks += base::TimeDelta::FromMilliseconds(200); |
325 host_impl_.SetCurrentFrameTimeTicks(time_ticks); | 327 host_impl_.SetCurrentBeginFrameArgs( |
| 328 CreateBeginFrameArgsForTesting(time_ticks)); |
326 | 329 |
327 // Update tiles with viewport for tile priority as (0, 0, 100, 100) and the | 330 // Update tiles with viewport for tile priority as (0, 0, 100, 100) and the |
328 // identify transform for tile priority. | 331 // identify transform for tile priority. |
329 bool resourceless_software_draw = false; | 332 bool resourceless_software_draw = false; |
330 gfx::Rect viewport = gfx::Rect(layer_bounds), | 333 gfx::Rect viewport = gfx::Rect(layer_bounds), |
331 viewport_rect_for_tile_priority = gfx::Rect(0, 0, 100, 100); | 334 viewport_rect_for_tile_priority = gfx::Rect(0, 0, 100, 100); |
332 gfx::Transform transform, transform_for_tile_priority; | 335 gfx::Transform transform, transform_for_tile_priority; |
333 | 336 |
334 host_impl_.SetExternalDrawConstraints(transform, | 337 host_impl_.SetExternalDrawConstraints(transform, |
335 viewport, | 338 viewport, |
(...skipping 20 matching lines...) Expand all Loading... |
356 tiling->GetCurrentVisibleRectForTesting(), | 359 tiling->GetCurrentVisibleRectForTesting(), |
357 gfx::ScaleToEnclosingRect(viewport_rect_for_tile_priority_in_view_space, | 360 gfx::ScaleToEnclosingRect(viewport_rect_for_tile_priority_in_view_space, |
358 tiling->contents_scale())); | 361 tiling->contents_scale())); |
359 } | 362 } |
360 | 363 |
361 // Update tiles with viewport for tile priority as (200, 200, 100, 100) in | 364 // Update tiles with viewport for tile priority as (200, 200, 100, 100) in |
362 // screen space and the transform for tile priority is translated and | 365 // screen space and the transform for tile priority is translated and |
363 // rotated. The actual viewport for tile priority used by PictureLayerImpl | 366 // rotated. The actual viewport for tile priority used by PictureLayerImpl |
364 // should be (200, 200, 100, 100) applied with the said transform. | 367 // should be (200, 200, 100, 100) applied with the said transform. |
365 time_ticks += base::TimeDelta::FromMilliseconds(200); | 368 time_ticks += base::TimeDelta::FromMilliseconds(200); |
366 host_impl_.SetCurrentFrameTimeTicks(time_ticks); | 369 host_impl_.SetCurrentBeginFrameArgs( |
| 370 CreateBeginFrameArgsForTesting(time_ticks)); |
367 | 371 |
368 viewport_rect_for_tile_priority = gfx::Rect(200, 200, 100, 100); | 372 viewport_rect_for_tile_priority = gfx::Rect(200, 200, 100, 100); |
369 transform_for_tile_priority.Translate(100, 100); | 373 transform_for_tile_priority.Translate(100, 100); |
370 transform_for_tile_priority.Rotate(45); | 374 transform_for_tile_priority.Rotate(45); |
371 host_impl_.SetExternalDrawConstraints(transform, | 375 host_impl_.SetExternalDrawConstraints(transform, |
372 viewport, | 376 viewport, |
373 viewport, | 377 viewport, |
374 viewport_rect_for_tile_priority, | 378 viewport_rect_for_tile_priority, |
375 transform_for_tile_priority, | 379 transform_for_tile_priority, |
376 resourceless_software_draw); | 380 resourceless_software_draw); |
(...skipping 23 matching lines...) Expand all Loading... |
400 EXPECT_EQ( | 404 EXPECT_EQ( |
401 tiling->GetCurrentVisibleRectForTesting(), | 405 tiling->GetCurrentVisibleRectForTesting(), |
402 gfx::ScaleToEnclosingRect(viewport_rect_for_tile_priority_in_view_space, | 406 gfx::ScaleToEnclosingRect(viewport_rect_for_tile_priority_in_view_space, |
403 tiling->contents_scale())); | 407 tiling->contents_scale())); |
404 } | 408 } |
405 } | 409 } |
406 | 410 |
407 TEST_F(PictureLayerImplTest, InvalidViewportForPrioritizingTiles) { | 411 TEST_F(PictureLayerImplTest, InvalidViewportForPrioritizingTiles) { |
408 base::TimeTicks time_ticks; | 412 base::TimeTicks time_ticks; |
409 time_ticks += base::TimeDelta::FromMilliseconds(1); | 413 time_ticks += base::TimeDelta::FromMilliseconds(1); |
410 host_impl_.SetCurrentFrameTimeTicks(time_ticks); | 414 host_impl_.SetCurrentBeginFrameArgs( |
| 415 CreateBeginFrameArgsForTesting(time_ticks)); |
411 | 416 |
412 gfx::Size tile_size(100, 100); | 417 gfx::Size tile_size(100, 100); |
413 gfx::Size layer_bounds(400, 400); | 418 gfx::Size layer_bounds(400, 400); |
414 | 419 |
415 scoped_refptr<FakePicturePileImpl> pending_pile = | 420 scoped_refptr<FakePicturePileImpl> pending_pile = |
416 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 421 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); |
417 scoped_refptr<FakePicturePileImpl> active_pile = | 422 scoped_refptr<FakePicturePileImpl> active_pile = |
418 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 423 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); |
419 | 424 |
420 SetupTrees(pending_pile, active_pile); | 425 SetupTrees(pending_pile, active_pile); |
(...skipping 23 matching lines...) Expand all Loading... |
444 EXPECT_FALSE(visible_rect_for_tile_priority.IsEmpty()); | 449 EXPECT_FALSE(visible_rect_for_tile_priority.IsEmpty()); |
445 gfx::Rect viewport_rect_for_tile_priority = | 450 gfx::Rect viewport_rect_for_tile_priority = |
446 active_layer_->viewport_rect_for_tile_priority(); | 451 active_layer_->viewport_rect_for_tile_priority(); |
447 EXPECT_FALSE(viewport_rect_for_tile_priority.IsEmpty()); | 452 EXPECT_FALSE(viewport_rect_for_tile_priority.IsEmpty()); |
448 gfx::Transform screen_space_transform_for_tile_priority = | 453 gfx::Transform screen_space_transform_for_tile_priority = |
449 active_layer_->screen_space_transform_for_tile_priority(); | 454 active_layer_->screen_space_transform_for_tile_priority(); |
450 | 455 |
451 // Expand viewport and set it as invalid for prioritizing tiles. | 456 // Expand viewport and set it as invalid for prioritizing tiles. |
452 // Should not update tile viewport. | 457 // Should not update tile viewport. |
453 time_ticks += base::TimeDelta::FromMilliseconds(200); | 458 time_ticks += base::TimeDelta::FromMilliseconds(200); |
454 host_impl_.SetCurrentFrameTimeTicks(time_ticks); | 459 host_impl_.SetCurrentBeginFrameArgs( |
| 460 CreateBeginFrameArgsForTesting(time_ticks)); |
455 resourceless_software_draw = true; | 461 resourceless_software_draw = true; |
456 viewport = gfx::ScaleToEnclosingRect(viewport, 2); | 462 viewport = gfx::ScaleToEnclosingRect(viewport, 2); |
457 transform.Translate(1.f, 1.f); | 463 transform.Translate(1.f, 1.f); |
458 active_layer_->draw_properties().visible_content_rect = viewport; | 464 active_layer_->draw_properties().visible_content_rect = viewport; |
459 active_layer_->draw_properties().screen_space_transform = transform; | 465 active_layer_->draw_properties().screen_space_transform = transform; |
460 host_impl_.SetExternalDrawConstraints(transform, | 466 host_impl_.SetExternalDrawConstraints(transform, |
461 viewport, | 467 viewport, |
462 viewport, | 468 viewport, |
463 viewport, | 469 viewport, |
464 transform, | 470 transform, |
465 resourceless_software_draw); | 471 resourceless_software_draw); |
466 active_layer_->UpdateTiles(NULL); | 472 active_layer_->UpdateTiles(NULL); |
467 | 473 |
468 EXPECT_RECT_EQ(visible_rect_for_tile_priority, | 474 EXPECT_RECT_EQ(visible_rect_for_tile_priority, |
469 active_layer_->visible_rect_for_tile_priority()); | 475 active_layer_->visible_rect_for_tile_priority()); |
470 EXPECT_RECT_EQ(viewport_rect_for_tile_priority, | 476 EXPECT_RECT_EQ(viewport_rect_for_tile_priority, |
471 active_layer_->viewport_rect_for_tile_priority()); | 477 active_layer_->viewport_rect_for_tile_priority()); |
472 EXPECT_TRANSFORMATION_MATRIX_EQ( | 478 EXPECT_TRANSFORMATION_MATRIX_EQ( |
473 screen_space_transform_for_tile_priority, | 479 screen_space_transform_for_tile_priority, |
474 active_layer_->screen_space_transform_for_tile_priority()); | 480 active_layer_->screen_space_transform_for_tile_priority()); |
475 | 481 |
476 // Keep expanded viewport but mark it valid. Should update tile viewport. | 482 // Keep expanded viewport but mark it valid. Should update tile viewport. |
477 time_ticks += base::TimeDelta::FromMilliseconds(200); | 483 time_ticks += base::TimeDelta::FromMilliseconds(200); |
478 host_impl_.SetCurrentFrameTimeTicks(time_ticks); | 484 host_impl_.SetCurrentBeginFrameArgs( |
| 485 CreateBeginFrameArgsForTesting(time_ticks)); |
479 resourceless_software_draw = false; | 486 resourceless_software_draw = false; |
480 host_impl_.SetExternalDrawConstraints(transform, | 487 host_impl_.SetExternalDrawConstraints(transform, |
481 viewport, | 488 viewport, |
482 viewport, | 489 viewport, |
483 viewport, | 490 viewport, |
484 transform, | 491 transform, |
485 resourceless_software_draw); | 492 resourceless_software_draw); |
486 active_layer_->UpdateTiles(NULL); | 493 active_layer_->UpdateTiles(NULL); |
487 | 494 |
488 EXPECT_FALSE(visible_rect_for_tile_priority == | 495 EXPECT_FALSE(visible_rect_for_tile_priority == |
(...skipping 2177 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2666 // need content in order to activate. | 2673 // need content in order to activate. |
2667 pending_layer_->MarkVisibleResourcesAsRequired(); | 2674 pending_layer_->MarkVisibleResourcesAsRequired(); |
2668 AssertNoTilesRequired(pending_layer_->HighResTiling()); | 2675 AssertNoTilesRequired(pending_layer_->HighResTiling()); |
2669 if (host_impl_.settings().create_low_res_tiling) | 2676 if (host_impl_.settings().create_low_res_tiling) |
2670 AssertNoTilesRequired(pending_layer_->LowResTiling()); | 2677 AssertNoTilesRequired(pending_layer_->LowResTiling()); |
2671 } | 2678 } |
2672 | 2679 |
2673 TEST_F(NoLowResPictureLayerImplTest, InvalidViewportForPrioritizingTiles) { | 2680 TEST_F(NoLowResPictureLayerImplTest, InvalidViewportForPrioritizingTiles) { |
2674 base::TimeTicks time_ticks; | 2681 base::TimeTicks time_ticks; |
2675 time_ticks += base::TimeDelta::FromMilliseconds(1); | 2682 time_ticks += base::TimeDelta::FromMilliseconds(1); |
2676 host_impl_.SetCurrentFrameTimeTicks(time_ticks); | 2683 host_impl_.SetCurrentBeginFrameArgs( |
| 2684 CreateBeginFrameArgsForTesting(time_ticks)); |
2677 | 2685 |
2678 gfx::Size tile_size(100, 100); | 2686 gfx::Size tile_size(100, 100); |
2679 gfx::Size layer_bounds(400, 400); | 2687 gfx::Size layer_bounds(400, 400); |
2680 | 2688 |
2681 scoped_refptr<FakePicturePileImpl> pending_pile = | 2689 scoped_refptr<FakePicturePileImpl> pending_pile = |
2682 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 2690 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); |
2683 scoped_refptr<FakePicturePileImpl> active_pile = | 2691 scoped_refptr<FakePicturePileImpl> active_pile = |
2684 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 2692 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); |
2685 | 2693 |
2686 SetupTrees(pending_pile, active_pile); | 2694 SetupTrees(pending_pile, active_pile); |
(...skipping 23 matching lines...) Expand all Loading... |
2710 EXPECT_FALSE(visible_rect_for_tile_priority.IsEmpty()); | 2718 EXPECT_FALSE(visible_rect_for_tile_priority.IsEmpty()); |
2711 gfx::Rect viewport_rect_for_tile_priority = | 2719 gfx::Rect viewport_rect_for_tile_priority = |
2712 active_layer_->viewport_rect_for_tile_priority(); | 2720 active_layer_->viewport_rect_for_tile_priority(); |
2713 EXPECT_FALSE(viewport_rect_for_tile_priority.IsEmpty()); | 2721 EXPECT_FALSE(viewport_rect_for_tile_priority.IsEmpty()); |
2714 gfx::Transform screen_space_transform_for_tile_priority = | 2722 gfx::Transform screen_space_transform_for_tile_priority = |
2715 active_layer_->screen_space_transform_for_tile_priority(); | 2723 active_layer_->screen_space_transform_for_tile_priority(); |
2716 | 2724 |
2717 // Expand viewport and set it as invalid for prioritizing tiles. | 2725 // Expand viewport and set it as invalid for prioritizing tiles. |
2718 // Should not update tile viewport. | 2726 // Should not update tile viewport. |
2719 time_ticks += base::TimeDelta::FromMilliseconds(200); | 2727 time_ticks += base::TimeDelta::FromMilliseconds(200); |
2720 host_impl_.SetCurrentFrameTimeTicks(time_ticks); | 2728 host_impl_.SetCurrentBeginFrameArgs( |
| 2729 CreateBeginFrameArgsForTesting(time_ticks)); |
2721 resourceless_software_draw = true; | 2730 resourceless_software_draw = true; |
2722 viewport = gfx::ScaleToEnclosingRect(viewport, 2); | 2731 viewport = gfx::ScaleToEnclosingRect(viewport, 2); |
2723 transform.Translate(1.f, 1.f); | 2732 transform.Translate(1.f, 1.f); |
2724 active_layer_->draw_properties().visible_content_rect = viewport; | 2733 active_layer_->draw_properties().visible_content_rect = viewport; |
2725 active_layer_->draw_properties().screen_space_transform = transform; | 2734 active_layer_->draw_properties().screen_space_transform = transform; |
2726 host_impl_.SetExternalDrawConstraints(transform, | 2735 host_impl_.SetExternalDrawConstraints(transform, |
2727 viewport, | 2736 viewport, |
2728 viewport, | 2737 viewport, |
2729 viewport, | 2738 viewport, |
2730 transform, | 2739 transform, |
2731 resourceless_software_draw); | 2740 resourceless_software_draw); |
2732 active_layer_->UpdateTiles(NULL); | 2741 active_layer_->UpdateTiles(NULL); |
2733 | 2742 |
2734 EXPECT_RECT_EQ(visible_rect_for_tile_priority, | 2743 EXPECT_RECT_EQ(visible_rect_for_tile_priority, |
2735 active_layer_->visible_rect_for_tile_priority()); | 2744 active_layer_->visible_rect_for_tile_priority()); |
2736 EXPECT_RECT_EQ(viewport_rect_for_tile_priority, | 2745 EXPECT_RECT_EQ(viewport_rect_for_tile_priority, |
2737 active_layer_->viewport_rect_for_tile_priority()); | 2746 active_layer_->viewport_rect_for_tile_priority()); |
2738 EXPECT_TRANSFORMATION_MATRIX_EQ( | 2747 EXPECT_TRANSFORMATION_MATRIX_EQ( |
2739 screen_space_transform_for_tile_priority, | 2748 screen_space_transform_for_tile_priority, |
2740 active_layer_->screen_space_transform_for_tile_priority()); | 2749 active_layer_->screen_space_transform_for_tile_priority()); |
2741 | 2750 |
2742 // Keep expanded viewport but mark it valid. Should update tile viewport. | 2751 // Keep expanded viewport but mark it valid. Should update tile viewport. |
2743 time_ticks += base::TimeDelta::FromMilliseconds(200); | 2752 time_ticks += base::TimeDelta::FromMilliseconds(200); |
2744 host_impl_.SetCurrentFrameTimeTicks(time_ticks); | 2753 host_impl_.SetCurrentBeginFrameArgs( |
| 2754 CreateBeginFrameArgsForTesting(time_ticks)); |
2745 resourceless_software_draw = false; | 2755 resourceless_software_draw = false; |
2746 host_impl_.SetExternalDrawConstraints(transform, | 2756 host_impl_.SetExternalDrawConstraints(transform, |
2747 viewport, | 2757 viewport, |
2748 viewport, | 2758 viewport, |
2749 viewport, | 2759 viewport, |
2750 transform, | 2760 transform, |
2751 resourceless_software_draw); | 2761 resourceless_software_draw); |
2752 active_layer_->UpdateTiles(NULL); | 2762 active_layer_->UpdateTiles(NULL); |
2753 | 2763 |
2754 EXPECT_FALSE(visible_rect_for_tile_priority == | 2764 EXPECT_FALSE(visible_rect_for_tile_priority == |
(...skipping 402 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3157 EXPECT_EQ(expected_occluded_tile_count[priority_count], | 3167 EXPECT_EQ(expected_occluded_tile_count[priority_count], |
3158 occluded_tile_count); | 3168 occluded_tile_count); |
3159 } | 3169 } |
3160 } | 3170 } |
3161 }; | 3171 }; |
3162 | 3172 |
3163 TEST_F(OcclusionTrackingPictureLayerImplTest, | 3173 TEST_F(OcclusionTrackingPictureLayerImplTest, |
3164 OccludedTilesSkippedDuringRasterization) { | 3174 OccludedTilesSkippedDuringRasterization) { |
3165 base::TimeTicks time_ticks; | 3175 base::TimeTicks time_ticks; |
3166 time_ticks += base::TimeDelta::FromMilliseconds(1); | 3176 time_ticks += base::TimeDelta::FromMilliseconds(1); |
3167 host_impl_.SetCurrentFrameTimeTicks(time_ticks); | 3177 host_impl_.SetCurrentBeginFrameArgs( |
| 3178 CreateBeginFrameArgsForTesting(time_ticks)); |
3168 | 3179 |
3169 gfx::Size tile_size(102, 102); | 3180 gfx::Size tile_size(102, 102); |
3170 gfx::Size layer_bounds(1000, 1000); | 3181 gfx::Size layer_bounds(1000, 1000); |
3171 gfx::Size viewport_size(500, 500); | 3182 gfx::Size viewport_size(500, 500); |
3172 gfx::Point occluding_layer_position(310, 0); | 3183 gfx::Point occluding_layer_position(310, 0); |
3173 | 3184 |
3174 scoped_refptr<FakePicturePileImpl> pending_pile = | 3185 scoped_refptr<FakePicturePileImpl> pending_pile = |
3175 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 3186 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); |
3176 SetupPendingTree(pending_pile); | 3187 SetupPendingTree(pending_pile); |
3177 pending_layer_->set_fixed_tile_size(tile_size); | 3188 pending_layer_->set_fixed_tile_size(tile_size); |
(...skipping 24 matching lines...) Expand all Loading... |
3202 // Partial occlusion. | 3213 // Partial occlusion. |
3203 pending_layer_->AddChild(LayerImpl::Create(host_impl_.pending_tree(), 1)); | 3214 pending_layer_->AddChild(LayerImpl::Create(host_impl_.pending_tree(), 1)); |
3204 LayerImpl* layer1 = pending_layer_->children()[0]; | 3215 LayerImpl* layer1 = pending_layer_->children()[0]; |
3205 layer1->SetBounds(layer_bounds); | 3216 layer1->SetBounds(layer_bounds); |
3206 layer1->SetContentBounds(layer_bounds); | 3217 layer1->SetContentBounds(layer_bounds); |
3207 layer1->SetDrawsContent(true); | 3218 layer1->SetDrawsContent(true); |
3208 layer1->SetContentsOpaque(true); | 3219 layer1->SetContentsOpaque(true); |
3209 layer1->SetPosition(occluding_layer_position); | 3220 layer1->SetPosition(occluding_layer_position); |
3210 | 3221 |
3211 time_ticks += base::TimeDelta::FromMilliseconds(200); | 3222 time_ticks += base::TimeDelta::FromMilliseconds(200); |
3212 host_impl_.SetCurrentFrameTimeTicks(time_ticks); | 3223 host_impl_.SetCurrentBeginFrameArgs( |
| 3224 CreateBeginFrameArgsForTesting(time_ticks)); |
3213 host_impl_.pending_tree()->UpdateDrawProperties(); | 3225 host_impl_.pending_tree()->UpdateDrawProperties(); |
3214 | 3226 |
3215 unoccluded_tile_count = 0; | 3227 unoccluded_tile_count = 0; |
3216 for (PictureLayerImpl::LayerRasterTileIterator it = | 3228 for (PictureLayerImpl::LayerRasterTileIterator it = |
3217 PictureLayerImpl::LayerRasterTileIterator(pending_layer_, false); | 3229 PictureLayerImpl::LayerRasterTileIterator(pending_layer_, false); |
3218 it; | 3230 it; |
3219 ++it) { | 3231 ++it) { |
3220 Tile* tile = *it; | 3232 Tile* tile = *it; |
3221 | 3233 |
3222 EXPECT_FALSE(tile->is_occluded(PENDING_TREE)); | 3234 EXPECT_FALSE(tile->is_occluded(PENDING_TREE)); |
3223 | 3235 |
3224 bool tile_is_visible = | 3236 bool tile_is_visible = |
3225 tile->content_rect().Intersects(pending_layer_->visible_content_rect()); | 3237 tile->content_rect().Intersects(pending_layer_->visible_content_rect()); |
3226 if (tile_is_visible) | 3238 if (tile_is_visible) |
3227 unoccluded_tile_count++; | 3239 unoccluded_tile_count++; |
3228 } | 3240 } |
3229 EXPECT_EQ(unoccluded_tile_count, 20 + 2); | 3241 EXPECT_EQ(unoccluded_tile_count, 20 + 2); |
3230 | 3242 |
3231 // Full occlusion. | 3243 // Full occlusion. |
3232 layer1->SetPosition(gfx::Point(0, 0)); | 3244 layer1->SetPosition(gfx::Point(0, 0)); |
3233 | 3245 |
3234 time_ticks += base::TimeDelta::FromMilliseconds(200); | 3246 time_ticks += base::TimeDelta::FromMilliseconds(200); |
3235 host_impl_.SetCurrentFrameTimeTicks(time_ticks); | 3247 host_impl_.SetCurrentBeginFrameArgs( |
| 3248 CreateBeginFrameArgsForTesting(time_ticks)); |
3236 host_impl_.pending_tree()->UpdateDrawProperties(); | 3249 host_impl_.pending_tree()->UpdateDrawProperties(); |
3237 | 3250 |
3238 unoccluded_tile_count = 0; | 3251 unoccluded_tile_count = 0; |
3239 for (PictureLayerImpl::LayerRasterTileIterator it = | 3252 for (PictureLayerImpl::LayerRasterTileIterator it = |
3240 PictureLayerImpl::LayerRasterTileIterator(pending_layer_, false); | 3253 PictureLayerImpl::LayerRasterTileIterator(pending_layer_, false); |
3241 it; | 3254 it; |
3242 ++it) { | 3255 ++it) { |
3243 Tile* tile = *it; | 3256 Tile* tile = *it; |
3244 | 3257 |
3245 EXPECT_FALSE(tile->is_occluded(PENDING_TREE)); | 3258 EXPECT_FALSE(tile->is_occluded(PENDING_TREE)); |
3246 | 3259 |
3247 bool tile_is_visible = | 3260 bool tile_is_visible = |
3248 tile->content_rect().Intersects(pending_layer_->visible_content_rect()); | 3261 tile->content_rect().Intersects(pending_layer_->visible_content_rect()); |
3249 if (tile_is_visible) | 3262 if (tile_is_visible) |
3250 unoccluded_tile_count++; | 3263 unoccluded_tile_count++; |
3251 } | 3264 } |
3252 EXPECT_EQ(unoccluded_tile_count, 0); | 3265 EXPECT_EQ(unoccluded_tile_count, 0); |
3253 } | 3266 } |
3254 | 3267 |
3255 TEST_F(OcclusionTrackingPictureLayerImplTest, | 3268 TEST_F(OcclusionTrackingPictureLayerImplTest, |
3256 OccludedTilesNotMarkedAsRequired) { | 3269 OccludedTilesNotMarkedAsRequired) { |
3257 base::TimeTicks time_ticks; | 3270 base::TimeTicks time_ticks; |
3258 time_ticks += base::TimeDelta::FromMilliseconds(1); | 3271 time_ticks += base::TimeDelta::FromMilliseconds(1); |
3259 host_impl_.SetCurrentFrameTimeTicks(time_ticks); | 3272 host_impl_.SetCurrentBeginFrameArgs( |
| 3273 CreateBeginFrameArgsForTesting(time_ticks)); |
3260 | 3274 |
3261 gfx::Size tile_size(102, 102); | 3275 gfx::Size tile_size(102, 102); |
3262 gfx::Size layer_bounds(1000, 1000); | 3276 gfx::Size layer_bounds(1000, 1000); |
3263 gfx::Size viewport_size(500, 500); | 3277 gfx::Size viewport_size(500, 500); |
3264 gfx::Point occluding_layer_position(310, 0); | 3278 gfx::Point occluding_layer_position(310, 0); |
3265 | 3279 |
3266 scoped_refptr<FakePicturePileImpl> pending_pile = | 3280 scoped_refptr<FakePicturePileImpl> pending_pile = |
3267 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 3281 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); |
3268 SetupPendingTree(pending_pile); | 3282 SetupPendingTree(pending_pile); |
3269 pending_layer_->set_fixed_tile_size(tile_size); | 3283 pending_layer_->set_fixed_tile_size(tile_size); |
(...skipping 29 matching lines...) Expand all Loading... |
3299 // Partial occlusion. | 3313 // Partial occlusion. |
3300 pending_layer_->AddChild(LayerImpl::Create(host_impl_.pending_tree(), 1)); | 3314 pending_layer_->AddChild(LayerImpl::Create(host_impl_.pending_tree(), 1)); |
3301 LayerImpl* layer1 = pending_layer_->children()[0]; | 3315 LayerImpl* layer1 = pending_layer_->children()[0]; |
3302 layer1->SetBounds(layer_bounds); | 3316 layer1->SetBounds(layer_bounds); |
3303 layer1->SetContentBounds(layer_bounds); | 3317 layer1->SetContentBounds(layer_bounds); |
3304 layer1->SetDrawsContent(true); | 3318 layer1->SetDrawsContent(true); |
3305 layer1->SetContentsOpaque(true); | 3319 layer1->SetContentsOpaque(true); |
3306 layer1->SetPosition(occluding_layer_position); | 3320 layer1->SetPosition(occluding_layer_position); |
3307 | 3321 |
3308 time_ticks += base::TimeDelta::FromMilliseconds(200); | 3322 time_ticks += base::TimeDelta::FromMilliseconds(200); |
3309 host_impl_.SetCurrentFrameTimeTicks(time_ticks); | 3323 host_impl_.SetCurrentBeginFrameArgs( |
| 3324 CreateBeginFrameArgsForTesting(time_ticks)); |
3310 host_impl_.pending_tree()->UpdateDrawProperties(); | 3325 host_impl_.pending_tree()->UpdateDrawProperties(); |
3311 | 3326 |
3312 for (size_t i = 0; i < pending_layer_->num_tilings(); ++i) { | 3327 for (size_t i = 0; i < pending_layer_->num_tilings(); ++i) { |
3313 PictureLayerTiling* tiling = pending_layer_->tilings()->tiling_at(i); | 3328 PictureLayerTiling* tiling = pending_layer_->tilings()->tiling_at(i); |
3314 | 3329 |
3315 occluded_tile_count = 0; | 3330 occluded_tile_count = 0; |
3316 for (PictureLayerTiling::CoverageIterator iter( | 3331 for (PictureLayerTiling::CoverageIterator iter( |
3317 tiling, | 3332 tiling, |
3318 pending_layer_->contents_scale_x(), | 3333 pending_layer_->contents_scale_x(), |
3319 gfx::Rect(layer_bounds)); | 3334 gfx::Rect(layer_bounds)); |
(...skipping 17 matching lines...) Expand all Loading... |
3337 break; | 3352 break; |
3338 default: | 3353 default: |
3339 NOTREACHED(); | 3354 NOTREACHED(); |
3340 } | 3355 } |
3341 } | 3356 } |
3342 | 3357 |
3343 // Full occlusion. | 3358 // Full occlusion. |
3344 layer1->SetPosition(gfx::PointF(0, 0)); | 3359 layer1->SetPosition(gfx::PointF(0, 0)); |
3345 | 3360 |
3346 time_ticks += base::TimeDelta::FromMilliseconds(200); | 3361 time_ticks += base::TimeDelta::FromMilliseconds(200); |
3347 host_impl_.SetCurrentFrameTimeTicks(time_ticks); | 3362 host_impl_.SetCurrentBeginFrameArgs( |
| 3363 CreateBeginFrameArgsForTesting(time_ticks)); |
3348 host_impl_.pending_tree()->UpdateDrawProperties(); | 3364 host_impl_.pending_tree()->UpdateDrawProperties(); |
3349 | 3365 |
3350 for (size_t i = 0; i < pending_layer_->num_tilings(); ++i) { | 3366 for (size_t i = 0; i < pending_layer_->num_tilings(); ++i) { |
3351 PictureLayerTiling* tiling = pending_layer_->tilings()->tiling_at(i); | 3367 PictureLayerTiling* tiling = pending_layer_->tilings()->tiling_at(i); |
3352 | 3368 |
3353 occluded_tile_count = 0; | 3369 occluded_tile_count = 0; |
3354 for (PictureLayerTiling::CoverageIterator iter( | 3370 for (PictureLayerTiling::CoverageIterator iter( |
3355 tiling, | 3371 tiling, |
3356 pending_layer_->contents_scale_x(), | 3372 pending_layer_->contents_scale_x(), |
3357 gfx::Rect(layer_bounds)); | 3373 gfx::Rect(layer_bounds)); |
(...skipping 346 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3704 | 3720 |
3705 host_impl_.tile_manager()->InitializeTilesWithResourcesForTesting(all_tiles); | 3721 host_impl_.tile_manager()->InitializeTilesWithResourcesForTesting(all_tiles); |
3706 | 3722 |
3707 VerifyEvictionConsidersOcclusion(pending_layer_, | 3723 VerifyEvictionConsidersOcclusion(pending_layer_, |
3708 total_expected_occluded_tile_count); | 3724 total_expected_occluded_tile_count); |
3709 VerifyEvictionConsidersOcclusion(active_layer_, | 3725 VerifyEvictionConsidersOcclusion(active_layer_, |
3710 total_expected_occluded_tile_count); | 3726 total_expected_occluded_tile_count); |
3711 } | 3727 } |
3712 } // namespace | 3728 } // namespace |
3713 } // namespace cc | 3729 } // namespace cc |
OLD | NEW |