| 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/layers/append_quads_data.h" | 13 #include "cc/layers/append_quads_data.h" |
| 13 #include "cc/layers/picture_layer.h" | 14 #include "cc/layers/picture_layer.h" |
| 14 #include "cc/quads/draw_quad.h" | 15 #include "cc/quads/draw_quad.h" |
| 15 #include "cc/test/fake_content_layer_client.h" | 16 #include "cc/test/fake_content_layer_client.h" |
| 16 #include "cc/test/fake_impl_proxy.h" | 17 #include "cc/test/fake_impl_proxy.h" |
| 17 #include "cc/test/fake_layer_tree_host_impl.h" | 18 #include "cc/test/fake_layer_tree_host_impl.h" |
| 18 #include "cc/test/fake_output_surface.h" | 19 #include "cc/test/fake_output_surface.h" |
| 19 #include "cc/test/fake_picture_layer_impl.h" | 20 #include "cc/test/fake_picture_layer_impl.h" |
| 20 #include "cc/test/fake_picture_pile_impl.h" | 21 #include "cc/test/fake_picture_pile_impl.h" |
| 21 #include "cc/test/geometry_test_utils.h" | 22 #include "cc/test/geometry_test_utils.h" |
| (...skipping 273 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 295 | 296 |
| 296 EXPECT_EQ(pending_layer_->tilings()->num_tilings(), | 297 EXPECT_EQ(pending_layer_->tilings()->num_tilings(), |
| 297 active_layer_->tilings()->num_tilings()); | 298 active_layer_->tilings()->num_tilings()); |
| 298 | 299 |
| 299 const PictureLayerTilingSet* tilings = pending_layer_->tilings(); | 300 const PictureLayerTilingSet* tilings = pending_layer_->tilings(); |
| 300 EXPECT_GT(tilings->num_tilings(), 0u); | 301 EXPECT_GT(tilings->num_tilings(), 0u); |
| 301 for (size_t i = 0; i < tilings->num_tilings(); ++i) | 302 for (size_t i = 0; i < tilings->num_tilings(); ++i) |
| 302 VerifyAllTilesExistAndHavePile(tilings->tiling_at(i), active_pile.get()); | 303 VerifyAllTilesExistAndHavePile(tilings->tiling_at(i), active_pile.get()); |
| 303 } | 304 } |
| 304 | 305 |
| 306 TEST_F(PictureLayerImplTest, ExternalViewportRectForPrioritizingTiles) { |
| 307 base::TimeTicks time_ticks; |
| 308 host_impl_.SetCurrentFrameTimeTicks(time_ticks); |
| 309 gfx::Size tile_size(100, 100); |
| 310 gfx::Size layer_bounds(400, 400); |
| 311 |
| 312 scoped_refptr<FakePicturePileImpl> pending_pile = |
| 313 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); |
| 314 scoped_refptr<FakePicturePileImpl> active_pile = |
| 315 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); |
| 316 |
| 317 SetupTrees(pending_pile, active_pile); |
| 318 |
| 319 Region invalidation; |
| 320 AddDefaultTilingsWithInvalidation(invalidation); |
| 321 SetupDrawPropertiesAndUpdateTiles(active_layer_, 1.f, 1.f, 1.f, 1.f, false); |
| 322 |
| 323 // Update tiles with viewport for tile priority as (0, 0, 100, 100) and the |
| 324 // identify transform for tile priority. |
| 325 bool resourceless_software_draw = false; |
| 326 gfx::Rect viewport = gfx::Rect(layer_bounds), |
| 327 viewport_rect_for_tile_priority = gfx::Rect(0, 0, 100, 100); |
| 328 gfx::Transform transform, transform_for_tile_priority; |
| 329 |
| 330 host_impl_.SetExternalDrawConstraints(transform, |
| 331 viewport, |
| 332 viewport, |
| 333 viewport_rect_for_tile_priority, |
| 334 transform_for_tile_priority, |
| 335 resourceless_software_draw); |
| 336 active_layer_->draw_properties().visible_content_rect = viewport; |
| 337 active_layer_->draw_properties().screen_space_transform = transform; |
| 338 active_layer_->UpdateTiles(NULL); |
| 339 |
| 340 gfx::Rect viewport_rect_for_tile_priority_in_view_space = |
| 341 viewport_rect_for_tile_priority; |
| 342 |
| 343 // Verify the viewport rect for tile priority is used in picture layer impl. |
| 344 EXPECT_EQ(active_layer_->viewport_rect_for_tile_priority(), |
| 345 viewport_rect_for_tile_priority_in_view_space); |
| 346 |
| 347 // Verify the viewport rect for tile priority is used in picture layer tiling. |
| 348 PictureLayerTilingSet* tilings = active_layer_->tilings(); |
| 349 for (size_t i = 0; i < tilings->num_tilings(); i++) { |
| 350 PictureLayerTiling* tiling = tilings->tiling_at(i); |
| 351 EXPECT_EQ( |
| 352 tiling->GetCurrentVisibleRectForTesting(), |
| 353 gfx::ScaleToEnclosingRect(viewport_rect_for_tile_priority_in_view_space, |
| 354 tiling->contents_scale())); |
| 355 } |
| 356 |
| 357 // Update tiles with viewport for tile priority as (200, 200, 100, 100) in |
| 358 // screen space and the transform for tile priority is translated and |
| 359 // rotated. The actual viewport for tile priority used by PictureLayerImpl |
| 360 // should be (200, 200, 100, 100) applied with the said transform. |
| 361 time_ticks += base::TimeDelta::FromMilliseconds(200); |
| 362 host_impl_.SetCurrentFrameTimeTicks(time_ticks); |
| 363 |
| 364 viewport_rect_for_tile_priority = gfx::Rect(200, 200, 100, 100); |
| 365 transform_for_tile_priority.Translate(100, 100); |
| 366 transform_for_tile_priority.Rotate(45); |
| 367 host_impl_.SetExternalDrawConstraints(transform, |
| 368 viewport, |
| 369 viewport, |
| 370 viewport_rect_for_tile_priority, |
| 371 transform_for_tile_priority, |
| 372 resourceless_software_draw); |
| 373 active_layer_->draw_properties().visible_content_rect = viewport; |
| 374 active_layer_->draw_properties().screen_space_transform = transform; |
| 375 active_layer_->UpdateTiles(NULL); |
| 376 |
| 377 gfx::Transform screen_to_view(gfx::Transform::kSkipInitialization); |
| 378 bool success = transform_for_tile_priority.GetInverse(&screen_to_view); |
| 379 EXPECT_TRUE(success); |
| 380 |
| 381 viewport_rect_for_tile_priority_in_view_space = |
| 382 gfx::ToEnclosingRect(MathUtil::ProjectClippedRect( |
| 383 screen_to_view, viewport_rect_for_tile_priority)); |
| 384 |
| 385 // Verify the viewport rect for tile priority is used in PictureLayerImpl. |
| 386 EXPECT_EQ(active_layer_->viewport_rect_for_tile_priority(), |
| 387 viewport_rect_for_tile_priority_in_view_space); |
| 388 |
| 389 // Interset viewport_rect_for_tile_priority_in_view_space with the layer |
| 390 // bounds and the result should be used in PictureLayerTiling. |
| 391 viewport_rect_for_tile_priority_in_view_space.Intersect( |
| 392 gfx::Rect(layer_bounds)); |
| 393 tilings = active_layer_->tilings(); |
| 394 for (size_t i = 0; i < tilings->num_tilings(); i++) { |
| 395 PictureLayerTiling* tiling = tilings->tiling_at(i); |
| 396 EXPECT_EQ( |
| 397 tiling->GetCurrentVisibleRectForTesting(), |
| 398 gfx::ScaleToEnclosingRect(viewport_rect_for_tile_priority_in_view_space, |
| 399 tiling->contents_scale())); |
| 400 } |
| 401 } |
| 402 |
| 305 TEST_F(PictureLayerImplTest, InvalidViewportForPrioritizingTiles) { | 403 TEST_F(PictureLayerImplTest, InvalidViewportForPrioritizingTiles) { |
| 306 base::TimeTicks time_ticks; | 404 base::TimeTicks time_ticks; |
| 307 host_impl_.SetCurrentFrameTimeTicks(time_ticks); | 405 host_impl_.SetCurrentFrameTimeTicks(time_ticks); |
| 308 | 406 |
| 309 gfx::Size tile_size(100, 100); | 407 gfx::Size tile_size(100, 100); |
| 310 gfx::Size layer_bounds(400, 400); | 408 gfx::Size layer_bounds(400, 400); |
| 311 | 409 |
| 312 scoped_refptr<FakePicturePileImpl> pending_pile = | 410 scoped_refptr<FakePicturePileImpl> pending_pile = |
| 313 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 411 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); |
| 314 scoped_refptr<FakePicturePileImpl> active_pile = | 412 scoped_refptr<FakePicturePileImpl> active_pile = |
| 315 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 413 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); |
| 316 | 414 |
| 317 SetupTrees(pending_pile, active_pile); | 415 SetupTrees(pending_pile, active_pile); |
| 318 | 416 |
| 319 Region invalidation; | 417 Region invalidation; |
| 320 AddDefaultTilingsWithInvalidation(invalidation); | 418 AddDefaultTilingsWithInvalidation(invalidation); |
| 321 SetupDrawPropertiesAndUpdateTiles(active_layer_, 1.f, 1.f, 1.f, 1.f, false); | 419 SetupDrawPropertiesAndUpdateTiles(active_layer_, 1.f, 1.f, 1.f, 1.f, false); |
| 322 | 420 |
| 323 // UpdateTiles with valid viewport. Should update tile viewport. | 421 // UpdateTiles with valid viewport. Should update tile viewport. |
| 324 // Note viewport is considered invalid if and only if in resourceless | 422 // Note viewport is considered invalid if and only if in resourceless |
| 325 // software draw. | 423 // software draw. |
| 326 bool resourceless_software_draw = false; | 424 bool resourceless_software_draw = false; |
| 327 gfx::Rect viewport = gfx::Rect(layer_bounds); | 425 gfx::Rect viewport = gfx::Rect(layer_bounds); |
| 328 gfx::Transform transform; | 426 gfx::Transform transform; |
| 329 host_impl_.SetExternalDrawConstraints( | 427 host_impl_.SetExternalDrawConstraints(transform, |
| 330 transform, viewport, viewport, resourceless_software_draw); | 428 viewport, |
| 429 viewport, |
| 430 viewport, |
| 431 transform, |
| 432 resourceless_software_draw); |
| 331 active_layer_->draw_properties().visible_content_rect = viewport; | 433 active_layer_->draw_properties().visible_content_rect = viewport; |
| 332 active_layer_->draw_properties().screen_space_transform = transform; | 434 active_layer_->draw_properties().screen_space_transform = transform; |
| 333 active_layer_->UpdateTiles(NULL); | 435 active_layer_->UpdateTiles(NULL); |
| 334 | 436 |
| 335 gfx::Rect visible_rect_for_tile_priority = | 437 gfx::Rect visible_rect_for_tile_priority = |
| 336 active_layer_->visible_rect_for_tile_priority(); | 438 active_layer_->visible_rect_for_tile_priority(); |
| 337 EXPECT_FALSE(visible_rect_for_tile_priority.IsEmpty()); | 439 EXPECT_FALSE(visible_rect_for_tile_priority.IsEmpty()); |
| 338 gfx::Size viewport_size_for_tile_priority = | 440 gfx::Rect viewport_rect_for_tile_priority = |
| 339 active_layer_->viewport_size_for_tile_priority(); | 441 active_layer_->viewport_rect_for_tile_priority(); |
| 340 EXPECT_FALSE(viewport_size_for_tile_priority.IsEmpty()); | 442 EXPECT_FALSE(viewport_rect_for_tile_priority.IsEmpty()); |
| 341 gfx::Transform screen_space_transform_for_tile_priority = | 443 gfx::Transform screen_space_transform_for_tile_priority = |
| 342 active_layer_->screen_space_transform_for_tile_priority(); | 444 active_layer_->screen_space_transform_for_tile_priority(); |
| 343 | 445 |
| 344 // Expand viewport and set it as invalid for prioritizing tiles. | 446 // Expand viewport and set it as invalid for prioritizing tiles. |
| 345 // Should not update tile viewport. | 447 // Should not update tile viewport. |
| 346 time_ticks += base::TimeDelta::FromMilliseconds(200); | 448 time_ticks += base::TimeDelta::FromMilliseconds(200); |
| 347 host_impl_.SetCurrentFrameTimeTicks(time_ticks); | 449 host_impl_.SetCurrentFrameTimeTicks(time_ticks); |
| 348 resourceless_software_draw = true; | 450 resourceless_software_draw = true; |
| 349 viewport = gfx::ScaleToEnclosingRect(viewport, 2); | 451 viewport = gfx::ScaleToEnclosingRect(viewport, 2); |
| 350 transform.Translate(1.f, 1.f); | 452 transform.Translate(1.f, 1.f); |
| 351 active_layer_->draw_properties().visible_content_rect = viewport; | 453 active_layer_->draw_properties().visible_content_rect = viewport; |
| 352 active_layer_->draw_properties().screen_space_transform = transform; | 454 active_layer_->draw_properties().screen_space_transform = transform; |
| 353 host_impl_.SetExternalDrawConstraints( | 455 host_impl_.SetExternalDrawConstraints(transform, |
| 354 transform, viewport, viewport, resourceless_software_draw); | 456 viewport, |
| 457 viewport, |
| 458 viewport, |
| 459 transform, |
| 460 resourceless_software_draw); |
| 355 active_layer_->UpdateTiles(NULL); | 461 active_layer_->UpdateTiles(NULL); |
| 356 | 462 |
| 357 EXPECT_RECT_EQ(visible_rect_for_tile_priority, | 463 EXPECT_RECT_EQ(visible_rect_for_tile_priority, |
| 358 active_layer_->visible_rect_for_tile_priority()); | 464 active_layer_->visible_rect_for_tile_priority()); |
| 359 EXPECT_SIZE_EQ(viewport_size_for_tile_priority, | 465 EXPECT_RECT_EQ(viewport_rect_for_tile_priority, |
| 360 active_layer_->viewport_size_for_tile_priority()); | 466 active_layer_->viewport_rect_for_tile_priority()); |
| 361 EXPECT_TRANSFORMATION_MATRIX_EQ( | 467 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 362 screen_space_transform_for_tile_priority, | 468 screen_space_transform_for_tile_priority, |
| 363 active_layer_->screen_space_transform_for_tile_priority()); | 469 active_layer_->screen_space_transform_for_tile_priority()); |
| 364 | 470 |
| 365 // Keep expanded viewport but mark it valid. Should update tile viewport. | 471 // Keep expanded viewport but mark it valid. Should update tile viewport. |
| 366 time_ticks += base::TimeDelta::FromMilliseconds(200); | 472 time_ticks += base::TimeDelta::FromMilliseconds(200); |
| 367 host_impl_.SetCurrentFrameTimeTicks(time_ticks); | 473 host_impl_.SetCurrentFrameTimeTicks(time_ticks); |
| 368 resourceless_software_draw = false; | 474 resourceless_software_draw = false; |
| 369 host_impl_.SetExternalDrawConstraints( | 475 host_impl_.SetExternalDrawConstraints(transform, |
| 370 transform, viewport, viewport, resourceless_software_draw); | 476 viewport, |
| 477 viewport, |
| 478 viewport, |
| 479 transform, |
| 480 resourceless_software_draw); |
| 371 active_layer_->UpdateTiles(NULL); | 481 active_layer_->UpdateTiles(NULL); |
| 372 | 482 |
| 373 EXPECT_FALSE(visible_rect_for_tile_priority == | 483 EXPECT_FALSE(visible_rect_for_tile_priority == |
| 374 active_layer_->visible_rect_for_tile_priority()); | 484 active_layer_->visible_rect_for_tile_priority()); |
| 375 EXPECT_FALSE(viewport_size_for_tile_priority == | 485 EXPECT_FALSE(viewport_rect_for_tile_priority == |
| 376 active_layer_->viewport_size_for_tile_priority()); | 486 active_layer_->viewport_rect_for_tile_priority()); |
| 377 EXPECT_FALSE(screen_space_transform_for_tile_priority == | 487 EXPECT_FALSE(screen_space_transform_for_tile_priority == |
| 378 active_layer_->screen_space_transform_for_tile_priority()); | 488 active_layer_->screen_space_transform_for_tile_priority()); |
| 379 } | 489 } |
| 380 | 490 |
| 381 TEST_F(PictureLayerImplTest, InvalidViewportAfterReleaseResources) { | 491 TEST_F(PictureLayerImplTest, InvalidViewportAfterReleaseResources) { |
| 382 base::TimeTicks time_ticks; | 492 base::TimeTicks time_ticks; |
| 383 host_impl_.SetCurrentFrameTimeTicks(time_ticks); | 493 host_impl_.SetCurrentFrameTimeTicks(time_ticks); |
| 384 | 494 |
| 385 gfx::Size tile_size(100, 100); | 495 gfx::Size tile_size(100, 100); |
| 386 gfx::Size layer_bounds(400, 400); | 496 gfx::Size layer_bounds(400, 400); |
| 387 | 497 |
| 388 scoped_refptr<FakePicturePileImpl> pending_pile = | 498 scoped_refptr<FakePicturePileImpl> pending_pile = |
| 389 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 499 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); |
| 390 scoped_refptr<FakePicturePileImpl> active_pile = | 500 scoped_refptr<FakePicturePileImpl> active_pile = |
| 391 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 501 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); |
| 392 | 502 |
| 393 SetupTrees(pending_pile, active_pile); | 503 SetupTrees(pending_pile, active_pile); |
| 394 | 504 |
| 395 Region invalidation; | 505 Region invalidation; |
| 396 AddDefaultTilingsWithInvalidation(invalidation); | 506 AddDefaultTilingsWithInvalidation(invalidation); |
| 397 | 507 |
| 398 bool resourceless_software_draw = true; | 508 bool resourceless_software_draw = true; |
| 399 gfx::Rect viewport = gfx::Rect(layer_bounds); | 509 gfx::Rect viewport = gfx::Rect(layer_bounds); |
| 400 host_impl_.SetExternalDrawConstraints( | 510 gfx::Transform identity = gfx::Transform(); |
| 401 gfx::Transform(), viewport, viewport, resourceless_software_draw); | 511 host_impl_.SetExternalDrawConstraints(identity, |
| 512 viewport, |
| 513 viewport, |
| 514 viewport, |
| 515 identity, |
| 516 resourceless_software_draw); |
| 402 ResetTilingsAndRasterScales(); | 517 ResetTilingsAndRasterScales(); |
| 403 host_impl_.pending_tree()->UpdateDrawProperties(); | 518 host_impl_.pending_tree()->UpdateDrawProperties(); |
| 404 host_impl_.active_tree()->UpdateDrawProperties(); | 519 host_impl_.active_tree()->UpdateDrawProperties(); |
| 405 EXPECT_TRUE(active_layer_->HighResTiling()); | 520 EXPECT_TRUE(active_layer_->HighResTiling()); |
| 406 | 521 |
| 407 size_t num_tilings = active_layer_->num_tilings(); | 522 size_t num_tilings = active_layer_->num_tilings(); |
| 408 active_layer_->UpdateTiles(NULL); | 523 active_layer_->UpdateTiles(NULL); |
| 409 pending_layer_->AddTiling(0.5f); | 524 pending_layer_->AddTiling(0.5f); |
| 410 EXPECT_EQ(num_tilings + 1, active_layer_->num_tilings()); | 525 EXPECT_EQ(num_tilings + 1, active_layer_->num_tilings()); |
| 411 } | 526 } |
| (...skipping 2158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2570 Region invalidation; | 2685 Region invalidation; |
| 2571 AddDefaultTilingsWithInvalidation(invalidation); | 2686 AddDefaultTilingsWithInvalidation(invalidation); |
| 2572 SetupDrawPropertiesAndUpdateTiles(active_layer_, 1.f, 1.f, 1.f, 1.f, false); | 2687 SetupDrawPropertiesAndUpdateTiles(active_layer_, 1.f, 1.f, 1.f, 1.f, false); |
| 2573 | 2688 |
| 2574 // UpdateTiles with valid viewport. Should update tile viewport. | 2689 // UpdateTiles with valid viewport. Should update tile viewport. |
| 2575 // Note viewport is considered invalid if and only if in resourceless | 2690 // Note viewport is considered invalid if and only if in resourceless |
| 2576 // software draw. | 2691 // software draw. |
| 2577 bool resourceless_software_draw = false; | 2692 bool resourceless_software_draw = false; |
| 2578 gfx::Rect viewport = gfx::Rect(layer_bounds); | 2693 gfx::Rect viewport = gfx::Rect(layer_bounds); |
| 2579 gfx::Transform transform; | 2694 gfx::Transform transform; |
| 2580 host_impl_.SetExternalDrawConstraints( | 2695 host_impl_.SetExternalDrawConstraints(transform, |
| 2581 transform, viewport, viewport, resourceless_software_draw); | 2696 viewport, |
| 2697 viewport, |
| 2698 viewport, |
| 2699 transform, |
| 2700 resourceless_software_draw); |
| 2582 active_layer_->draw_properties().visible_content_rect = viewport; | 2701 active_layer_->draw_properties().visible_content_rect = viewport; |
| 2583 active_layer_->draw_properties().screen_space_transform = transform; | 2702 active_layer_->draw_properties().screen_space_transform = transform; |
| 2584 active_layer_->UpdateTiles(NULL); | 2703 active_layer_->UpdateTiles(NULL); |
| 2585 | 2704 |
| 2586 gfx::Rect visible_rect_for_tile_priority = | 2705 gfx::Rect visible_rect_for_tile_priority = |
| 2587 active_layer_->visible_rect_for_tile_priority(); | 2706 active_layer_->visible_rect_for_tile_priority(); |
| 2588 EXPECT_FALSE(visible_rect_for_tile_priority.IsEmpty()); | 2707 EXPECT_FALSE(visible_rect_for_tile_priority.IsEmpty()); |
| 2589 gfx::Size viewport_size_for_tile_priority = | 2708 gfx::Rect viewport_rect_for_tile_priority = |
| 2590 active_layer_->viewport_size_for_tile_priority(); | 2709 active_layer_->viewport_rect_for_tile_priority(); |
| 2591 EXPECT_FALSE(viewport_size_for_tile_priority.IsEmpty()); | 2710 EXPECT_FALSE(viewport_rect_for_tile_priority.IsEmpty()); |
| 2592 gfx::Transform screen_space_transform_for_tile_priority = | 2711 gfx::Transform screen_space_transform_for_tile_priority = |
| 2593 active_layer_->screen_space_transform_for_tile_priority(); | 2712 active_layer_->screen_space_transform_for_tile_priority(); |
| 2594 | 2713 |
| 2595 // Expand viewport and set it as invalid for prioritizing tiles. | 2714 // Expand viewport and set it as invalid for prioritizing tiles. |
| 2596 // Should not update tile viewport. | 2715 // Should not update tile viewport. |
| 2597 time_ticks += base::TimeDelta::FromMilliseconds(200); | 2716 time_ticks += base::TimeDelta::FromMilliseconds(200); |
| 2598 host_impl_.SetCurrentFrameTimeTicks(time_ticks); | 2717 host_impl_.SetCurrentFrameTimeTicks(time_ticks); |
| 2599 resourceless_software_draw = true; | 2718 resourceless_software_draw = true; |
| 2600 viewport = gfx::ScaleToEnclosingRect(viewport, 2); | 2719 viewport = gfx::ScaleToEnclosingRect(viewport, 2); |
| 2601 transform.Translate(1.f, 1.f); | 2720 transform.Translate(1.f, 1.f); |
| 2602 active_layer_->draw_properties().visible_content_rect = viewport; | 2721 active_layer_->draw_properties().visible_content_rect = viewport; |
| 2603 active_layer_->draw_properties().screen_space_transform = transform; | 2722 active_layer_->draw_properties().screen_space_transform = transform; |
| 2604 host_impl_.SetExternalDrawConstraints( | 2723 host_impl_.SetExternalDrawConstraints(transform, |
| 2605 transform, viewport, viewport, resourceless_software_draw); | 2724 viewport, |
| 2725 viewport, |
| 2726 viewport, |
| 2727 transform, |
| 2728 resourceless_software_draw); |
| 2606 active_layer_->UpdateTiles(NULL); | 2729 active_layer_->UpdateTiles(NULL); |
| 2607 | 2730 |
| 2608 EXPECT_RECT_EQ(visible_rect_for_tile_priority, | 2731 EXPECT_RECT_EQ(visible_rect_for_tile_priority, |
| 2609 active_layer_->visible_rect_for_tile_priority()); | 2732 active_layer_->visible_rect_for_tile_priority()); |
| 2610 EXPECT_SIZE_EQ(viewport_size_for_tile_priority, | 2733 EXPECT_RECT_EQ(viewport_rect_for_tile_priority, |
| 2611 active_layer_->viewport_size_for_tile_priority()); | 2734 active_layer_->viewport_rect_for_tile_priority()); |
| 2612 EXPECT_TRANSFORMATION_MATRIX_EQ( | 2735 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 2613 screen_space_transform_for_tile_priority, | 2736 screen_space_transform_for_tile_priority, |
| 2614 active_layer_->screen_space_transform_for_tile_priority()); | 2737 active_layer_->screen_space_transform_for_tile_priority()); |
| 2615 | 2738 |
| 2616 // Keep expanded viewport but mark it valid. Should update tile viewport. | 2739 // Keep expanded viewport but mark it valid. Should update tile viewport. |
| 2617 time_ticks += base::TimeDelta::FromMilliseconds(200); | 2740 time_ticks += base::TimeDelta::FromMilliseconds(200); |
| 2618 host_impl_.SetCurrentFrameTimeTicks(time_ticks); | 2741 host_impl_.SetCurrentFrameTimeTicks(time_ticks); |
| 2619 resourceless_software_draw = false; | 2742 resourceless_software_draw = false; |
| 2620 host_impl_.SetExternalDrawConstraints( | 2743 host_impl_.SetExternalDrawConstraints(transform, |
| 2621 transform, viewport, viewport, resourceless_software_draw); | 2744 viewport, |
| 2745 viewport, |
| 2746 viewport, |
| 2747 transform, |
| 2748 resourceless_software_draw); |
| 2622 active_layer_->UpdateTiles(NULL); | 2749 active_layer_->UpdateTiles(NULL); |
| 2623 | 2750 |
| 2624 EXPECT_FALSE(visible_rect_for_tile_priority == | 2751 EXPECT_FALSE(visible_rect_for_tile_priority == |
| 2625 active_layer_->visible_rect_for_tile_priority()); | 2752 active_layer_->visible_rect_for_tile_priority()); |
| 2626 EXPECT_FALSE(viewport_size_for_tile_priority == | 2753 EXPECT_FALSE(viewport_rect_for_tile_priority == |
| 2627 active_layer_->viewport_size_for_tile_priority()); | 2754 active_layer_->viewport_rect_for_tile_priority()); |
| 2628 EXPECT_FALSE(screen_space_transform_for_tile_priority == | 2755 EXPECT_FALSE(screen_space_transform_for_tile_priority == |
| 2629 active_layer_->screen_space_transform_for_tile_priority()); | 2756 active_layer_->screen_space_transform_for_tile_priority()); |
| 2630 } | 2757 } |
| 2631 | 2758 |
| 2632 TEST_F(NoLowResPictureLayerImplTest, InvalidViewportAfterReleaseResources) { | 2759 TEST_F(NoLowResPictureLayerImplTest, InvalidViewportAfterReleaseResources) { |
| 2633 base::TimeTicks time_ticks; | 2760 base::TimeTicks time_ticks; |
| 2634 host_impl_.SetCurrentFrameTimeTicks(time_ticks); | 2761 host_impl_.SetCurrentFrameTimeTicks(time_ticks); |
| 2635 | 2762 |
| 2636 gfx::Size tile_size(100, 100); | 2763 gfx::Size tile_size(100, 100); |
| 2637 gfx::Size layer_bounds(400, 400); | 2764 gfx::Size layer_bounds(400, 400); |
| 2638 | 2765 |
| 2639 scoped_refptr<FakePicturePileImpl> pending_pile = | 2766 scoped_refptr<FakePicturePileImpl> pending_pile = |
| 2640 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 2767 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); |
| 2641 scoped_refptr<FakePicturePileImpl> active_pile = | 2768 scoped_refptr<FakePicturePileImpl> active_pile = |
| 2642 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 2769 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); |
| 2643 | 2770 |
| 2644 SetupTrees(pending_pile, active_pile); | 2771 SetupTrees(pending_pile, active_pile); |
| 2645 | 2772 |
| 2646 Region invalidation; | 2773 Region invalidation; |
| 2647 AddDefaultTilingsWithInvalidation(invalidation); | 2774 AddDefaultTilingsWithInvalidation(invalidation); |
| 2648 | 2775 |
| 2649 bool resourceless_software_draw = true; | 2776 bool resourceless_software_draw = true; |
| 2650 gfx::Rect viewport = gfx::Rect(layer_bounds); | 2777 gfx::Rect viewport = gfx::Rect(layer_bounds); |
| 2651 host_impl_.SetExternalDrawConstraints( | 2778 gfx::Transform identity = gfx::Transform(); |
| 2652 gfx::Transform(), viewport, viewport, resourceless_software_draw); | 2779 host_impl_.SetExternalDrawConstraints(identity, |
| 2780 viewport, |
| 2781 viewport, |
| 2782 viewport, |
| 2783 identity, |
| 2784 resourceless_software_draw); |
| 2653 ResetTilingsAndRasterScales(); | 2785 ResetTilingsAndRasterScales(); |
| 2654 host_impl_.pending_tree()->UpdateDrawProperties(); | 2786 host_impl_.pending_tree()->UpdateDrawProperties(); |
| 2655 host_impl_.active_tree()->UpdateDrawProperties(); | 2787 host_impl_.active_tree()->UpdateDrawProperties(); |
| 2656 EXPECT_TRUE(active_layer_->HighResTiling()); | 2788 EXPECT_TRUE(active_layer_->HighResTiling()); |
| 2657 | 2789 |
| 2658 size_t num_tilings = active_layer_->num_tilings(); | 2790 size_t num_tilings = active_layer_->num_tilings(); |
| 2659 active_layer_->UpdateTiles(NULL); | 2791 active_layer_->UpdateTiles(NULL); |
| 2660 pending_layer_->AddTiling(0.5f); | 2792 pending_layer_->AddTiling(0.5f); |
| 2661 EXPECT_EQ(num_tilings + 1, active_layer_->num_tilings()); | 2793 EXPECT_EQ(num_tilings + 1, active_layer_->num_tilings()); |
| 2662 } | 2794 } |
| (...skipping 906 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3569 | 3701 |
| 3570 host_impl_.tile_manager()->InitializeTilesWithResourcesForTesting(all_tiles); | 3702 host_impl_.tile_manager()->InitializeTilesWithResourcesForTesting(all_tiles); |
| 3571 | 3703 |
| 3572 VerifyEvictionConsidersOcclusion(pending_layer_, | 3704 VerifyEvictionConsidersOcclusion(pending_layer_, |
| 3573 total_expected_occluded_tile_count); | 3705 total_expected_occluded_tile_count); |
| 3574 VerifyEvictionConsidersOcclusion(active_layer_, | 3706 VerifyEvictionConsidersOcclusion(active_layer_, |
| 3575 total_expected_occluded_tile_count); | 3707 total_expected_occluded_tile_count); |
| 3576 } | 3708 } |
| 3577 } // namespace | 3709 } // namespace |
| 3578 } // namespace cc | 3710 } // namespace cc |
| OLD | NEW |