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

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

Issue 2068413002: cc: Remove fixed raster scale, stop rasterizing with will-change. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: comments Created 4 years, 6 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/proto/begin_main_frame_and_commit_state.proto » ('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 <stddef.h> 7 #include <stddef.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <limits> 10 #include <limits>
(...skipping 907 matching lines...) Expand 10 before | Expand all | Expand 10 after
918 918
919 std::vector<PictureLayerTiling*> used_tilings; 919 std::vector<PictureLayerTiling*> used_tilings;
920 920
921 float low_res_factor = host_impl()->settings().low_res_contents_scale_factor; 921 float low_res_factor = host_impl()->settings().low_res_contents_scale_factor;
922 EXPECT_LT(low_res_factor, 1.f); 922 EXPECT_LT(low_res_factor, 1.f);
923 923
924 float scale = 1.f; 924 float scale = 1.f;
925 float page_scale = 1.f; 925 float page_scale = 1.f;
926 926
927 SetupDefaultTrees(layer_bounds); 927 SetupDefaultTrees(layer_bounds);
928 active_layer()->SetHasWillChangeTransformHint(true);
danakj 2016/06/16 18:15:29 What do you think of the test changes in https://c
928 EXPECT_EQ(2u, active_layer()->tilings()->num_tilings()); 929 EXPECT_EQ(2u, active_layer()->tilings()->num_tilings());
929 EXPECT_EQ(1.f, active_layer()->HighResTiling()->contents_scale()); 930 EXPECT_EQ(1.f, active_layer()->HighResTiling()->contents_scale());
930 931
931 // Ensure UpdateTiles won't remove any tilings. Note this is unrelated to 932 // Ensure UpdateTiles won't remove any tilings. Note this is unrelated to
932 // |used_tilings| variable, and it's here only to ensure that active_layer() 933 // |used_tilings| variable, and it's here only to ensure that active_layer()
933 // won't remove tilings before the test has a chance to verify behavior. 934 // won't remove tilings before the test has a chance to verify behavior.
934 active_layer()->MarkAllTilingsUsed(); 935 active_layer()->MarkAllTilingsUsed();
935 936
936 // We only have ideal tilings, so they aren't removed. 937 // We only have ideal tilings, so they aren't removed.
937 used_tilings.clear(); 938 used_tilings.clear();
(...skipping 884 matching lines...) Expand 10 before | Expand all | Expand 10 after
1822 host_impl()->AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1)); 1823 host_impl()->AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1));
1823 1824
1824 gfx::Size tile_size(100, 100); 1825 gfx::Size tile_size(100, 100);
1825 gfx::Size layer_bounds(200, 200); 1826 gfx::Size layer_bounds(200, 200);
1826 gfx::Size viewport_size(400, 400); 1827 gfx::Size viewport_size(400, 400);
1827 1828
1828 host_impl()->SetViewportSize(viewport_size); 1829 host_impl()->SetViewportSize(viewport_size);
1829 SetInitialDeviceScaleFactor(2.f); 1830 SetInitialDeviceScaleFactor(2.f);
1830 1831
1831 SetupDefaultTreesWithFixedTileSize(layer_bounds, tile_size, Region()); 1832 SetupDefaultTreesWithFixedTileSize(layer_bounds, tile_size, Region());
1833 active_layer()->SetHasWillChangeTransformHint(true);
1832 1834
1833 // One ideal tile exists, this will get used when drawing. 1835 // One ideal tile exists, this will get used when drawing.
1834 std::vector<Tile*> ideal_tiles; 1836 std::vector<Tile*> ideal_tiles;
1835 EXPECT_EQ(2.f, active_layer()->HighResTiling()->contents_scale()); 1837 EXPECT_EQ(2.f, active_layer()->HighResTiling()->contents_scale());
1836 ideal_tiles.push_back(active_layer()->HighResTiling()->TileAt(0, 0)); 1838 ideal_tiles.push_back(active_layer()->HighResTiling()->TileAt(0, 0));
1837 host_impl()->tile_manager()->InitializeTilesWithResourcesForTesting( 1839 host_impl()->tile_manager()->InitializeTilesWithResourcesForTesting(
1838 ideal_tiles); 1840 ideal_tiles);
1839 1841
1840 // Due to layer scale throttling, the raster contents scale is changed to 1, 1842 // Due to layer scale throttling, the raster contents scale is changed to 1,
1841 // while the ideal is still 2. 1843 // while the ideal is still 2.
(...skipping 1270 matching lines...) Expand 10 before | Expand all | Expand 10 after
3112 float maximum_animation_scale = 1.f; 3114 float maximum_animation_scale = 1.f;
3113 float starting_animation_scale = 0.f; 3115 float starting_animation_scale = 0.f;
3114 bool animating_transform = false; 3116 bool animating_transform = false;
3115 3117
3116 SetContentsScaleOnBothLayers(contents_scale, device_scale, page_scale, 3118 SetContentsScaleOnBothLayers(contents_scale, device_scale, page_scale,
3117 maximum_animation_scale, 3119 maximum_animation_scale,
3118 starting_animation_scale, animating_transform); 3120 starting_animation_scale, animating_transform);
3119 EXPECT_BOTH_EQ(HighResTiling()->contents_scale(), 2.f); 3121 EXPECT_BOTH_EQ(HighResTiling()->contents_scale(), 2.f);
3120 3122
3121 // Changing the source scale without being in an animation will cause 3123 // Changing the source scale without being in an animation will cause
3122 // the layer to reset its source scale to 1.f. 3124 // the layer to change scale.
3123 contents_scale = 3.f; 3125 contents_scale = 3.f;
3124 3126
3125 SetContentsScaleOnBothLayers(contents_scale, device_scale, page_scale, 3127 SetContentsScaleOnBothLayers(contents_scale, device_scale, page_scale,
3126 maximum_animation_scale, 3128 maximum_animation_scale,
3127 starting_animation_scale, animating_transform); 3129 starting_animation_scale, animating_transform);
3128 EXPECT_BOTH_EQ(HighResTiling()->contents_scale(), 1.f); 3130 EXPECT_BOTH_EQ(HighResTiling()->contents_scale(), 3.f);
3129 3131
3130 // Further changes to the source scale will no longer be reflected in the
3131 // contents scale.
3132 contents_scale = 0.5f; 3132 contents_scale = 0.5f;
3133 3133
3134 SetContentsScaleOnBothLayers(contents_scale, device_scale, page_scale, 3134 SetContentsScaleOnBothLayers(contents_scale, device_scale, page_scale,
3135 maximum_animation_scale, 3135 maximum_animation_scale,
3136 starting_animation_scale, animating_transform); 3136 starting_animation_scale, animating_transform);
3137 EXPECT_BOTH_EQ(HighResTiling()->contents_scale(), 1.f); 3137 EXPECT_BOTH_EQ(HighResTiling()->contents_scale(), 0.5f);
3138
3139 // However, if the layer has a will-change property, then the raster scale
3140 // will get fixed at the last value.
3141 active_layer()->SetHasWillChangeTransformHint(true);
3142 pending_layer()->SetHasWillChangeTransformHint(true);
3143
3144 contents_scale = 3.f;
3145
3146 SetContentsScaleOnBothLayers(contents_scale, device_scale, page_scale,
3147 maximum_animation_scale,
3148 starting_animation_scale, animating_transform);
3149 EXPECT_BOTH_EQ(HighResTiling()->contents_scale(), 0.5f);
3150
3151 // Further changes to the source scale will no longer be reflected in the
3152 // contents scale.
3153 contents_scale = 1.f;
3154
3155 SetContentsScaleOnBothLayers(contents_scale, device_scale, page_scale,
3156 maximum_animation_scale,
3157 starting_animation_scale, animating_transform);
3158 EXPECT_BOTH_EQ(HighResTiling()->contents_scale(), 0.5f);
3159
3160 // Disabling the will-change hint will once again make the raster scale update
3161 // with the ideal scale.
3162 active_layer()->SetHasWillChangeTransformHint(false);
3163 pending_layer()->SetHasWillChangeTransformHint(false);
3164
3165 contents_scale = 3.f;
3166
3167 SetContentsScaleOnBothLayers(contents_scale, device_scale, page_scale,
3168 maximum_animation_scale,
3169 starting_animation_scale, animating_transform);
3170 EXPECT_BOTH_EQ(HighResTiling()->contents_scale(), 3.f);
3138 } 3171 }
3139 3172
3140 TEST_F(PictureLayerImplTest, LowResReadyToDrawNotEnoughToActivate) { 3173 TEST_F(PictureLayerImplTest, LowResReadyToDrawNotEnoughToActivate) {
3141 gfx::Size tile_size(100, 100); 3174 gfx::Size tile_size(100, 100);
3142 gfx::Size layer_bounds(1000, 1000); 3175 gfx::Size layer_bounds(1000, 1000);
3143 3176
3144 // Make sure pending tree has tiles. 3177 // Make sure pending tree has tiles.
3145 gfx::Rect invalidation(gfx::Point(50, 50), tile_size); 3178 gfx::Rect invalidation(gfx::Point(50, 50), tile_size);
3146 SetupDefaultTreesWithFixedTileSize(layer_bounds, tile_size, invalidation); 3179 SetupDefaultTreesWithFixedTileSize(layer_bounds, tile_size, invalidation);
3147 3180
(...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after
3378 std::vector<PictureLayerTiling*> used_tilings; 3411 std::vector<PictureLayerTiling*> used_tilings;
3379 SetupDefaultTrees(layer_bounds); 3412 SetupDefaultTrees(layer_bounds);
3380 3413
3381 float low_res_factor = host_impl()->settings().low_res_contents_scale_factor; 3414 float low_res_factor = host_impl()->settings().low_res_contents_scale_factor;
3382 EXPECT_LT(low_res_factor, 1.f); 3415 EXPECT_LT(low_res_factor, 1.f);
3383 3416
3384 float device_scale = 1.7f; 3417 float device_scale = 1.7f;
3385 float page_scale = 3.2f; 3418 float page_scale = 3.2f;
3386 float scale = 1.f; 3419 float scale = 1.f;
3387 3420
3421 active_layer()->SetHasWillChangeTransformHint(true);
3388 ResetTilingsAndRasterScales(); 3422 ResetTilingsAndRasterScales();
3389 3423
3390 SetContentsScaleOnBothLayers(scale, device_scale, page_scale, 1.f, 0.f, 3424 SetContentsScaleOnBothLayers(scale, device_scale, page_scale, 1.f, 0.f,
3391 false); 3425 false);
3392 ASSERT_EQ(1u, active_layer()->tilings()->num_tilings()); 3426 ASSERT_EQ(1u, active_layer()->tilings()->num_tilings());
3393 3427
3394 // Ensure UpdateTiles won't remove any tilings. Note this is unrelated to 3428 // Ensure UpdateTiles won't remove any tilings. Note this is unrelated to
3395 // |used_tilings| variable, and it's here only to ensure that active_layer() 3429 // |used_tilings| variable, and it's here only to ensure that active_layer()
3396 // won't remove tilings before the test has a chance to verify behavior. 3430 // won't remove tilings before the test has a chance to verify behavior.
3397 active_layer()->MarkAllTilingsUsed(); 3431 active_layer()->MarkAllTilingsUsed();
(...skipping 1364 matching lines...) Expand 10 before | Expand all | Expand 10 after
4762 // New low res tiling. 4796 // New low res tiling.
4763 EXPECT_TRUE(tilings->tiling_at(2)->may_contain_low_resolution_tiles()); 4797 EXPECT_TRUE(tilings->tiling_at(2)->may_contain_low_resolution_tiles());
4764 4798
4765 // This tiling will be high res now, it won't contain low res content since it 4799 // This tiling will be high res now, it won't contain low res content since it
4766 // was all destroyed. 4800 // was all destroyed.
4767 EXPECT_FALSE(tilings->tiling_at(1)->may_contain_low_resolution_tiles()); 4801 EXPECT_FALSE(tilings->tiling_at(1)->may_contain_low_resolution_tiles());
4768 } 4802 }
4769 4803
4770 } // namespace 4804 } // namespace
4771 } // namespace cc 4805 } // namespace cc
OLDNEW
« no previous file with comments | « cc/layers/picture_layer_impl.cc ('k') | cc/proto/begin_main_frame_and_commit_state.proto » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698