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

Side by Side Diff: cc/tiles/picture_layer_tiling_set.cc

Issue 2317913002: cc: Change preraster/predecode split to be half of max skewport extent. (Closed)
Patch Set: compile fix Created 4 years, 3 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/tiles/picture_layer_tiling_set.h ('k') | cc/tiles/picture_layer_tiling_set_unittest.cc » ('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 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/tiles/picture_layer_tiling_set.h" 5 #include "cc/tiles/picture_layer_tiling_set.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <limits> 9 #include <limits>
10 #include <set> 10 #include <set>
(...skipping 25 matching lines...) Expand all
36 const float kMaxSoonBorderDistanceInScreenPixels = 312.f; 36 const float kMaxSoonBorderDistanceInScreenPixels = 312.f;
37 37
38 } // namespace 38 } // namespace
39 39
40 // static 40 // static
41 std::unique_ptr<PictureLayerTilingSet> PictureLayerTilingSet::Create( 41 std::unique_ptr<PictureLayerTilingSet> PictureLayerTilingSet::Create(
42 WhichTree tree, 42 WhichTree tree,
43 PictureLayerTilingClient* client, 43 PictureLayerTilingClient* client,
44 int tiling_interest_area_padding, 44 int tiling_interest_area_padding,
45 float skewport_target_time_in_seconds, 45 float skewport_target_time_in_seconds,
46 int skewport_extrapolation_limit_in_screen_pixels) { 46 int skewport_extrapolation_limit_in_screen_pixels,
47 return base::WrapUnique( 47 float max_preraster_distance) {
48 new PictureLayerTilingSet(tree, client, tiling_interest_area_padding, 48 return base::WrapUnique(new PictureLayerTilingSet(
49 skewport_target_time_in_seconds, 49 tree, client, tiling_interest_area_padding,
50 skewport_extrapolation_limit_in_screen_pixels)); 50 skewport_target_time_in_seconds,
51 skewport_extrapolation_limit_in_screen_pixels, max_preraster_distance));
51 } 52 }
52 53
53 PictureLayerTilingSet::PictureLayerTilingSet( 54 PictureLayerTilingSet::PictureLayerTilingSet(
54 WhichTree tree, 55 WhichTree tree,
55 PictureLayerTilingClient* client, 56 PictureLayerTilingClient* client,
56 int tiling_interest_area_padding, 57 int tiling_interest_area_padding,
57 float skewport_target_time_in_seconds, 58 float skewport_target_time_in_seconds,
58 int skewport_extrapolation_limit_in_screen_pixels) 59 int skewport_extrapolation_limit_in_screen_pixels,
60 float max_preraster_distance)
59 : tiling_interest_area_padding_(tiling_interest_area_padding), 61 : tiling_interest_area_padding_(tiling_interest_area_padding),
60 skewport_target_time_in_seconds_(skewport_target_time_in_seconds), 62 skewport_target_time_in_seconds_(skewport_target_time_in_seconds),
61 skewport_extrapolation_limit_in_screen_pixels_( 63 skewport_extrapolation_limit_in_screen_pixels_(
62 skewport_extrapolation_limit_in_screen_pixels), 64 skewport_extrapolation_limit_in_screen_pixels),
63 tree_(tree), 65 tree_(tree),
64 client_(client) {} 66 client_(client),
67 max_preraster_distance_(max_preraster_distance) {}
65 68
66 PictureLayerTilingSet::~PictureLayerTilingSet() { 69 PictureLayerTilingSet::~PictureLayerTilingSet() {
67 } 70 }
68 71
69 void PictureLayerTilingSet::CopyTilingsAndPropertiesFromPendingTwin( 72 void PictureLayerTilingSet::CopyTilingsAndPropertiesFromPendingTwin(
70 const PictureLayerTilingSet* pending_twin_set, 73 const PictureLayerTilingSet* pending_twin_set,
71 scoped_refptr<RasterSource> raster_source, 74 scoped_refptr<RasterSource> raster_source,
72 const Region& layer_invalidation) { 75 const Region& layer_invalidation) {
73 if (pending_twin_set->tilings_.empty()) { 76 if (pending_twin_set->tilings_.empty()) {
74 // If the twin (pending) tiling set is empty, it was not updated for the 77 // If the twin (pending) tiling set is empty, it was not updated for the
75 // current frame. So we drop tilings from our set as well, instead of 78 // current frame. So we drop tilings from our set as well, instead of
76 // leaving behind unshared tilings that are all non-ideal. 79 // leaving behind unshared tilings that are all non-ideal.
77 RemoveAllTilings(); 80 RemoveAllTilings();
78 return; 81 return;
79 } 82 }
80 83
81 bool tiling_sort_required = false; 84 bool tiling_sort_required = false;
82 for (const auto& pending_twin_tiling : pending_twin_set->tilings_) { 85 for (const auto& pending_twin_tiling : pending_twin_set->tilings_) {
83 float contents_scale = pending_twin_tiling->contents_scale(); 86 float contents_scale = pending_twin_tiling->contents_scale();
84 PictureLayerTiling* this_tiling = FindTilingWithScale(contents_scale); 87 PictureLayerTiling* this_tiling = FindTilingWithScale(contents_scale);
85 if (!this_tiling) { 88 if (!this_tiling) {
86 std::unique_ptr<PictureLayerTiling> new_tiling(new PictureLayerTiling( 89 std::unique_ptr<PictureLayerTiling> new_tiling(new PictureLayerTiling(
87 tree_, contents_scale, raster_source_, client_)); 90 tree_, contents_scale, raster_source_, client_,
91 kMaxSoonBorderDistanceInScreenPixels, max_preraster_distance_));
88 tilings_.push_back(std::move(new_tiling)); 92 tilings_.push_back(std::move(new_tiling));
89 this_tiling = tilings_.back().get(); 93 this_tiling = tilings_.back().get();
90 tiling_sort_required = true; 94 tiling_sort_required = true;
91 state_since_last_tile_priority_update_.added_tilings = true; 95 state_since_last_tile_priority_update_.added_tilings = true;
92 } 96 }
93 this_tiling->TakeTilesAndPropertiesFrom(pending_twin_tiling.get(), 97 this_tiling->TakeTilesAndPropertiesFrom(pending_twin_tiling.get(),
94 layer_invalidation); 98 layer_invalidation);
95 } 99 }
96 100
97 if (tiling_sort_required) { 101 if (tiling_sort_required) {
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after
265 scoped_refptr<RasterSource> raster_source) { 269 scoped_refptr<RasterSource> raster_source) {
266 if (!raster_source_) 270 if (!raster_source_)
267 raster_source_ = raster_source; 271 raster_source_ = raster_source;
268 272
269 for (size_t i = 0; i < tilings_.size(); ++i) { 273 for (size_t i = 0; i < tilings_.size(); ++i) {
270 DCHECK_NE(tilings_[i]->contents_scale(), contents_scale); 274 DCHECK_NE(tilings_[i]->contents_scale(), contents_scale);
271 DCHECK_EQ(tilings_[i]->raster_source(), raster_source.get()); 275 DCHECK_EQ(tilings_[i]->raster_source(), raster_source.get());
272 } 276 }
273 277
274 tilings_.push_back(base::MakeUnique<PictureLayerTiling>( 278 tilings_.push_back(base::MakeUnique<PictureLayerTiling>(
275 tree_, contents_scale, raster_source, client_)); 279 tree_, contents_scale, raster_source, client_,
280 kMaxSoonBorderDistanceInScreenPixels, max_preraster_distance_));
276 PictureLayerTiling* appended = tilings_.back().get(); 281 PictureLayerTiling* appended = tilings_.back().get();
277 state_since_last_tile_priority_update_.added_tilings = true; 282 state_since_last_tile_priority_update_.added_tilings = true;
278 283
279 std::sort(tilings_.begin(), tilings_.end(), LargestToSmallestScaleFunctor()); 284 std::sort(tilings_.begin(), tilings_.end(), LargestToSmallestScaleFunctor());
280 return appended; 285 return appended;
281 } 286 }
282 287
283 int PictureLayerTilingSet::NumHighResTilings() const { 288 int PictureLayerTilingSet::NumHighResTilings() const {
284 return std::count_if(tilings_.begin(), tilings_.end(), 289 return std::count_if(tilings_.begin(), tilings_.end(),
285 [](const std::unique_ptr<PictureLayerTiling>& tiling) { 290 [](const std::unique_ptr<PictureLayerTiling>& tiling) {
(...skipping 462 matching lines...) Expand 10 before | Expand all | Expand 10 after
748 case LOWER_THAN_LOW_RES: 753 case LOWER_THAN_LOW_RES:
749 range = TilingRange(low_res_range.end, tilings_size); 754 range = TilingRange(low_res_range.end, tilings_size);
750 break; 755 break;
751 } 756 }
752 757
753 DCHECK_LE(range.start, range.end); 758 DCHECK_LE(range.start, range.end);
754 return range; 759 return range;
755 } 760 }
756 761
757 } // namespace cc 762 } // namespace cc
OLDNEW
« no previous file with comments | « cc/tiles/picture_layer_tiling_set.h ('k') | cc/tiles/picture_layer_tiling_set_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698