| 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> |
| (...skipping 1154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1165 // Ensure UpdateTiles won't remove any tilings. | 1165 // Ensure UpdateTiles won't remove any tilings. |
| 1166 active_layer_->MarkAllTilingsUsed(); | 1166 active_layer_->MarkAllTilingsUsed(); |
| 1167 | 1167 |
| 1168 // Mark the non-ideal tilings as used. They won't be removed. | 1168 // Mark the non-ideal tilings as used. They won't be removed. |
| 1169 used_tilings.clear(); | 1169 used_tilings.clear(); |
| 1170 used_tilings.push_back(active_layer_->tilings()->tiling_at(1)); | 1170 used_tilings.push_back(active_layer_->tilings()->tiling_at(1)); |
| 1171 used_tilings.push_back(active_layer_->tilings()->tiling_at(3)); | 1171 used_tilings.push_back(active_layer_->tilings()->tiling_at(3)); |
| 1172 active_layer_->CleanUpTilingsOnActiveLayer(used_tilings); | 1172 active_layer_->CleanUpTilingsOnActiveLayer(used_tilings); |
| 1173 ASSERT_EQ(4u, active_layer_->tilings()->num_tilings()); | 1173 ASSERT_EQ(4u, active_layer_->tilings()->num_tilings()); |
| 1174 | 1174 |
| 1175 // Now move the ideal scale to 0.5. | 1175 // Now move the ideal scale to 0.5. Our target stays 1.2. |
| 1176 SetContentsScaleOnBothLayers(0.5f, 1.f, page_scale, 1.f, 0.f, false); | 1176 SetContentsScaleOnBothLayers(0.5f, 1.f, page_scale, 1.f, 0.f, false); |
| 1177 ASSERT_EQ(6u, active_layer_->tilings()->num_tilings()); | |
| 1178 | 1177 |
| 1179 // And begin an animation to 1.2. There are now 3 tilings, 0.5, 1.0 and 1.2. | 1178 // The high resolution tiling is between target and ideal, so is not |
| 1180 // The the 0.5 is ideal, but the 1.2 is high res. 1.0 sits between them. | 1179 // removed. The low res tiling for the old ideal=1.0 scale is removed. |
| 1181 // high-res tiling is in the middle. There are also ex-low-res tilings paired | |
| 1182 // with each of the 3 tilings mentioned here, but since we're animating none | |
| 1183 // are marked as LOW_RESOLUTION. | |
| 1184 SetContentsScaleOnBothLayers(0.5, 1.f, page_scale, 1.2f, 0.f, true); | |
| 1185 ASSERT_EQ(6u, active_layer_->tilings()->num_tilings()); | |
| 1186 EXPECT_EQ(HIGH_RESOLUTION, | |
| 1187 active_layer_->tilings()->tiling_at(0)->resolution()); | |
| 1188 EXPECT_EQ(1.2f, // High-res, though not the ideal scale. | |
| 1189 active_layer_->tilings()->tiling_at(0)->contents_scale()); | |
| 1190 EXPECT_EQ(1.f, // Tiling in the middle attack. | |
| 1191 active_layer_->tilings()->tiling_at(1)->contents_scale()); | |
| 1192 EXPECT_EQ(0.5f, // Ideal scale, but not considered high-res. | |
| 1193 active_layer_->tilings()->tiling_at(2)->contents_scale()); | |
| 1194 | |
| 1195 EXPECT_EQ(NON_IDEAL_RESOLUTION, | |
| 1196 active_layer_->tilings()->tiling_at(1)->resolution()); | |
| 1197 EXPECT_EQ(NON_IDEAL_RESOLUTION, | |
| 1198 active_layer_->tilings()->tiling_at(2)->resolution()); | |
| 1199 EXPECT_EQ(NON_IDEAL_RESOLUTION, | |
| 1200 active_layer_->tilings()->tiling_at(3)->resolution()); | |
| 1201 EXPECT_EQ(NON_IDEAL_RESOLUTION, | |
| 1202 active_layer_->tilings()->tiling_at(4)->resolution()); | |
| 1203 EXPECT_EQ(NON_IDEAL_RESOLUTION, | |
| 1204 active_layer_->tilings()->tiling_at(5)->resolution()); | |
| 1205 | |
| 1206 EXPECT_EQ(1.2f * low_res_factor, // Low-res, paired with current high-res. | |
| 1207 active_layer_->tilings()->tiling_at(3)->contents_scale()); | |
| 1208 EXPECT_EQ(1.f * low_res_factor, // Ex-low-res, paired with the middle one. | |
| 1209 active_layer_->tilings()->tiling_at(4)->contents_scale()); | |
| 1210 EXPECT_EQ(0.5f * low_res_factor, // Ex-low-res, paired with current ideal. | |
| 1211 active_layer_->tilings()->tiling_at(5)->contents_scale()); | |
| 1212 | |
| 1213 // The high resolution tiling is between target and ideal, so is not removed. | |
| 1214 // The ex-low-res tilings are all smaller scale, so they are removed. | |
| 1215 used_tilings.clear(); | 1180 used_tilings.clear(); |
| 1216 active_layer_->CleanUpTilingsOnActiveLayer(used_tilings); | 1181 active_layer_->CleanUpTilingsOnActiveLayer(used_tilings); |
| 1217 ASSERT_EQ(3u, active_layer_->tilings()->num_tilings()); | 1182 ASSERT_EQ(3u, active_layer_->tilings()->num_tilings()); |
| 1218 | 1183 |
| 1219 // Now move the ideal scale to 1.0 on the active layer. The high-res tiling | 1184 // Now move the ideal scale to 1.0. Our target stays 1.2. |
| 1220 // stays 1.2. | 1185 SetContentsScaleOnBothLayers(1.f, 1.f, page_scale, 1.f, 0.f, false); |
| 1221 SetupDrawPropertiesAndUpdateTiles(active_layer_, 1.f, 1.f, page_scale, 1.2f, | |
| 1222 0.f, true); | |
| 1223 | 1186 |
| 1224 // All the tilings are between are target and the ideal, so they are not | 1187 // All the tilings are between are target and the ideal, so they are not |
| 1225 // Because the pending layer's ideal scale is still 0.5, all tilings fall | 1188 // removed. |
| 1226 // in the range [0.5,1.2] and are kept. | |
| 1227 used_tilings.clear(); | 1189 used_tilings.clear(); |
| 1228 active_layer_->CleanUpTilingsOnActiveLayer(used_tilings); | 1190 active_layer_->CleanUpTilingsOnActiveLayer(used_tilings); |
| 1229 ASSERT_EQ(3u, active_layer_->tilings()->num_tilings()); | 1191 ASSERT_EQ(3u, active_layer_->tilings()->num_tilings()); |
| 1230 | 1192 |
| 1231 // Move the ideal scale on the pending layer to 1.0 as well. Our high-res | 1193 // Now move the ideal scale to 1.1 on the active layer. Our target stays 1.2. |
| 1232 // stays 1.2 still. | 1194 SetupDrawPropertiesAndUpdateTiles(active_layer_, 1.1f, 1.f, page_scale, 1.f, |
| 1233 SetupDrawPropertiesAndUpdateTiles(pending_layer_, 1.f, 1.f, page_scale, 1.f, | |
| 1234 0.f, false); | 1195 0.f, false); |
| 1235 | 1196 |
| 1236 // Our 0.5 tiling now falls outside the range between our ideal scale and our | 1197 // Because the pending layer's ideal scale is still 1.0, our tilings fall |
| 1237 // high-res raster scale. But it is in our used tilings set, so nothing is | 1198 // in the range [1.0,1.2] and are kept. |
| 1238 // deleted. | |
| 1239 used_tilings.clear(); | 1199 used_tilings.clear(); |
| 1240 used_tilings.push_back(active_layer_->tilings()->tiling_at(2)); | |
| 1241 active_layer_->CleanUpTilingsOnActiveLayer(used_tilings); | 1200 active_layer_->CleanUpTilingsOnActiveLayer(used_tilings); |
| 1242 ASSERT_EQ(3u, active_layer_->tilings()->num_tilings()); | 1201 ASSERT_EQ(3u, active_layer_->tilings()->num_tilings()); |
| 1243 | 1202 |
| 1203 // Move the ideal scale on the pending layer to 1.1 as well. Our target stays |
| 1204 // 1.2 still. |
| 1205 SetupDrawPropertiesAndUpdateTiles(pending_layer_, 1.1f, 1.f, page_scale, 1.f, |
| 1206 0.f, false); |
| 1207 |
| 1208 // Our 1.0 tiling now falls outside the range between our ideal scale and our |
| 1209 // target raster scale. But it is in our used tilings set, so nothing is |
| 1210 // deleted. |
| 1211 used_tilings.clear(); |
| 1212 used_tilings.push_back(active_layer_->tilings()->tiling_at(1)); |
| 1213 active_layer_->CleanUpTilingsOnActiveLayer(used_tilings); |
| 1214 ASSERT_EQ(3u, active_layer_->tilings()->num_tilings()); |
| 1215 |
| 1244 // If we remove it from our used tilings set, it is outside the range to keep | 1216 // If we remove it from our used tilings set, it is outside the range to keep |
| 1245 // so it is deleted. | 1217 // so it is deleted. |
| 1246 used_tilings.clear(); | 1218 used_tilings.clear(); |
| 1247 active_layer_->CleanUpTilingsOnActiveLayer(used_tilings); | 1219 active_layer_->CleanUpTilingsOnActiveLayer(used_tilings); |
| 1248 ASSERT_EQ(2u, active_layer_->tilings()->num_tilings()); | 1220 ASSERT_EQ(2u, active_layer_->tilings()->num_tilings()); |
| 1249 } | 1221 } |
| 1250 | 1222 |
| 1251 TEST_F(PictureLayerImplTest, DontAddLowResDuringAnimation) { | 1223 TEST_F(PictureLayerImplTest, DontAddLowResDuringAnimation) { |
| 1252 // Make sure this layer covers multiple tiles, since otherwise low | 1224 // Make sure this layer covers multiple tiles, since otherwise low |
| 1253 // res won't get created because it is too small. | 1225 // res won't get created because it is too small. |
| (...skipping 796 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2050 | 2022 |
| 2051 TEST_F(PictureLayerImplTest, | 2023 TEST_F(PictureLayerImplTest, |
| 2052 HighResAndIdealResTileIsCompleteWhenRasterScaleIsNotIdeal) { | 2024 HighResAndIdealResTileIsCompleteWhenRasterScaleIsNotIdeal) { |
| 2053 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1)); | 2025 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1)); |
| 2054 | 2026 |
| 2055 gfx::Size tile_size(100, 100); | 2027 gfx::Size tile_size(100, 100); |
| 2056 gfx::Size layer_bounds(200, 200); | 2028 gfx::Size layer_bounds(200, 200); |
| 2057 gfx::Size viewport_size(400, 400); | 2029 gfx::Size viewport_size(400, 400); |
| 2058 | 2030 |
| 2059 host_impl_.SetViewportSize(viewport_size); | 2031 host_impl_.SetViewportSize(viewport_size); |
| 2032 SetInitialDeviceScaleFactor(2.f); |
| 2060 | 2033 |
| 2061 // Start with an ideal and raster contents scale of 2. | |
| 2062 SetInitialDeviceScaleFactor(2.f); | |
| 2063 SetupDefaultTreesWithFixedTileSize(layer_bounds, tile_size, Region()); | 2034 SetupDefaultTreesWithFixedTileSize(layer_bounds, tile_size, Region()); |
| 2064 | 2035 |
| 2065 // One ideal tile exists, this will get used when drawing. | 2036 // One ideal tile exists, this will get used when drawing. |
| 2066 std::vector<Tile*> ideal_tiles; | 2037 std::vector<Tile*> ideal_tiles; |
| 2067 EXPECT_EQ(2.f, active_layer_->HighResTiling()->contents_scale()); | 2038 EXPECT_EQ(2.f, active_layer_->HighResTiling()->contents_scale()); |
| 2068 ideal_tiles.push_back(active_layer_->HighResTiling()->TileAt(0, 0)); | 2039 ideal_tiles.push_back(active_layer_->HighResTiling()->TileAt(0, 0)); |
| 2069 host_impl_.tile_manager()->InitializeTilesWithResourcesForTesting( | 2040 host_impl_.tile_manager()->InitializeTilesWithResourcesForTesting( |
| 2070 ideal_tiles); | 2041 ideal_tiles); |
| 2071 | 2042 |
| 2072 // Due to the animation, the raster contents scale moves to 1, while the | 2043 // Due to layer scale throttling, the raster contents scale is changed to 1, |
| 2073 // ideal will still be 2. | 2044 // while the ideal is still 2. |
| 2045 SetupDrawPropertiesAndUpdateTiles(active_layer_, 1.f, 1.f, 1.f, 1.f, 0.f, |
| 2046 false); |
| 2074 SetupDrawPropertiesAndUpdateTiles(active_layer_, 2.f, 1.f, 1.f, 1.f, 0.f, | 2047 SetupDrawPropertiesAndUpdateTiles(active_layer_, 2.f, 1.f, 1.f, 1.f, 0.f, |
| 2075 true); | 2048 false); |
| 2076 | 2049 |
| 2077 EXPECT_EQ(1.f, active_layer_->HighResTiling()->contents_scale()); | 2050 EXPECT_EQ(1.f, active_layer_->HighResTiling()->contents_scale()); |
| 2078 EXPECT_EQ(1.f, active_layer_->raster_contents_scale()); | 2051 EXPECT_EQ(1.f, active_layer_->raster_contents_scale()); |
| 2079 EXPECT_EQ(2.f, active_layer_->ideal_contents_scale()); | 2052 EXPECT_EQ(2.f, active_layer_->ideal_contents_scale()); |
| 2080 | 2053 |
| 2081 // Both tilings still exist. | 2054 // Both tilings still exist. |
| 2082 ASSERT_GE(active_layer_->tilings()->num_tilings(), 2u); | |
| 2083 EXPECT_EQ(2.f, active_layer_->tilings()->tiling_at(0)->contents_scale()); | 2055 EXPECT_EQ(2.f, active_layer_->tilings()->tiling_at(0)->contents_scale()); |
| 2084 EXPECT_EQ(1.f, active_layer_->tilings()->tiling_at(1)->contents_scale()); | 2056 EXPECT_EQ(1.f, active_layer_->tilings()->tiling_at(1)->contents_scale()); |
| 2085 | 2057 |
| 2086 // All high res tiles have resources. | 2058 // All high res tiles have resources. |
| 2087 std::vector<Tile*> high_tiles = | 2059 std::vector<Tile*> high_tiles = |
| 2088 active_layer_->HighResTiling()->AllTilesForTesting(); | 2060 active_layer_->HighResTiling()->AllTilesForTesting(); |
| 2089 host_impl_.tile_manager()->InitializeTilesWithResourcesForTesting(high_tiles); | 2061 host_impl_.tile_manager()->InitializeTilesWithResourcesForTesting(high_tiles); |
| 2090 | 2062 |
| 2091 scoped_ptr<RenderPass> render_pass = RenderPass::Create(); | 2063 scoped_ptr<RenderPass> render_pass = RenderPass::Create(); |
| 2092 AppendQuadsData data; | 2064 AppendQuadsData data; |
| (...skipping 1250 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3343 float page_scale = 1.f; | 3315 float page_scale = 1.f; |
| 3344 float maximum_animation_scale = 1.f; | 3316 float maximum_animation_scale = 1.f; |
| 3345 float starting_animation_scale = 0.f; | 3317 float starting_animation_scale = 0.f; |
| 3346 bool animating_transform = false; | 3318 bool animating_transform = false; |
| 3347 | 3319 |
| 3348 SetContentsScaleOnBothLayers(contents_scale, device_scale, page_scale, | 3320 SetContentsScaleOnBothLayers(contents_scale, device_scale, page_scale, |
| 3349 maximum_animation_scale, | 3321 maximum_animation_scale, |
| 3350 starting_animation_scale, animating_transform); | 3322 starting_animation_scale, animating_transform); |
| 3351 EXPECT_BOTH_EQ(HighResTiling()->contents_scale(), 2.f); | 3323 EXPECT_BOTH_EQ(HighResTiling()->contents_scale(), 2.f); |
| 3352 | 3324 |
| 3353 // Changing the source scale without being in an animation should be | 3325 // Changing the source scale without being in an animation will cause |
| 3354 // immediately honored. | 3326 // the layer to reset its source scale to 1.f. |
| 3355 contents_scale = 3.f; | 3327 contents_scale = 3.f; |
| 3356 | 3328 |
| 3357 SetContentsScaleOnBothLayers(contents_scale, device_scale, page_scale, | 3329 SetContentsScaleOnBothLayers(contents_scale, device_scale, page_scale, |
| 3358 maximum_animation_scale, | 3330 maximum_animation_scale, |
| 3359 starting_animation_scale, animating_transform); | 3331 starting_animation_scale, animating_transform); |
| 3360 EXPECT_BOTH_EQ(HighResTiling()->contents_scale(), 3.f); | 3332 EXPECT_BOTH_EQ(HighResTiling()->contents_scale(), 1.f); |
| 3361 | 3333 |
| 3362 // Further changes to the source scale will continue to be honored. | 3334 // Further changes to the source scale will no longer be reflected in the |
| 3335 // contents scale. |
| 3363 contents_scale = 0.5f; | 3336 contents_scale = 0.5f; |
| 3364 | 3337 |
| 3365 SetContentsScaleOnBothLayers(contents_scale, device_scale, page_scale, | 3338 SetContentsScaleOnBothLayers(contents_scale, device_scale, page_scale, |
| 3366 maximum_animation_scale, | 3339 maximum_animation_scale, |
| 3367 starting_animation_scale, animating_transform); | 3340 starting_animation_scale, animating_transform); |
| 3368 EXPECT_BOTH_EQ(HighResTiling()->contents_scale(), 0.5f); | 3341 EXPECT_BOTH_EQ(HighResTiling()->contents_scale(), 1.f); |
| 3369 } | 3342 } |
| 3370 | 3343 |
| 3371 TEST_F(PictureLayerImplTest, LowResReadyToDrawNotEnoughToActivate) { | 3344 TEST_F(PictureLayerImplTest, LowResReadyToDrawNotEnoughToActivate) { |
| 3372 gfx::Size tile_size(100, 100); | 3345 gfx::Size tile_size(100, 100); |
| 3373 gfx::Size layer_bounds(1000, 1000); | 3346 gfx::Size layer_bounds(1000, 1000); |
| 3374 | 3347 |
| 3375 // Make sure pending tree has tiles. | 3348 // Make sure pending tree has tiles. |
| 3376 gfx::Rect invalidation(gfx::Point(50, 50), tile_size); | 3349 gfx::Rect invalidation(gfx::Point(50, 50), tile_size); |
| 3377 SetupDefaultTreesWithFixedTileSize(layer_bounds, tile_size, invalidation); | 3350 SetupDefaultTreesWithFixedTileSize(layer_bounds, tile_size, invalidation); |
| 3378 | 3351 |
| (...skipping 349 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3728 | 3701 |
| 3729 // Ensure UpdateTiles won't remove any tilings. | 3702 // Ensure UpdateTiles won't remove any tilings. |
| 3730 active_layer_->MarkAllTilingsUsed(); | 3703 active_layer_->MarkAllTilingsUsed(); |
| 3731 | 3704 |
| 3732 // Mark the non-ideal tilings as used. They won't be removed. | 3705 // Mark the non-ideal tilings as used. They won't be removed. |
| 3733 used_tilings.clear(); | 3706 used_tilings.clear(); |
| 3734 used_tilings.push_back(active_layer_->tilings()->tiling_at(1)); | 3707 used_tilings.push_back(active_layer_->tilings()->tiling_at(1)); |
| 3735 active_layer_->CleanUpTilingsOnActiveLayer(used_tilings); | 3708 active_layer_->CleanUpTilingsOnActiveLayer(used_tilings); |
| 3736 ASSERT_EQ(2u, active_layer_->tilings()->num_tilings()); | 3709 ASSERT_EQ(2u, active_layer_->tilings()->num_tilings()); |
| 3737 | 3710 |
| 3738 // Now move the ideal scale to 0.5. | 3711 // Now move the ideal scale to 0.5. Our target stays 1.2. |
| 3739 SetContentsScaleOnBothLayers(0.5f, device_scale, page_scale, 1.f, 0.f, false); | 3712 SetContentsScaleOnBothLayers(0.5f, device_scale, page_scale, 1.f, 0.f, false); |
| 3740 ASSERT_EQ(3u, active_layer_->tilings()->num_tilings()); | |
| 3741 | |
| 3742 // And begin an animation to 1.2. There are now 3 tilings, 0.5, 1.0 and 1.2. | |
| 3743 // The the 0.5 is ideal, but the 1.2 is high res. 1.0 sits between them. | |
| 3744 // high-res tiling is in the middle. | |
| 3745 SetContentsScaleOnBothLayers(0.5, device_scale, page_scale, 1.2f, 0.f, true); | |
| 3746 EXPECT_EQ(HIGH_RESOLUTION, | |
| 3747 active_layer_->tilings()->tiling_at(0)->resolution()); | |
| 3748 EXPECT_EQ(1.2f, // High-res, though not the ideal scale. | |
| 3749 active_layer_->tilings()->tiling_at(0)->contents_scale()); | |
| 3750 EXPECT_EQ(1.f, // Tiling in the middle attack. | |
| 3751 active_layer_->tilings()->tiling_at(1)->contents_scale()); | |
| 3752 EXPECT_EQ(0.5f, // Ideal scale, but not considered high-res. | |
| 3753 active_layer_->tilings()->tiling_at(2)->contents_scale()); | |
| 3754 | 3713 |
| 3755 // The high resolution tiling is between target and ideal, so is not | 3714 // The high resolution tiling is between target and ideal, so is not |
| 3715 // removed. The low res tiling for the old ideal=1.0 scale is removed. |
| 3716 used_tilings.clear(); |
| 3717 active_layer_->CleanUpTilingsOnActiveLayer(used_tilings); |
| 3718 ASSERT_EQ(2u, active_layer_->tilings()->num_tilings()); |
| 3719 |
| 3720 // Now move the ideal scale to 1.0. Our target stays 1.2. |
| 3721 SetContentsScaleOnBothLayers(1.f, device_scale, page_scale, 1.f, 0.f, false); |
| 3722 |
| 3723 // All the tilings are between are target and the ideal, so they are not |
| 3756 // removed. | 3724 // removed. |
| 3757 used_tilings.clear(); | 3725 used_tilings.clear(); |
| 3758 active_layer_->CleanUpTilingsOnActiveLayer(used_tilings); | 3726 active_layer_->CleanUpTilingsOnActiveLayer(used_tilings); |
| 3759 ASSERT_EQ(3u, active_layer_->tilings()->num_tilings()); | 3727 ASSERT_EQ(2u, active_layer_->tilings()->num_tilings()); |
| 3760 | 3728 |
| 3761 // Now move the ideal scale to 1.0 on the active layer. The high-res tiling | 3729 // Now move the ideal scale to 1.1 on the active layer. Our target stays 1.2. |
| 3762 // stays 1.2. | 3730 SetupDrawPropertiesAndUpdateTiles(active_layer_, 1.1f, device_scale, |
| 3763 SetupDrawPropertiesAndUpdateTiles(active_layer_, 1.f, device_scale, | 3731 page_scale, 1.f, 0.f, false); |
| 3764 page_scale, 1.2f, 0.f, true); | |
| 3765 | 3732 |
| 3766 // Because the pending layer's ideal scale is still 0.5, all tilings fall | 3733 // Because the pending layer's ideal scale is still 1.0, our tilings fall |
| 3767 // in the range [0.5,1.2] and are kept. | 3734 // in the range [1.0,1.2] and are kept. |
| 3768 used_tilings.clear(); | 3735 used_tilings.clear(); |
| 3769 active_layer_->CleanUpTilingsOnActiveLayer(used_tilings); | 3736 active_layer_->CleanUpTilingsOnActiveLayer(used_tilings); |
| 3770 ASSERT_EQ(3u, active_layer_->tilings()->num_tilings()); | 3737 ASSERT_EQ(2u, active_layer_->tilings()->num_tilings()); |
| 3771 | 3738 |
| 3772 // Move the ideal scale on the pending layer to 1.0 as well. Our high-res | 3739 // Move the ideal scale on the pending layer to 1.1 as well. Our target stays |
| 3773 // stays 1.2 still. | 3740 // 1.2 still. |
| 3774 SetupDrawPropertiesAndUpdateTiles(pending_layer_, 1.f, device_scale, | 3741 SetupDrawPropertiesAndUpdateTiles(pending_layer_, 1.1f, device_scale, |
| 3775 page_scale, 1.f, 0.f, false); | 3742 page_scale, 1.f, 0.f, false); |
| 3776 | 3743 |
| 3777 // Our 0.5 tiling now falls outside the range between our ideal scale and our | 3744 // Our 1.0 tiling now falls outside the range between our ideal scale and our |
| 3778 // high-res raster scale. But it is in our used tilings set, so nothing is | 3745 // target raster scale. But it is in our used tilings set, so nothing is |
| 3779 // deleted. | 3746 // deleted. |
| 3780 used_tilings.clear(); | 3747 used_tilings.clear(); |
| 3781 used_tilings.push_back(active_layer_->tilings()->tiling_at(2)); | 3748 used_tilings.push_back(active_layer_->tilings()->tiling_at(1)); |
| 3782 active_layer_->CleanUpTilingsOnActiveLayer(used_tilings); | 3749 active_layer_->CleanUpTilingsOnActiveLayer(used_tilings); |
| 3783 ASSERT_EQ(3u, active_layer_->tilings()->num_tilings()); | 3750 ASSERT_EQ(2u, active_layer_->tilings()->num_tilings()); |
| 3784 | 3751 |
| 3785 // If we remove it from our used tilings set, it is outside the range to keep | 3752 // If we remove it from our used tilings set, it is outside the range to keep |
| 3786 // so it is deleted. | 3753 // so it is deleted. |
| 3787 used_tilings.clear(); | 3754 used_tilings.clear(); |
| 3788 active_layer_->CleanUpTilingsOnActiveLayer(used_tilings); | 3755 active_layer_->CleanUpTilingsOnActiveLayer(used_tilings); |
| 3789 ASSERT_EQ(2u, active_layer_->tilings()->num_tilings()); | 3756 ASSERT_EQ(1u, active_layer_->tilings()->num_tilings()); |
| 3790 } | 3757 } |
| 3791 | 3758 |
| 3792 TEST_F(NoLowResPictureLayerImplTest, ReleaseResources) { | 3759 TEST_F(NoLowResPictureLayerImplTest, ReleaseResources) { |
| 3793 gfx::Size layer_bounds(1300, 1900); | 3760 gfx::Size layer_bounds(1300, 1900); |
| 3794 SetupDefaultTrees(layer_bounds); | 3761 SetupDefaultTrees(layer_bounds); |
| 3795 EXPECT_EQ(1u, pending_layer_->tilings()->num_tilings()); | 3762 EXPECT_EQ(1u, pending_layer_->tilings()->num_tilings()); |
| 3796 EXPECT_EQ(1u, active_layer_->tilings()->num_tilings()); | 3763 EXPECT_EQ(1u, active_layer_->tilings()->num_tilings()); |
| 3797 | 3764 |
| 3798 // All tilings should be removed when losing output surface. | 3765 // All tilings should be removed when losing output surface. |
| 3799 active_layer_->ReleaseResources(); | 3766 active_layer_->ReleaseResources(); |
| (...skipping 1275 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5075 // New low res tiling. | 5042 // New low res tiling. |
| 5076 EXPECT_TRUE(tilings->tiling_at(2)->may_contain_low_resolution_tiles()); | 5043 EXPECT_TRUE(tilings->tiling_at(2)->may_contain_low_resolution_tiles()); |
| 5077 | 5044 |
| 5078 // This tiling will be high res now, it won't contain low res content since it | 5045 // This tiling will be high res now, it won't contain low res content since it |
| 5079 // was all destroyed. | 5046 // was all destroyed. |
| 5080 EXPECT_FALSE(tilings->tiling_at(1)->may_contain_low_resolution_tiles()); | 5047 EXPECT_FALSE(tilings->tiling_at(1)->may_contain_low_resolution_tiles()); |
| 5081 } | 5048 } |
| 5082 | 5049 |
| 5083 } // namespace | 5050 } // namespace |
| 5084 } // namespace cc | 5051 } // namespace cc |
| OLD | NEW |