| 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 2077 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2088 TEST_F(PictureLayerImplTest, HighResRequiredWhenMissingHighResFlagOn) { | 2088 TEST_F(PictureLayerImplTest, HighResRequiredWhenMissingHighResFlagOn) { |
| 2089 gfx::Size layer_bounds(400, 400); | 2089 gfx::Size layer_bounds(400, 400); |
| 2090 gfx::Size tile_size(100, 100); | 2090 gfx::Size tile_size(100, 100); |
| 2091 | 2091 |
| 2092 // No invalidation. | 2092 // No invalidation. |
| 2093 SetupDefaultTreesWithFixedTileSize(layer_bounds, tile_size, Region()); | 2093 SetupDefaultTreesWithFixedTileSize(layer_bounds, tile_size, Region()); |
| 2094 | 2094 |
| 2095 // Verify active tree not ready. | 2095 // Verify active tree not ready. |
| 2096 Tile* some_active_tile = | 2096 Tile* some_active_tile = |
| 2097 active_layer_->HighResTiling()->AllTilesForTesting()[0]; | 2097 active_layer_->HighResTiling()->AllTilesForTesting()[0]; |
| 2098 EXPECT_FALSE(some_active_tile->IsReadyToDraw()); | 2098 EXPECT_FALSE(some_active_tile->draw_info().IsReadyToDraw()); |
| 2099 | 2099 |
| 2100 // When high res are required, all tiles in active high res tiling should be | 2100 // When high res are required, all tiles in active high res tiling should be |
| 2101 // required for activation. | 2101 // required for activation. |
| 2102 host_impl_.SetRequiresHighResToDraw(); | 2102 host_impl_.SetRequiresHighResToDraw(); |
| 2103 | 2103 |
| 2104 pending_layer_->HighResTiling()->UpdateAllRequiredStateForTesting(); | 2104 pending_layer_->HighResTiling()->UpdateAllRequiredStateForTesting(); |
| 2105 pending_layer_->LowResTiling()->UpdateAllRequiredStateForTesting(); | 2105 pending_layer_->LowResTiling()->UpdateAllRequiredStateForTesting(); |
| 2106 active_layer_->HighResTiling()->UpdateAllRequiredStateForTesting(); | 2106 active_layer_->HighResTiling()->UpdateAllRequiredStateForTesting(); |
| 2107 active_layer_->LowResTiling()->UpdateAllRequiredStateForTesting(); | 2107 active_layer_->LowResTiling()->UpdateAllRequiredStateForTesting(); |
| 2108 | 2108 |
| 2109 EXPECT_TRUE(pending_layer_->HighResTiling()->AllTilesForTesting().empty()); | 2109 EXPECT_TRUE(pending_layer_->HighResTiling()->AllTilesForTesting().empty()); |
| 2110 EXPECT_TRUE(pending_layer_->LowResTiling()->AllTilesForTesting().empty()); | 2110 EXPECT_TRUE(pending_layer_->LowResTiling()->AllTilesForTesting().empty()); |
| 2111 AssertAllTilesRequired(active_layer_->HighResTiling()); | 2111 AssertAllTilesRequired(active_layer_->HighResTiling()); |
| 2112 AssertNoTilesRequired(active_layer_->LowResTiling()); | 2112 AssertNoTilesRequired(active_layer_->LowResTiling()); |
| 2113 } | 2113 } |
| 2114 | 2114 |
| 2115 TEST_F(PictureLayerImplTest, AllHighResRequiredEvenIfNotChanged) { | 2115 TEST_F(PictureLayerImplTest, AllHighResRequiredEvenIfNotChanged) { |
| 2116 gfx::Size layer_bounds(400, 400); | 2116 gfx::Size layer_bounds(400, 400); |
| 2117 gfx::Size tile_size(100, 100); | 2117 gfx::Size tile_size(100, 100); |
| 2118 | 2118 |
| 2119 SetupDefaultTreesWithFixedTileSize(layer_bounds, tile_size, Region()); | 2119 SetupDefaultTreesWithFixedTileSize(layer_bounds, tile_size, Region()); |
| 2120 | 2120 |
| 2121 Tile* some_active_tile = | 2121 Tile* some_active_tile = |
| 2122 active_layer_->HighResTiling()->AllTilesForTesting()[0]; | 2122 active_layer_->HighResTiling()->AllTilesForTesting()[0]; |
| 2123 EXPECT_FALSE(some_active_tile->IsReadyToDraw()); | 2123 EXPECT_FALSE(some_active_tile->draw_info().IsReadyToDraw()); |
| 2124 | 2124 |
| 2125 // Since there are no invalidations, pending tree should have no tiles. | 2125 // Since there are no invalidations, pending tree should have no tiles. |
| 2126 EXPECT_TRUE(pending_layer_->HighResTiling()->AllTilesForTesting().empty()); | 2126 EXPECT_TRUE(pending_layer_->HighResTiling()->AllTilesForTesting().empty()); |
| 2127 EXPECT_TRUE(pending_layer_->LowResTiling()->AllTilesForTesting().empty()); | 2127 EXPECT_TRUE(pending_layer_->LowResTiling()->AllTilesForTesting().empty()); |
| 2128 | 2128 |
| 2129 active_layer_->HighResTiling()->UpdateAllRequiredStateForTesting(); | 2129 active_layer_->HighResTiling()->UpdateAllRequiredStateForTesting(); |
| 2130 active_layer_->LowResTiling()->UpdateAllRequiredStateForTesting(); | 2130 active_layer_->LowResTiling()->UpdateAllRequiredStateForTesting(); |
| 2131 | 2131 |
| 2132 AssertAllTilesRequired(active_layer_->HighResTiling()); | 2132 AssertAllTilesRequired(active_layer_->HighResTiling()); |
| 2133 AssertNoTilesRequired(active_layer_->LowResTiling()); | 2133 AssertNoTilesRequired(active_layer_->LowResTiling()); |
| 2134 } | 2134 } |
| 2135 | 2135 |
| 2136 TEST_F(PictureLayerImplTest, DisallowRequiredForActivation) { | 2136 TEST_F(PictureLayerImplTest, DisallowRequiredForActivation) { |
| 2137 gfx::Size layer_bounds(400, 400); | 2137 gfx::Size layer_bounds(400, 400); |
| 2138 gfx::Size tile_size(100, 100); | 2138 gfx::Size tile_size(100, 100); |
| 2139 | 2139 |
| 2140 SetupDefaultTreesWithFixedTileSize(layer_bounds, tile_size, Region()); | 2140 SetupDefaultTreesWithFixedTileSize(layer_bounds, tile_size, Region()); |
| 2141 | 2141 |
| 2142 Tile* some_active_tile = | 2142 Tile* some_active_tile = |
| 2143 active_layer_->HighResTiling()->AllTilesForTesting()[0]; | 2143 active_layer_->HighResTiling()->AllTilesForTesting()[0]; |
| 2144 EXPECT_FALSE(some_active_tile->IsReadyToDraw()); | 2144 EXPECT_FALSE(some_active_tile->draw_info().IsReadyToDraw()); |
| 2145 | 2145 |
| 2146 EXPECT_TRUE(pending_layer_->HighResTiling()->AllTilesForTesting().empty()); | 2146 EXPECT_TRUE(pending_layer_->HighResTiling()->AllTilesForTesting().empty()); |
| 2147 EXPECT_TRUE(pending_layer_->LowResTiling()->AllTilesForTesting().empty()); | 2147 EXPECT_TRUE(pending_layer_->LowResTiling()->AllTilesForTesting().empty()); |
| 2148 active_layer_->HighResTiling()->set_can_require_tiles_for_activation(false); | 2148 active_layer_->HighResTiling()->set_can_require_tiles_for_activation(false); |
| 2149 active_layer_->LowResTiling()->set_can_require_tiles_for_activation(false); | 2149 active_layer_->LowResTiling()->set_can_require_tiles_for_activation(false); |
| 2150 pending_layer_->HighResTiling()->set_can_require_tiles_for_activation(false); | 2150 pending_layer_->HighResTiling()->set_can_require_tiles_for_activation(false); |
| 2151 pending_layer_->LowResTiling()->set_can_require_tiles_for_activation(false); | 2151 pending_layer_->LowResTiling()->set_can_require_tiles_for_activation(false); |
| 2152 | 2152 |
| 2153 // If we disallow required for activation, no tiles can be required. | 2153 // If we disallow required for activation, no tiles can be required. |
| 2154 active_layer_->HighResTiling()->UpdateAllRequiredStateForTesting(); | 2154 active_layer_->HighResTiling()->UpdateAllRequiredStateForTesting(); |
| (...skipping 817 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2972 EXPECT_TRUE(required_queue->IsEmpty()); | 2972 EXPECT_TRUE(required_queue->IsEmpty()); |
| 2973 | 2973 |
| 2974 required_queue.reset(new TilingSetRasterQueueRequired( | 2974 required_queue.reset(new TilingSetRasterQueueRequired( |
| 2975 pending_layer_->picture_layer_tiling_set(), | 2975 pending_layer_->picture_layer_tiling_set(), |
| 2976 RasterTilePriorityQueue::Type::REQUIRED_FOR_ACTIVATION)); | 2976 RasterTilePriorityQueue::Type::REQUIRED_FOR_ACTIVATION)); |
| 2977 EXPECT_FALSE(required_queue->IsEmpty()); | 2977 EXPECT_FALSE(required_queue->IsEmpty()); |
| 2978 int required_for_activation_count = 0; | 2978 int required_for_activation_count = 0; |
| 2979 while (!required_queue->IsEmpty()) { | 2979 while (!required_queue->IsEmpty()) { |
| 2980 PrioritizedTile prioritized_tile = required_queue->Top(); | 2980 PrioritizedTile prioritized_tile = required_queue->Top(); |
| 2981 EXPECT_TRUE(prioritized_tile.tile()->required_for_activation()); | 2981 EXPECT_TRUE(prioritized_tile.tile()->required_for_activation()); |
| 2982 EXPECT_FALSE(prioritized_tile.tile()->IsReadyToDraw()); | 2982 EXPECT_FALSE(prioritized_tile.tile()->draw_info().IsReadyToDraw()); |
| 2983 ++required_for_activation_count; | 2983 ++required_for_activation_count; |
| 2984 required_queue->Pop(); | 2984 required_queue->Pop(); |
| 2985 } | 2985 } |
| 2986 | 2986 |
| 2987 // All of the high res tiles should be required for activation, since there is | 2987 // All of the high res tiles should be required for activation, since there is |
| 2988 // no active twin. | 2988 // no active twin. |
| 2989 EXPECT_EQ(high_res_now_tiles, required_for_activation_count); | 2989 EXPECT_EQ(high_res_now_tiles, required_for_activation_count); |
| 2990 | 2990 |
| 2991 // No NOW tiles. | 2991 // No NOW tiles. |
| 2992 time_ticks += base::TimeDelta::FromMilliseconds(200); | 2992 time_ticks += base::TimeDelta::FromMilliseconds(200); |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3080 EXPECT_EQ(2u, active_layer_->num_tilings()); | 3080 EXPECT_EQ(2u, active_layer_->num_tilings()); |
| 3081 | 3081 |
| 3082 scoped_ptr<TilingSetRasterQueueRequired> queue( | 3082 scoped_ptr<TilingSetRasterQueueRequired> queue( |
| 3083 new TilingSetRasterQueueRequired( | 3083 new TilingSetRasterQueueRequired( |
| 3084 active_layer_->picture_layer_tiling_set(), | 3084 active_layer_->picture_layer_tiling_set(), |
| 3085 RasterTilePriorityQueue::Type::REQUIRED_FOR_DRAW)); | 3085 RasterTilePriorityQueue::Type::REQUIRED_FOR_DRAW)); |
| 3086 EXPECT_FALSE(queue->IsEmpty()); | 3086 EXPECT_FALSE(queue->IsEmpty()); |
| 3087 while (!queue->IsEmpty()) { | 3087 while (!queue->IsEmpty()) { |
| 3088 PrioritizedTile prioritized_tile = queue->Top(); | 3088 PrioritizedTile prioritized_tile = queue->Top(); |
| 3089 EXPECT_TRUE(prioritized_tile.tile()->required_for_draw()); | 3089 EXPECT_TRUE(prioritized_tile.tile()->required_for_draw()); |
| 3090 EXPECT_FALSE(prioritized_tile.tile()->IsReadyToDraw()); | 3090 EXPECT_FALSE(prioritized_tile.tile()->draw_info().IsReadyToDraw()); |
| 3091 queue->Pop(); | 3091 queue->Pop(); |
| 3092 } | 3092 } |
| 3093 | 3093 |
| 3094 queue.reset(new TilingSetRasterQueueRequired( | 3094 queue.reset(new TilingSetRasterQueueRequired( |
| 3095 active_layer_->picture_layer_tiling_set(), | 3095 active_layer_->picture_layer_tiling_set(), |
| 3096 RasterTilePriorityQueue::Type::REQUIRED_FOR_ACTIVATION)); | 3096 RasterTilePriorityQueue::Type::REQUIRED_FOR_ACTIVATION)); |
| 3097 EXPECT_TRUE(queue->IsEmpty()); | 3097 EXPECT_TRUE(queue->IsEmpty()); |
| 3098 } | 3098 } |
| 3099 | 3099 |
| 3100 TEST_F(PictureLayerImplTest, TilingSetRasterQueueRequiredNoHighRes) { | 3100 TEST_F(PictureLayerImplTest, TilingSetRasterQueueRequiredNoHighRes) { |
| (...skipping 467 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3568 } | 3568 } |
| 3569 | 3569 |
| 3570 TEST_F(NoLowResPictureLayerImplTest, AllHighResRequiredEvenIfNotChanged) { | 3570 TEST_F(NoLowResPictureLayerImplTest, AllHighResRequiredEvenIfNotChanged) { |
| 3571 gfx::Size layer_bounds(400, 400); | 3571 gfx::Size layer_bounds(400, 400); |
| 3572 gfx::Size tile_size(100, 100); | 3572 gfx::Size tile_size(100, 100); |
| 3573 | 3573 |
| 3574 SetupDefaultTreesWithFixedTileSize(layer_bounds, tile_size, Region()); | 3574 SetupDefaultTreesWithFixedTileSize(layer_bounds, tile_size, Region()); |
| 3575 | 3575 |
| 3576 Tile* some_active_tile = | 3576 Tile* some_active_tile = |
| 3577 active_layer_->HighResTiling()->AllTilesForTesting()[0]; | 3577 active_layer_->HighResTiling()->AllTilesForTesting()[0]; |
| 3578 EXPECT_FALSE(some_active_tile->IsReadyToDraw()); | 3578 EXPECT_FALSE(some_active_tile->draw_info().IsReadyToDraw()); |
| 3579 | 3579 |
| 3580 // Since there is no invalidation, pending tree should have no tiles. | 3580 // Since there is no invalidation, pending tree should have no tiles. |
| 3581 EXPECT_TRUE(pending_layer_->HighResTiling()->AllTilesForTesting().empty()); | 3581 EXPECT_TRUE(pending_layer_->HighResTiling()->AllTilesForTesting().empty()); |
| 3582 if (host_impl_.settings().create_low_res_tiling) | 3582 if (host_impl_.settings().create_low_res_tiling) |
| 3583 EXPECT_TRUE(pending_layer_->LowResTiling()->AllTilesForTesting().empty()); | 3583 EXPECT_TRUE(pending_layer_->LowResTiling()->AllTilesForTesting().empty()); |
| 3584 | 3584 |
| 3585 active_layer_->HighResTiling()->UpdateAllRequiredStateForTesting(); | 3585 active_layer_->HighResTiling()->UpdateAllRequiredStateForTesting(); |
| 3586 if (host_impl_.settings().create_low_res_tiling) | 3586 if (host_impl_.settings().create_low_res_tiling) |
| 3587 active_layer_->LowResTiling()->UpdateAllRequiredStateForTesting(); | 3587 active_layer_->LowResTiling()->UpdateAllRequiredStateForTesting(); |
| 3588 | 3588 |
| (...skipping 1499 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5088 result = layer->CalculateTileSize(gfx::Size(447, 400)); | 5088 result = layer->CalculateTileSize(gfx::Size(447, 400)); |
| 5089 EXPECT_EQ(result.width(), 448); | 5089 EXPECT_EQ(result.width(), 448); |
| 5090 EXPECT_EQ(result.height(), 448); | 5090 EXPECT_EQ(result.height(), 448); |
| 5091 result = layer->CalculateTileSize(gfx::Size(500, 499)); | 5091 result = layer->CalculateTileSize(gfx::Size(500, 499)); |
| 5092 EXPECT_EQ(result.width(), 512); | 5092 EXPECT_EQ(result.width(), 512); |
| 5093 EXPECT_EQ(result.height(), 500 + 2); | 5093 EXPECT_EQ(result.height(), 500 + 2); |
| 5094 } | 5094 } |
| 5095 | 5095 |
| 5096 } // namespace | 5096 } // namespace |
| 5097 } // namespace cc | 5097 } // namespace cc |
| OLD | NEW |