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

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

Issue 517893002: Cleanup resourceless_software_draw() (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix test Created 6 years, 3 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
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "cc/layers/picture_layer_impl.h" 5 #include "cc/layers/picture_layer_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <limits> 8 #include <limits>
9 #include <set> 9 #include <set>
10 #include <utility> 10 #include <utility>
(...skipping 397 matching lines...) Expand 10 before | Expand all | Expand 10 after
408 tilings = active_layer_->tilings(); 408 tilings = active_layer_->tilings();
409 for (size_t i = 0; i < tilings->num_tilings(); i++) { 409 for (size_t i = 0; i < tilings->num_tilings(); i++) {
410 PictureLayerTiling* tiling = tilings->tiling_at(i); 410 PictureLayerTiling* tiling = tilings->tiling_at(i);
411 EXPECT_EQ( 411 EXPECT_EQ(
412 tiling->GetCurrentVisibleRectForTesting(), 412 tiling->GetCurrentVisibleRectForTesting(),
413 gfx::ScaleToEnclosingRect(viewport_rect_for_tile_priority_in_view_space, 413 gfx::ScaleToEnclosingRect(viewport_rect_for_tile_priority_in_view_space,
414 tiling->contents_scale())); 414 tiling->contents_scale()));
415 } 415 }
416 } 416 }
417 417
418 TEST_F(PictureLayerImplTest, InvalidViewportForPrioritizingTiles) { 418 TEST_F(PictureLayerImplTest,
419 ResourcelessSoftwareDrawHasValidViewportForTilePriority) {
419 base::TimeTicks time_ticks; 420 base::TimeTicks time_ticks;
420 time_ticks += base::TimeDelta::FromMilliseconds(1); 421 time_ticks += base::TimeDelta::FromMilliseconds(1);
421 host_impl_.SetCurrentBeginFrameArgs( 422 host_impl_.SetCurrentBeginFrameArgs(
422 CreateBeginFrameArgsForTesting(time_ticks)); 423 CreateBeginFrameArgsForTesting(time_ticks));
423 424
424 gfx::Size tile_size(100, 100); 425 gfx::Size tile_size(100, 100);
425 gfx::Size layer_bounds(400, 400); 426 gfx::Size layer_bounds(400, 400);
426 427
427 scoped_refptr<FakePicturePileImpl> pending_pile = 428 scoped_refptr<FakePicturePileImpl> pending_pile =
428 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); 429 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds);
429 scoped_refptr<FakePicturePileImpl> active_pile = 430 scoped_refptr<FakePicturePileImpl> active_pile =
430 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); 431 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds);
431 432
432 SetupTrees(pending_pile, active_pile); 433 SetupTrees(pending_pile, active_pile);
433 434
434 Region invalidation; 435 Region invalidation;
435 AddDefaultTilingsWithInvalidation(invalidation); 436 AddDefaultTilingsWithInvalidation(invalidation);
436 SetupDrawPropertiesAndUpdateTiles(active_layer_, 1.f, 1.f, 1.f, 1.f, false); 437 SetupDrawPropertiesAndUpdateTiles(active_layer_, 1.f, 1.f, 1.f, 1.f, false);
437 438
438 // UpdateTiles with valid viewport. Should update tile viewport. 439 // UpdateTiles with valid viewport. Should update tile viewport.
439 // Note viewport is considered invalid if and only if in resourceless
440 // software draw.
441 bool resourceless_software_draw = false; 440 bool resourceless_software_draw = false;
442 gfx::Rect viewport = gfx::Rect(layer_bounds); 441 gfx::Rect viewport = gfx::Rect(layer_bounds);
443 gfx::Transform transform; 442 gfx::Transform transform;
444 host_impl_.SetExternalDrawConstraints(transform, 443 host_impl_.SetExternalDrawConstraints(transform,
445 viewport, 444 viewport,
446 viewport, 445 viewport,
447 viewport, 446 viewport,
448 transform, 447 transform,
449 resourceless_software_draw); 448 resourceless_software_draw);
450 active_layer_->draw_properties().visible_content_rect = viewport; 449 active_layer_->draw_properties().visible_content_rect = viewport;
451 active_layer_->draw_properties().screen_space_transform = transform; 450 active_layer_->draw_properties().screen_space_transform = transform;
452 active_layer_->UpdateTiles(NULL); 451 active_layer_->UpdateTiles(NULL);
453 452
454 gfx::Rect visible_rect_for_tile_priority = 453 gfx::Rect visible_rect_for_tile_priority =
455 active_layer_->visible_rect_for_tile_priority(); 454 active_layer_->visible_rect_for_tile_priority();
456 EXPECT_FALSE(visible_rect_for_tile_priority.IsEmpty()); 455 EXPECT_FALSE(visible_rect_for_tile_priority.IsEmpty());
457 gfx::Rect viewport_rect_for_tile_priority = 456 gfx::Rect viewport_rect_for_tile_priority =
458 active_layer_->viewport_rect_for_tile_priority(); 457 active_layer_->viewport_rect_for_tile_priority();
459 EXPECT_FALSE(viewport_rect_for_tile_priority.IsEmpty()); 458 EXPECT_FALSE(viewport_rect_for_tile_priority.IsEmpty());
460 gfx::Transform screen_space_transform_for_tile_priority = 459 gfx::Transform screen_space_transform_for_tile_priority =
461 active_layer_->screen_space_transform_for_tile_priority(); 460 active_layer_->screen_space_transform_for_tile_priority();
462 461
463 // Expand viewport and set it as invalid for prioritizing tiles. 462 // PictureLayerImpl does not make a special case for
464 // Should not update tile viewport. 463 // resource_less_software_draw, so the tile viewport and matrix should be
464 // respeced.
465 time_ticks += base::TimeDelta::FromMilliseconds(200); 465 time_ticks += base::TimeDelta::FromMilliseconds(200);
466 host_impl_.SetCurrentBeginFrameArgs( 466 host_impl_.SetCurrentBeginFrameArgs(
467 CreateBeginFrameArgsForTesting(time_ticks)); 467 CreateBeginFrameArgsForTesting(time_ticks));
468 resourceless_software_draw = true; 468 resourceless_software_draw = true;
469 viewport = gfx::ScaleToEnclosingRect(viewport, 2); 469 viewport = gfx::ScaleToEnclosingRect(viewport, 2);
470 transform.Translate(1.f, 1.f); 470 transform.Translate(1.f, 1.f);
471 active_layer_->draw_properties().visible_content_rect = viewport; 471 active_layer_->draw_properties().visible_content_rect = viewport;
472 active_layer_->draw_properties().screen_space_transform = transform; 472 active_layer_->draw_properties().screen_space_transform = transform;
473 host_impl_.SetExternalDrawConstraints(transform, 473 host_impl_.SetExternalDrawConstraints(transform,
474 viewport, 474 viewport,
475 viewport, 475 viewport,
476 viewport, 476 viewport,
477 transform, 477 transform,
478 resourceless_software_draw); 478 resourceless_software_draw);
479 active_layer_->UpdateTiles(NULL); 479 active_layer_->UpdateTiles(NULL);
480 480
481 visible_rect_for_tile_priority =
482 gfx::ScaleToEnclosingRect(visible_rect_for_tile_priority, 2);
483 viewport_rect_for_tile_priority =
484 gfx::ScaleToEnclosingRect(viewport_rect_for_tile_priority, 2);
485 screen_space_transform_for_tile_priority = transform;
481 EXPECT_RECT_EQ(visible_rect_for_tile_priority, 486 EXPECT_RECT_EQ(visible_rect_for_tile_priority,
482 active_layer_->visible_rect_for_tile_priority()); 487 active_layer_->visible_rect_for_tile_priority());
483 EXPECT_RECT_EQ(viewport_rect_for_tile_priority, 488 EXPECT_RECT_EQ(viewport_rect_for_tile_priority,
484 active_layer_->viewport_rect_for_tile_priority()); 489 active_layer_->viewport_rect_for_tile_priority());
485 EXPECT_TRANSFORMATION_MATRIX_EQ( 490 EXPECT_TRANSFORMATION_MATRIX_EQ(
486 screen_space_transform_for_tile_priority, 491 screen_space_transform_for_tile_priority,
487 active_layer_->screen_space_transform_for_tile_priority()); 492 active_layer_->screen_space_transform_for_tile_priority());
488
489 // Keep expanded viewport but mark it valid. Should update tile viewport.
490 time_ticks += base::TimeDelta::FromMilliseconds(200);
491 host_impl_.SetCurrentBeginFrameArgs(
492 CreateBeginFrameArgsForTesting(time_ticks));
493 resourceless_software_draw = false;
494 host_impl_.SetExternalDrawConstraints(transform,
495 viewport,
496 viewport,
497 viewport,
498 transform,
499 resourceless_software_draw);
500 active_layer_->UpdateTiles(NULL);
501
502 EXPECT_FALSE(visible_rect_for_tile_priority ==
503 active_layer_->visible_rect_for_tile_priority());
504 EXPECT_FALSE(viewport_rect_for_tile_priority ==
505 active_layer_->viewport_rect_for_tile_priority());
506 EXPECT_FALSE(screen_space_transform_for_tile_priority ==
507 active_layer_->screen_space_transform_for_tile_priority());
508 } 493 }
509 494
510 TEST_F(PictureLayerImplTest, InvalidViewportAfterReleaseResources) { 495 TEST_F(PictureLayerImplTest, InvalidViewportAfterReleaseResources) {
511 gfx::Size tile_size(100, 100); 496 gfx::Size tile_size(100, 100);
512 gfx::Size layer_bounds(400, 400); 497 gfx::Size layer_bounds(400, 400);
513 498
514 scoped_refptr<FakePicturePileImpl> pending_pile = 499 scoped_refptr<FakePicturePileImpl> pending_pile =
515 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); 500 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds);
516 scoped_refptr<FakePicturePileImpl> active_pile = 501 scoped_refptr<FakePicturePileImpl> active_pile =
517 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); 502 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds);
(...skipping 2518 matching lines...) Expand 10 before | Expand all | Expand 10 after
3036 EXPECT_EQ(active_layer_->HighResTiling()->AllTilesForTesting().size(), 0u); 3021 EXPECT_EQ(active_layer_->HighResTiling()->AllTilesForTesting().size(), 0u);
3037 3022
3038 // Since the active layer has no tiles at all, the pending layer doesn't 3023 // Since the active layer has no tiles at all, the pending layer doesn't
3039 // need content in order to activate. 3024 // need content in order to activate.
3040 pending_layer_->MarkVisibleResourcesAsRequired(); 3025 pending_layer_->MarkVisibleResourcesAsRequired();
3041 AssertNoTilesRequired(pending_layer_->HighResTiling()); 3026 AssertNoTilesRequired(pending_layer_->HighResTiling());
3042 if (host_impl_.settings().create_low_res_tiling) 3027 if (host_impl_.settings().create_low_res_tiling)
3043 AssertNoTilesRequired(pending_layer_->LowResTiling()); 3028 AssertNoTilesRequired(pending_layer_->LowResTiling());
3044 } 3029 }
3045 3030
3046 TEST_F(NoLowResPictureLayerImplTest, InvalidViewportForPrioritizingTiles) { 3031 TEST_F(NoLowResPictureLayerImplTest,
3032 ResourcelessSoftwareDrawHasValidViewportForTilePriority) {
3047 base::TimeTicks time_ticks; 3033 base::TimeTicks time_ticks;
3048 time_ticks += base::TimeDelta::FromMilliseconds(1); 3034 time_ticks += base::TimeDelta::FromMilliseconds(1);
3049 host_impl_.SetCurrentBeginFrameArgs( 3035 host_impl_.SetCurrentBeginFrameArgs(
3050 CreateBeginFrameArgsForTesting(time_ticks)); 3036 CreateBeginFrameArgsForTesting(time_ticks));
3051 3037
3052 gfx::Size tile_size(100, 100); 3038 gfx::Size tile_size(100, 100);
3053 gfx::Size layer_bounds(400, 400); 3039 gfx::Size layer_bounds(400, 400);
3054 3040
3055 scoped_refptr<FakePicturePileImpl> pending_pile = 3041 scoped_refptr<FakePicturePileImpl> pending_pile =
3056 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); 3042 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds);
3057 scoped_refptr<FakePicturePileImpl> active_pile = 3043 scoped_refptr<FakePicturePileImpl> active_pile =
3058 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); 3044 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds);
3059 3045
3060 SetupTrees(pending_pile, active_pile); 3046 SetupTrees(pending_pile, active_pile);
3061 3047
3062 Region invalidation; 3048 Region invalidation;
3063 AddDefaultTilingsWithInvalidation(invalidation); 3049 AddDefaultTilingsWithInvalidation(invalidation);
3064 SetupDrawPropertiesAndUpdateTiles(active_layer_, 1.f, 1.f, 1.f, 1.f, false); 3050 SetupDrawPropertiesAndUpdateTiles(active_layer_, 1.f, 1.f, 1.f, 1.f, false);
3065 3051
3066 // UpdateTiles with valid viewport. Should update tile viewport. 3052 // UpdateTiles with valid viewport. Should update tile viewport.
3067 // Note viewport is considered invalid if and only if in resourceless
3068 // software draw.
3069 bool resourceless_software_draw = false; 3053 bool resourceless_software_draw = false;
3070 gfx::Rect viewport = gfx::Rect(layer_bounds); 3054 gfx::Rect viewport = gfx::Rect(layer_bounds);
3071 gfx::Transform transform; 3055 gfx::Transform transform;
3072 host_impl_.SetExternalDrawConstraints(transform, 3056 host_impl_.SetExternalDrawConstraints(transform,
3073 viewport, 3057 viewport,
3074 viewport, 3058 viewport,
3075 viewport, 3059 viewport,
3076 transform, 3060 transform,
3077 resourceless_software_draw); 3061 resourceless_software_draw);
3078 active_layer_->draw_properties().visible_content_rect = viewport; 3062 active_layer_->draw_properties().visible_content_rect = viewport;
3079 active_layer_->draw_properties().screen_space_transform = transform; 3063 active_layer_->draw_properties().screen_space_transform = transform;
3080 active_layer_->UpdateTiles(NULL); 3064 active_layer_->UpdateTiles(NULL);
3081 3065
3082 gfx::Rect visible_rect_for_tile_priority = 3066 gfx::Rect visible_rect_for_tile_priority =
3083 active_layer_->visible_rect_for_tile_priority(); 3067 active_layer_->visible_rect_for_tile_priority();
3084 EXPECT_FALSE(visible_rect_for_tile_priority.IsEmpty()); 3068 EXPECT_FALSE(visible_rect_for_tile_priority.IsEmpty());
3085 gfx::Rect viewport_rect_for_tile_priority = 3069 gfx::Rect viewport_rect_for_tile_priority =
3086 active_layer_->viewport_rect_for_tile_priority(); 3070 active_layer_->viewport_rect_for_tile_priority();
3087 EXPECT_FALSE(viewport_rect_for_tile_priority.IsEmpty()); 3071 EXPECT_FALSE(viewport_rect_for_tile_priority.IsEmpty());
3088 gfx::Transform screen_space_transform_for_tile_priority = 3072 gfx::Transform screen_space_transform_for_tile_priority =
3089 active_layer_->screen_space_transform_for_tile_priority(); 3073 active_layer_->screen_space_transform_for_tile_priority();
3090 3074
3091 // Expand viewport and set it as invalid for prioritizing tiles. 3075 // PictureLayerImpl does not make a special case for
3092 // Should not update tile viewport. 3076 // resource_less_software_draw, so the tile viewport and matrix should be
3077 // respeced.
3093 time_ticks += base::TimeDelta::FromMilliseconds(200); 3078 time_ticks += base::TimeDelta::FromMilliseconds(200);
3094 host_impl_.SetCurrentBeginFrameArgs( 3079 host_impl_.SetCurrentBeginFrameArgs(
3095 CreateBeginFrameArgsForTesting(time_ticks)); 3080 CreateBeginFrameArgsForTesting(time_ticks));
3096 resourceless_software_draw = true; 3081 resourceless_software_draw = true;
3097 viewport = gfx::ScaleToEnclosingRect(viewport, 2); 3082 viewport = gfx::ScaleToEnclosingRect(viewport, 2);
3098 transform.Translate(1.f, 1.f); 3083 transform.Translate(1.f, 1.f);
3099 active_layer_->draw_properties().visible_content_rect = viewport; 3084 active_layer_->draw_properties().visible_content_rect = viewport;
3100 active_layer_->draw_properties().screen_space_transform = transform; 3085 active_layer_->draw_properties().screen_space_transform = transform;
3101 host_impl_.SetExternalDrawConstraints(transform, 3086 host_impl_.SetExternalDrawConstraints(transform,
3102 viewport, 3087 viewport,
3103 viewport, 3088 viewport,
3104 viewport, 3089 viewport,
3105 transform, 3090 transform,
3106 resourceless_software_draw); 3091 resourceless_software_draw);
3107 active_layer_->UpdateTiles(NULL); 3092 active_layer_->UpdateTiles(NULL);
3108 3093
3094 visible_rect_for_tile_priority =
3095 gfx::ScaleToEnclosingRect(visible_rect_for_tile_priority, 2);
3096 viewport_rect_for_tile_priority =
3097 gfx::ScaleToEnclosingRect(viewport_rect_for_tile_priority, 2);
3098 screen_space_transform_for_tile_priority = transform;
3099
3109 EXPECT_RECT_EQ(visible_rect_for_tile_priority, 3100 EXPECT_RECT_EQ(visible_rect_for_tile_priority,
3110 active_layer_->visible_rect_for_tile_priority()); 3101 active_layer_->visible_rect_for_tile_priority());
3111 EXPECT_RECT_EQ(viewport_rect_for_tile_priority, 3102 EXPECT_RECT_EQ(viewport_rect_for_tile_priority,
3112 active_layer_->viewport_rect_for_tile_priority()); 3103 active_layer_->viewport_rect_for_tile_priority());
3113 EXPECT_TRANSFORMATION_MATRIX_EQ( 3104 EXPECT_TRANSFORMATION_MATRIX_EQ(
3114 screen_space_transform_for_tile_priority, 3105 screen_space_transform_for_tile_priority,
3115 active_layer_->screen_space_transform_for_tile_priority()); 3106 active_layer_->screen_space_transform_for_tile_priority());
3116
3117 // Keep expanded viewport but mark it valid. Should update tile viewport.
3118 time_ticks += base::TimeDelta::FromMilliseconds(200);
3119 host_impl_.SetCurrentBeginFrameArgs(
3120 CreateBeginFrameArgsForTesting(time_ticks));
3121 resourceless_software_draw = false;
3122 host_impl_.SetExternalDrawConstraints(transform,
3123 viewport,
3124 viewport,
3125 viewport,
3126 transform,
3127 resourceless_software_draw);
3128 active_layer_->UpdateTiles(NULL);
3129
3130 EXPECT_FALSE(visible_rect_for_tile_priority ==
3131 active_layer_->visible_rect_for_tile_priority());
3132 EXPECT_FALSE(viewport_rect_for_tile_priority ==
3133 active_layer_->viewport_rect_for_tile_priority());
3134 EXPECT_FALSE(screen_space_transform_for_tile_priority ==
3135 active_layer_->screen_space_transform_for_tile_priority());
3136 } 3107 }
3137 3108
3138 TEST_F(NoLowResPictureLayerImplTest, InvalidViewportAfterReleaseResources) { 3109 TEST_F(NoLowResPictureLayerImplTest, InvalidViewportAfterReleaseResources) {
3139 gfx::Size tile_size(100, 100); 3110 gfx::Size tile_size(100, 100);
3140 gfx::Size layer_bounds(400, 400); 3111 gfx::Size layer_bounds(400, 400);
3141 3112
3142 scoped_refptr<FakePicturePileImpl> pending_pile = 3113 scoped_refptr<FakePicturePileImpl> pending_pile =
3143 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); 3114 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds);
3144 scoped_refptr<FakePicturePileImpl> active_pile = 3115 scoped_refptr<FakePicturePileImpl> active_pile =
3145 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); 3116 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds);
(...skipping 1026 matching lines...) Expand 10 before | Expand all | Expand 10 after
4172 ActivateTree(); 4143 ActivateTree();
4173 EXPECT_TRUE(active_layer_->GetRecycledTwinLayer()); 4144 EXPECT_TRUE(active_layer_->GetRecycledTwinLayer());
4174 EXPECT_EQ(old_pending_layer_, active_layer_->GetRecycledTwinLayer()); 4145 EXPECT_EQ(old_pending_layer_, active_layer_->GetRecycledTwinLayer());
4175 4146
4176 host_impl_.ResetRecycleTreeForTesting(); 4147 host_impl_.ResetRecycleTreeForTesting();
4177 EXPECT_FALSE(active_layer_->GetRecycledTwinLayer()); 4148 EXPECT_FALSE(active_layer_->GetRecycledTwinLayer());
4178 } 4149 }
4179 4150
4180 } // namespace 4151 } // namespace
4181 } // namespace cc 4152 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698