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 |