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

Unified Diff: cc/layers/picture_layer_impl_unittest.cc

Issue 1591513002: cc: Early out of UpdateTiles for resoureceless draw (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix perftests Created 4 years, 11 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « cc/layers/picture_layer_impl.cc ('k') | cc/test/fake_picture_layer_impl.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/layers/picture_layer_impl_unittest.cc
diff --git a/cc/layers/picture_layer_impl_unittest.cc b/cc/layers/picture_layer_impl_unittest.cc
index 5d16d8f69195376bacd0762e82a79eab4a4a1ae4..9d1bbc90c5428e0ea12e22550f96961e68902782 100644
--- a/cc/layers/picture_layer_impl_unittest.cc
+++ b/cc/layers/picture_layer_impl_unittest.cc
@@ -267,14 +267,13 @@ class PictureLayerImplTest : public testing::Test {
host_impl_.pending_tree()->UpdateDrawProperties(update_lcd_text);
}
- void SetupDrawPropertiesAndUpdateTiles(
- FakePictureLayerImpl* layer,
- float ideal_contents_scale,
- float device_scale_factor,
- float page_scale_factor,
- float maximum_animation_contents_scale,
- float starting_animation_contents_scale,
- bool animating_transform_to_screen) {
+ void SetupDrawProperties(FakePictureLayerImpl* layer,
+ float ideal_contents_scale,
+ float device_scale_factor,
+ float page_scale_factor,
+ float maximum_animation_contents_scale,
+ float starting_animation_contents_scale,
+ bool animating_transform_to_screen) {
layer->layer_tree_impl()->SetDeviceScaleFactor(device_scale_factor);
host_impl_.active_tree()->SetPageScaleOnActiveTree(page_scale_factor);
@@ -288,9 +287,23 @@ class PictureLayerImplTest : public testing::Test {
starting_animation_contents_scale;
layer->draw_properties().screen_space_transform_is_animating =
animating_transform_to_screen;
- bool resourceless_software_draw = false;
- layer->UpdateTiles(resourceless_software_draw);
}
+
+ void SetupDrawPropertiesAndUpdateTiles(
+ FakePictureLayerImpl* layer,
+ float ideal_contents_scale,
+ float device_scale_factor,
+ float page_scale_factor,
+ float maximum_animation_contents_scale,
+ float starting_animation_contents_scale,
+ bool animating_transform_to_screen) {
+ SetupDrawProperties(layer, ideal_contents_scale, device_scale_factor,
+ page_scale_factor, maximum_animation_contents_scale,
+ starting_animation_contents_scale,
+ animating_transform_to_screen);
+ layer->UpdateTiles();
+ }
+
static void VerifyAllPrioritizedTilesExistAndHaveRasterSource(
const PictureLayerTiling* tiling,
DisplayListRasterSource* raster_source) {
@@ -546,89 +559,6 @@ TEST_F(PictureLayerImplTest, ExternalViewportRectForPrioritizingTiles) {
}
}
-TEST_F(PictureLayerImplTest, InvalidViewportForPrioritizingTiles) {
- host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1));
- gfx::Size layer_bounds(400, 400);
- SetupDefaultTrees(layer_bounds);
-
- SetupDrawPropertiesAndUpdateTiles(active_layer_, 1.f, 1.f, 1.f, 1.f, 0.f,
- false);
-
- // UpdateTiles with valid viewport. Should update tile viewport.
- // Note viewport is considered invalid if and only if in resourceless
- // software draw.
- bool resourceless_software_draw = false;
- gfx::Rect viewport = gfx::Rect(layer_bounds);
- gfx::Transform draw_transform;
- gfx::Transform tile_priority_transform;
- host_impl_.SetExternalTilePriorityConstraints(viewport,
- tile_priority_transform);
- active_layer_->draw_properties().visible_layer_rect = viewport;
- active_layer_->draw_properties().screen_space_transform = draw_transform;
- active_layer_->UpdateTiles(resourceless_software_draw);
-
- gfx::Rect visible_rect_for_tile_priority =
- active_layer_->visible_rect_for_tile_priority();
- EXPECT_FALSE(visible_rect_for_tile_priority.IsEmpty());
- gfx::Transform screen_space_transform_for_tile_priority =
- active_layer_->draw_properties().screen_space_transform;
-
- // Expand viewport and set it as invalid for prioritizing tiles.
- // Should update viewport and transform, but not update visible rect.
- host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200));
- resourceless_software_draw = true;
- viewport = gfx::ScaleToEnclosingRect(viewport, 2);
- tile_priority_transform.Translate(1.f, 0.f);
- draw_transform.Translate(0.f, 1.f);
- active_layer_->draw_properties().visible_layer_rect = viewport;
- active_layer_->draw_properties().screen_space_transform = draw_transform;
- host_impl_.SetExternalTilePriorityConstraints(viewport,
- tile_priority_transform);
- active_layer_->UpdateTiles(resourceless_software_draw);
-
- // Transform for tile priority is not updated.
- EXPECT_TRANSFORMATION_MATRIX_EQ(
- screen_space_transform_for_tile_priority,
- active_layer_->screen_space_transform_for_tile_priority());
- // Visible rect for tile priority retains old value.
- EXPECT_EQ(visible_rect_for_tile_priority,
- active_layer_->visible_rect_for_tile_priority());
- ASSERT_GT(active_layer_->picture_layer_tiling_set()->num_tilings(), 0u);
- EXPECT_EQ(active_layer_->viewport_rect_for_tile_priority_in_content_space(),
- active_layer_->picture_layer_tiling_set()
- ->tiling_at(0)
- ->GetCurrentVisibleRectForTesting());
-
- // Keep expanded viewport but mark it valid. Should update tile viewport.
- host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200));
- resourceless_software_draw = false;
- host_impl_.SetExternalTilePriorityConstraints(viewport,
- tile_priority_transform);
- active_layer_->UpdateTiles(resourceless_software_draw);
-
- EXPECT_TRANSFORMATION_MATRIX_EQ(
- draw_transform,
- active_layer_->screen_space_transform_for_tile_priority());
- EXPECT_EQ(viewport, active_layer_->visible_rect_for_tile_priority());
-
- gfx::RectF visible_rect_in_content_space(viewport);
- gfx::Transform inverse_draw_transform;
- gfx::Transform inverse_tile_priority_transform;
- EXPECT_TRUE(draw_transform.GetInverse(&inverse_draw_transform));
- EXPECT_TRUE(
- tile_priority_transform.GetInverse(&inverse_tile_priority_transform));
- visible_rect_in_content_space = MathUtil::ProjectClippedRect(
- inverse_tile_priority_transform, visible_rect_in_content_space);
- visible_rect_in_content_space = MathUtil::ProjectClippedRect(
- inverse_draw_transform, visible_rect_in_content_space);
-
- ASSERT_GT(active_layer_->picture_layer_tiling_set()->num_tilings(), 0u);
- EXPECT_EQ(gfx::ToEnclosingRect(visible_rect_in_content_space),
- active_layer_->picture_layer_tiling_set()
- ->tiling_at(0)
- ->GetCurrentVisibleRectForTesting());
-}
-
TEST_F(PictureLayerImplTest, ViewportRectForTilePriorityIsCached) {
host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1));
gfx::Size layer_bounds(400, 400);
@@ -1811,7 +1741,6 @@ TEST_F(NoLowResPictureLayerImplTest, MarkRequiredOffscreenTiles) {
gfx::Size layer_bounds(200, 200);
gfx::Transform transform;
- bool resourceless_software_draw = false;
gfx::Rect viewport(0, 0, 100, 200);
host_impl_.SetExternalTilePriorityConstraints(viewport, transform);
@@ -1826,7 +1755,7 @@ TEST_F(NoLowResPictureLayerImplTest, MarkRequiredOffscreenTiles) {
base::TimeTicks time_ticks;
host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1));
- pending_layer_->UpdateTiles(resourceless_software_draw);
+ pending_layer_->UpdateTiles();
int num_visible = 0;
int num_offscreen = 0;
@@ -1867,7 +1796,6 @@ TEST_F(NoLowResPictureLayerImplTest,
gfx::Rect viewport = gfx::Rect(layer_bounds);
gfx::Transform transform;
gfx::Transform transform_for_tile_priority;
- bool resourceless_software_draw = false;
host_impl_.SetExternalTilePriorityConstraints(
external_viewport_for_tile_priority, transform_for_tile_priority);
host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1));
@@ -1878,7 +1806,7 @@ TEST_F(NoLowResPictureLayerImplTest,
// external_viewport_for_tile_priority.
pending_layer_->draw_properties().visible_layer_rect = visible_layer_rect;
host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200));
- pending_layer_->UpdateTiles(resourceless_software_draw);
+ pending_layer_->UpdateTiles();
// Intersect the two rects. Any tile outside should not be required for
// activation.
@@ -3107,8 +3035,7 @@ TEST_F(PictureLayerImplTest, TilingSetRasterQueue) {
pending_layer_->draw_properties().visible_layer_rect =
gfx::Rect(1100, 1100, 500, 500);
- bool resourceless_software_draw = false;
- pending_layer_->UpdateTiles(resourceless_software_draw);
+ pending_layer_->UpdateTiles();
unique_tiles.clear();
high_res_tile_count = 0u;
@@ -3137,7 +3064,7 @@ TEST_F(PictureLayerImplTest, TilingSetRasterQueue) {
pending_layer_->draw_properties().visible_layer_rect =
gfx::Rect(0, 0, 500, 500);
- pending_layer_->UpdateTiles(resourceless_software_draw);
+ pending_layer_->UpdateTiles();
std::vector<Tile*> high_res_tiles =
pending_layer_->HighResTiling()->AllTilesForTesting();
@@ -3669,60 +3596,6 @@ TEST_F(NoLowResPictureLayerImplTest, NothingRequiredIfActiveMissingTiles) {
AssertNoTilesRequired(pending_layer_->LowResTiling());
}
-TEST_F(NoLowResPictureLayerImplTest, InvalidViewportForPrioritizingTiles) {
- host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1));
- gfx::Size layer_bounds(400, 400);
- SetupDefaultTrees(layer_bounds);
-
- SetupDrawPropertiesAndUpdateTiles(active_layer_, 1.f, 1.f, 1.f, 1.f, 0.f,
- false);
-
- // UpdateTiles with valid viewport. Should update tile viewport.
- // Note viewport is considered invalid if and only if in resourceless
- // software draw.
- bool resourceless_software_draw = false;
- gfx::Rect viewport = gfx::Rect(layer_bounds);
- gfx::Transform transform;
- host_impl_.SetExternalTilePriorityConstraints(viewport, transform);
- active_layer_->draw_properties().visible_layer_rect = viewport;
- active_layer_->draw_properties().screen_space_transform = transform;
- active_layer_->UpdateTiles(resourceless_software_draw);
-
- gfx::Rect visible_rect_for_tile_priority =
- active_layer_->visible_rect_for_tile_priority();
- EXPECT_FALSE(visible_rect_for_tile_priority.IsEmpty());
- gfx::Transform screen_space_transform_for_tile_priority =
- active_layer_->draw_properties().screen_space_transform;
-
- // Expand viewport and set it as invalid for prioritizing tiles.
- // Should update viewport and transform, but not update visible rect.
- host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200));
- resourceless_software_draw = true;
- viewport = gfx::ScaleToEnclosingRect(viewport, 2);
- transform.Translate(1.f, 1.f);
- active_layer_->draw_properties().visible_layer_rect = viewport;
- active_layer_->draw_properties().screen_space_transform = transform;
- host_impl_.SetExternalTilePriorityConstraints(viewport, transform);
- active_layer_->UpdateTiles(resourceless_software_draw);
-
- // Transform for tile priority is updated.
- EXPECT_TRANSFORMATION_MATRIX_EQ(
- transform, active_layer_->draw_properties().screen_space_transform);
- // Visible rect for tile priority retains old value.
- EXPECT_EQ(visible_rect_for_tile_priority,
- active_layer_->visible_rect_for_tile_priority());
-
- // Keep expanded viewport but mark it valid. Should update tile viewport.
- host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200));
- resourceless_software_draw = false;
- host_impl_.SetExternalTilePriorityConstraints(viewport, transform);
- active_layer_->UpdateTiles(resourceless_software_draw);
-
- EXPECT_TRANSFORMATION_MATRIX_EQ(
- transform, active_layer_->draw_properties().screen_space_transform);
- EXPECT_EQ(viewport, active_layer_->visible_rect_for_tile_priority());
-}
-
TEST_F(NoLowResPictureLayerImplTest, CleanUpTilings) {
gfx::Size layer_bounds(1300, 1900);
std::vector<PictureLayerTiling*> used_tilings;
« no previous file with comments | « cc/layers/picture_layer_impl.cc ('k') | cc/test/fake_picture_layer_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698