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

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

Issue 1126793002: cc: Make tiling interest rect calc based on viewport. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: remove switch entry from chromeos cmdline. Created 5 years, 7 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
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/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 13 matching lines...) Expand all
24 DCHECK_GT(float2, 0.f); 24 DCHECK_GT(float2, 0.f);
25 return float1 > float2 ? float1 / float2 : float2 / float1; 25 return float1 > float2 ? float1 / float2 : float2 / float1;
26 } 26 }
27 27
28 } // namespace 28 } // namespace
29 29
30 // static 30 // static
31 scoped_ptr<PictureLayerTilingSet> PictureLayerTilingSet::Create( 31 scoped_ptr<PictureLayerTilingSet> PictureLayerTilingSet::Create(
32 WhichTree tree, 32 WhichTree tree,
33 PictureLayerTilingClient* client, 33 PictureLayerTilingClient* client,
34 size_t max_tiles_for_interest_area, 34 float tiling_interest_area_viewport_multiplier,
35 float skewport_target_time_in_seconds, 35 float skewport_target_time_in_seconds,
36 int skewport_extrapolation_limit_in_content_pixels) { 36 int skewport_extrapolation_limit_in_content_pixels) {
37 return make_scoped_ptr(new PictureLayerTilingSet( 37 return make_scoped_ptr(new PictureLayerTilingSet(
38 tree, client, max_tiles_for_interest_area, 38 tree, client, tiling_interest_area_viewport_multiplier,
39 skewport_target_time_in_seconds, 39 skewport_target_time_in_seconds,
40 skewport_extrapolation_limit_in_content_pixels)); 40 skewport_extrapolation_limit_in_content_pixels));
41 } 41 }
42 42
43 PictureLayerTilingSet::PictureLayerTilingSet( 43 PictureLayerTilingSet::PictureLayerTilingSet(
44 WhichTree tree, 44 WhichTree tree,
45 PictureLayerTilingClient* client, 45 PictureLayerTilingClient* client,
46 size_t max_tiles_for_interest_area, 46 float tiling_interest_area_viewport_multiplier,
47 float skewport_target_time_in_seconds, 47 float skewport_target_time_in_seconds,
48 int skewport_extrapolation_limit_in_content_pixels) 48 int skewport_extrapolation_limit_in_content_pixels)
49 : max_tiles_for_interest_area_(max_tiles_for_interest_area), 49 : tiling_interest_area_viewport_multiplier_(
50 tiling_interest_area_viewport_multiplier),
50 skewport_target_time_in_seconds_(skewport_target_time_in_seconds), 51 skewport_target_time_in_seconds_(skewport_target_time_in_seconds),
51 skewport_extrapolation_limit_in_content_pixels_( 52 skewport_extrapolation_limit_in_content_pixels_(
52 skewport_extrapolation_limit_in_content_pixels), 53 skewport_extrapolation_limit_in_content_pixels),
53 tree_(tree), 54 tree_(tree),
54 client_(client) { 55 client_(client) {
55 } 56 }
56 57
57 PictureLayerTilingSet::~PictureLayerTilingSet() { 58 PictureLayerTilingSet::~PictureLayerTilingSet() {
58 } 59 }
59 60
60 void PictureLayerTilingSet::CopyTilingsAndPropertiesFromPendingTwin( 61 void PictureLayerTilingSet::CopyTilingsAndPropertiesFromPendingTwin(
61 const PictureLayerTilingSet* pending_twin_set, 62 const PictureLayerTilingSet* pending_twin_set,
62 const scoped_refptr<RasterSource>& raster_source, 63 const scoped_refptr<RasterSource>& raster_source,
63 const Region& layer_invalidation) { 64 const Region& layer_invalidation) {
64 if (pending_twin_set->tilings_.empty()) { 65 if (pending_twin_set->tilings_.empty()) {
65 // If the twin (pending) tiling set is empty, it was not updated for the 66 // If the twin (pending) tiling set is empty, it was not updated for the
66 // current frame. So we drop tilings from our set as well, instead of 67 // current frame. So we drop tilings from our set as well, instead of
67 // leaving behind unshared tilings that are all non-ideal. 68 // leaving behind unshared tilings that are all non-ideal.
68 RemoveAllTilings(); 69 RemoveAllTilings();
69 return; 70 return;
70 } 71 }
71 72
72 bool tiling_sort_required = false; 73 bool tiling_sort_required = false;
73 for (PictureLayerTiling* pending_twin_tiling : pending_twin_set->tilings_) { 74 for (PictureLayerTiling* pending_twin_tiling : pending_twin_set->tilings_) {
74 float contents_scale = pending_twin_tiling->contents_scale(); 75 float contents_scale = pending_twin_tiling->contents_scale();
75 PictureLayerTiling* this_tiling = FindTilingWithScale(contents_scale); 76 PictureLayerTiling* this_tiling = FindTilingWithScale(contents_scale);
76 if (!this_tiling) { 77 if (!this_tiling) {
77 scoped_ptr<PictureLayerTiling> new_tiling = PictureLayerTiling::Create( 78 scoped_ptr<PictureLayerTiling> new_tiling = PictureLayerTiling::Create(
78 tree_, contents_scale, raster_source, client_, 79 tree_, contents_scale, raster_source, client_,
79 max_tiles_for_interest_area_, skewport_target_time_in_seconds_, 80 tiling_interest_area_viewport_multiplier_,
81 skewport_target_time_in_seconds_,
80 skewport_extrapolation_limit_in_content_pixels_); 82 skewport_extrapolation_limit_in_content_pixels_);
81 tilings_.push_back(new_tiling.Pass()); 83 tilings_.push_back(new_tiling.Pass());
82 this_tiling = tilings_.back(); 84 this_tiling = tilings_.back();
83 tiling_sort_required = true; 85 tiling_sort_required = true;
84 } 86 }
85 this_tiling->TakeTilesAndPropertiesFrom(pending_twin_tiling, 87 this_tiling->TakeTilesAndPropertiesFrom(pending_twin_tiling,
86 layer_invalidation); 88 layer_invalidation);
87 } 89 }
88 90
89 if (tiling_sort_required) 91 if (tiling_sort_required)
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after
257 PictureLayerTiling* PictureLayerTilingSet::AddTiling( 259 PictureLayerTiling* PictureLayerTilingSet::AddTiling(
258 float contents_scale, 260 float contents_scale,
259 scoped_refptr<RasterSource> raster_source) { 261 scoped_refptr<RasterSource> raster_source) {
260 for (size_t i = 0; i < tilings_.size(); ++i) { 262 for (size_t i = 0; i < tilings_.size(); ++i) {
261 DCHECK_NE(tilings_[i]->contents_scale(), contents_scale); 263 DCHECK_NE(tilings_[i]->contents_scale(), contents_scale);
262 DCHECK_EQ(tilings_[i]->raster_source(), raster_source.get()); 264 DCHECK_EQ(tilings_[i]->raster_source(), raster_source.get());
263 } 265 }
264 266
265 tilings_.push_back(PictureLayerTiling::Create( 267 tilings_.push_back(PictureLayerTiling::Create(
266 tree_, contents_scale, raster_source, client_, 268 tree_, contents_scale, raster_source, client_,
267 max_tiles_for_interest_area_, skewport_target_time_in_seconds_, 269 tiling_interest_area_viewport_multiplier_,
270 skewport_target_time_in_seconds_,
268 skewport_extrapolation_limit_in_content_pixels_)); 271 skewport_extrapolation_limit_in_content_pixels_));
269 PictureLayerTiling* appended = tilings_.back(); 272 PictureLayerTiling* appended = tilings_.back();
270 273
271 tilings_.sort(LargestToSmallestScaleFunctor()); 274 tilings_.sort(LargestToSmallestScaleFunctor());
272 return appended; 275 return appended;
273 } 276 }
274 277
275 int PictureLayerTilingSet::NumHighResTilings() const { 278 int PictureLayerTilingSet::NumHighResTilings() const {
276 return std::count_if(tilings_.begin(), tilings_.end(), 279 return std::count_if(tilings_.begin(), tilings_.end(),
277 [](PictureLayerTiling* tiling) { 280 [](PictureLayerTiling* tiling) {
(...skipping 316 matching lines...) Expand 10 before | Expand all | Expand 10 after
594 case LOWER_THAN_LOW_RES: 597 case LOWER_THAN_LOW_RES:
595 range = TilingRange(low_res_range.end, tilings_.size()); 598 range = TilingRange(low_res_range.end, tilings_.size());
596 break; 599 break;
597 } 600 }
598 601
599 DCHECK_LE(range.start, range.end); 602 DCHECK_LE(range.start, range.end);
600 return range; 603 return range;
601 } 604 }
602 605
603 } // namespace cc 606 } // namespace cc
OLDNEW
« no previous file with comments | « cc/resources/picture_layer_tiling_set.h ('k') | cc/resources/picture_layer_tiling_set_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698