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

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

Issue 394113002: Tiling priorities in Android Webview. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: better fix Created 6 years, 4 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.cc ('k') | cc/output/output_surface.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>
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
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
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
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
OLDNEW
« no previous file with comments | « cc/layers/picture_layer_impl.cc ('k') | cc/output/output_surface.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698