OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 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/resources/picture_layer_tiling_set.h" | 5 #include "cc/resources/picture_layer_tiling_set.h" |
6 | 6 |
7 #include <limits> | 7 #include <limits> |
8 #include <set> | 8 #include <set> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
105 layer_invalidation); | 105 layer_invalidation); |
106 | 106 |
107 // If the tiling is not shared (FindTilingWithScale returns nullptr), then | 107 // If the tiling is not shared (FindTilingWithScale returns nullptr), then |
108 // invalidate tiles and update them to the new raster source. | 108 // invalidate tiles and update them to the new raster source. |
109 for (PictureLayerTiling* tiling : tilings_) { | 109 for (PictureLayerTiling* tiling : tilings_) { |
110 if (pending_twin_set->FindTilingWithScale(tiling->contents_scale())) | 110 if (pending_twin_set->FindTilingWithScale(tiling->contents_scale())) |
111 continue; | 111 continue; |
112 | 112 |
113 tiling->SetRasterSourceAndResize(raster_source); | 113 tiling->SetRasterSourceAndResize(raster_source); |
114 tiling->Invalidate(layer_invalidation); | 114 tiling->Invalidate(layer_invalidation); |
115 tiling->SetRasterSourceOnTiles(); | |
116 // This is needed for cases where the live tiles rect didn't change but | 115 // This is needed for cases where the live tiles rect didn't change but |
117 // recordings exist in the raster source that did not exist on the last | 116 // recordings exist in the raster source that did not exist on the last |
118 // raster source. | 117 // raster source. |
119 tiling->CreateMissingTilesInLiveTilesRect(); | 118 tiling->CreateMissingTilesInLiveTilesRect(); |
120 | 119 |
121 // |this| is active set and |tiling| is not in the pending set, which means | 120 // |this| is active set and |tiling| is not in the pending set, which means |
122 // it is now NON_IDEAL_RESOLUTION. | 121 // it is now NON_IDEAL_RESOLUTION. |
123 tiling->set_resolution(NON_IDEAL_RESOLUTION); | 122 tiling->set_resolution(NON_IDEAL_RESOLUTION); |
124 } | 123 } |
125 | 124 |
126 VerifyTilings(pending_twin_set); | 125 VerifyTilings(pending_twin_set); |
127 } | 126 } |
128 | 127 |
129 void PictureLayerTilingSet::UpdateTilingsToCurrentRasterSourceForCommit( | 128 void PictureLayerTilingSet::UpdateTilingsToCurrentRasterSourceForCommit( |
130 scoped_refptr<RasterSource> raster_source, | 129 scoped_refptr<RasterSource> raster_source, |
131 const Region& layer_invalidation, | 130 const Region& layer_invalidation, |
132 float minimum_contents_scale, | 131 float minimum_contents_scale, |
133 float maximum_contents_scale) { | 132 float maximum_contents_scale) { |
134 RemoveTilingsBelowScale(minimum_contents_scale); | 133 RemoveTilingsBelowScale(minimum_contents_scale); |
135 RemoveTilingsAboveScale(maximum_contents_scale); | 134 RemoveTilingsAboveScale(maximum_contents_scale); |
136 | 135 |
137 // Invalidate tiles and update them to the new raster source. | 136 // Invalidate tiles and update them to the new raster source. |
138 for (PictureLayerTiling* tiling : tilings_) { | 137 for (PictureLayerTiling* tiling : tilings_) { |
139 tiling->SetRasterSourceAndResize(raster_source); | 138 tiling->SetRasterSourceAndResize(raster_source); |
140 tiling->Invalidate(layer_invalidation); | 139 tiling->Invalidate(layer_invalidation); |
141 tiling->SetRasterSourceOnTiles(); | |
142 // This is needed for cases where the live tiles rect didn't change but | 140 // This is needed for cases where the live tiles rect didn't change but |
143 // recordings exist in the raster source that did not exist on the last | 141 // recordings exist in the raster source that did not exist on the last |
144 // raster source. | 142 // raster source. |
145 tiling->CreateMissingTilesInLiveTilesRect(); | 143 tiling->CreateMissingTilesInLiveTilesRect(); |
146 } | 144 } |
147 VerifyTilings(nullptr /* pending_twin_set */); | 145 VerifyTilings(nullptr /* pending_twin_set */); |
148 } | 146 } |
149 | 147 |
150 void PictureLayerTilingSet::UpdateRasterSourceDueToLCDChange( | 148 void PictureLayerTilingSet::UpdateRasterSourceDueToLCDChange( |
151 const scoped_refptr<RasterSource>& raster_source, | 149 const scoped_refptr<RasterSource>& raster_source, |
152 const Region& layer_invalidation) { | 150 const Region& layer_invalidation) { |
153 for (PictureLayerTiling* tiling : tilings_) { | 151 for (PictureLayerTiling* tiling : tilings_) { |
154 tiling->SetRasterSourceAndResize(raster_source); | 152 tiling->SetRasterSourceAndResize(raster_source); |
155 tiling->Invalidate(layer_invalidation); | 153 tiling->Invalidate(layer_invalidation); |
156 // Since the invalidation changed, we need to create any missing tiles in | 154 // Since the invalidation changed, we need to create any missing tiles in |
157 // the live tiles rect again. | 155 // the live tiles rect again. |
158 tiling->CreateMissingTilesInLiveTilesRect(); | 156 tiling->CreateMissingTilesInLiveTilesRect(); |
159 tiling->VerifyAllTilesHaveCurrentRasterSource(); | |
160 } | 157 } |
161 } | 158 } |
162 | 159 |
163 void PictureLayerTilingSet::VerifyTilings( | 160 void PictureLayerTilingSet::VerifyTilings( |
164 const PictureLayerTilingSet* pending_twin_set) const { | 161 const PictureLayerTilingSet* pending_twin_set) const { |
165 #if DCHECK_IS_ON() | 162 #if DCHECK_IS_ON() |
166 for (PictureLayerTiling* tiling : tilings_) { | 163 for (PictureLayerTiling* tiling : tilings_) { |
167 DCHECK(tiling->tile_size() == | 164 DCHECK(tiling->tile_size() == |
168 client_->CalculateTileSize(tiling->tiling_size())) | 165 client_->CalculateTileSize(tiling->tiling_size())) |
169 << "tile_size: " << tiling->tile_size().ToString() | 166 << "tile_size: " << tiling->tile_size().ToString() |
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
366 for (auto* tiling : tilings_) { | 363 for (auto* tiling : tilings_) { |
367 tiling->set_can_require_tiles_for_activation( | 364 tiling->set_can_require_tiles_for_activation( |
368 can_require_tiles_for_activation); | 365 can_require_tiles_for_activation); |
369 updated |= tiling->ComputeTilePriorityRects( | 366 updated |= tiling->ComputeTilePriorityRects( |
370 required_rect_in_layer_space, ideal_contents_scale, | 367 required_rect_in_layer_space, ideal_contents_scale, |
371 current_frame_time_in_seconds, occlusion_in_layer_space); | 368 current_frame_time_in_seconds, occlusion_in_layer_space); |
372 } | 369 } |
373 return updated; | 370 return updated; |
374 } | 371 } |
375 | 372 |
376 void PictureLayerTilingSet::GetAllTilesAndPrioritiesForTracing( | 373 void PictureLayerTilingSet::GetAllPrioritizedTilesForTracing( |
377 std::map<const Tile*, TilePriority>* tile_map) const { | 374 std::vector<PrioritizedTile>* prioritized_tiles) const { |
378 for (auto* tiling : tilings_) | 375 for (auto* tiling : tilings_) |
379 tiling->GetAllTilesAndPrioritiesForTracing(tile_map); | 376 tiling->GetAllPrioritizedTilesForTracing(prioritized_tiles); |
380 } | 377 } |
381 | 378 |
382 PictureLayerTilingSet::CoverageIterator::CoverageIterator( | 379 PictureLayerTilingSet::CoverageIterator::CoverageIterator( |
383 const PictureLayerTilingSet* set, | 380 const PictureLayerTilingSet* set, |
384 float contents_scale, | 381 float contents_scale, |
385 const gfx::Rect& content_rect, | 382 const gfx::Rect& content_rect, |
386 float ideal_contents_scale) | 383 float ideal_contents_scale) |
387 : set_(set), | 384 : set_(set), |
388 contents_scale_(contents_scale), | 385 contents_scale_(contents_scale), |
389 ideal_contents_scale_(ideal_contents_scale), | 386 ideal_contents_scale_(ideal_contents_scale), |
(...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
594 case LOWER_THAN_LOW_RES: | 591 case LOWER_THAN_LOW_RES: |
595 range = TilingRange(low_res_range.end, tilings_.size()); | 592 range = TilingRange(low_res_range.end, tilings_.size()); |
596 break; | 593 break; |
597 } | 594 } |
598 | 595 |
599 DCHECK_LE(range.start, range.end); | 596 DCHECK_LE(range.start, range.end); |
600 return range; | 597 return range; |
601 } | 598 } |
602 | 599 |
603 } // namespace cc | 600 } // namespace cc |
OLD | NEW |