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

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: 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 12 matching lines...) Expand all
23 DCHECK_GT(float1, 0.f); 23 DCHECK_GT(float1, 0.f);
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 PictureLayerTilingClient* client, 32 PictureLayerTilingClient* client,
33 size_t max_tiles_for_interest_area, 33 size_t max_interest_area,
34 float skewport_target_time_in_seconds, 34 float skewport_target_time_in_seconds,
35 int skewport_extrapolation_limit_in_content_pixels) { 35 int skewport_extrapolation_limit_in_content_pixels) {
36 return make_scoped_ptr(new PictureLayerTilingSet( 36 return make_scoped_ptr(new PictureLayerTilingSet(
37 client, max_tiles_for_interest_area, skewport_target_time_in_seconds, 37 client, max_interest_area, skewport_target_time_in_seconds,
38 skewport_extrapolation_limit_in_content_pixels)); 38 skewport_extrapolation_limit_in_content_pixels));
39 } 39 }
40 40
41 PictureLayerTilingSet::PictureLayerTilingSet( 41 PictureLayerTilingSet::PictureLayerTilingSet(
42 PictureLayerTilingClient* client, 42 PictureLayerTilingClient* client,
43 size_t max_tiles_for_interest_area, 43 size_t max_interest_area,
44 float skewport_target_time_in_seconds, 44 float skewport_target_time_in_seconds,
45 int skewport_extrapolation_limit_in_content_pixels) 45 int skewport_extrapolation_limit_in_content_pixels)
46 : max_tiles_for_interest_area_(max_tiles_for_interest_area), 46 : max_interest_area_(max_interest_area),
47 skewport_target_time_in_seconds_(skewport_target_time_in_seconds), 47 skewport_target_time_in_seconds_(skewport_target_time_in_seconds),
48 skewport_extrapolation_limit_in_content_pixels_( 48 skewport_extrapolation_limit_in_content_pixels_(
49 skewport_extrapolation_limit_in_content_pixels), 49 skewport_extrapolation_limit_in_content_pixels),
50 client_(client) { 50 client_(client) {
51 } 51 }
52 52
53 PictureLayerTilingSet::~PictureLayerTilingSet() { 53 PictureLayerTilingSet::~PictureLayerTilingSet() {
54 } 54 }
55 55
56 void PictureLayerTilingSet::CopyTilingsAndPropertiesFromPendingTwin( 56 void PictureLayerTilingSet::CopyTilingsAndPropertiesFromPendingTwin(
57 const PictureLayerTilingSet* pending_twin_set, 57 const PictureLayerTilingSet* pending_twin_set,
58 const scoped_refptr<RasterSource>& raster_source, 58 const scoped_refptr<RasterSource>& raster_source,
59 const Region& layer_invalidation) { 59 const Region& layer_invalidation) {
60 if (pending_twin_set->tilings_.empty()) { 60 if (pending_twin_set->tilings_.empty()) {
61 // If the twin (pending) tiling set is empty, it was not updated for the 61 // If the twin (pending) tiling set is empty, it was not updated for the
62 // current frame. So we drop tilings from our set as well, instead of 62 // current frame. So we drop tilings from our set as well, instead of
63 // leaving behind unshared tilings that are all non-ideal. 63 // leaving behind unshared tilings that are all non-ideal.
64 RemoveAllTilings(); 64 RemoveAllTilings();
65 return; 65 return;
66 } 66 }
67 67
68 bool tiling_sort_required = false; 68 bool tiling_sort_required = false;
69 for (PictureLayerTiling* pending_twin_tiling : pending_twin_set->tilings_) { 69 for (PictureLayerTiling* pending_twin_tiling : pending_twin_set->tilings_) {
70 float contents_scale = pending_twin_tiling->contents_scale(); 70 float contents_scale = pending_twin_tiling->contents_scale();
71 PictureLayerTiling* this_tiling = FindTilingWithScale(contents_scale); 71 PictureLayerTiling* this_tiling = FindTilingWithScale(contents_scale);
72 if (!this_tiling) { 72 if (!this_tiling) {
73 scoped_ptr<PictureLayerTiling> new_tiling = PictureLayerTiling::Create( 73 scoped_ptr<PictureLayerTiling> new_tiling = PictureLayerTiling::Create(
74 contents_scale, raster_source, client_, max_tiles_for_interest_area_, 74 contents_scale, raster_source, client_, max_interest_area_,
75 skewport_target_time_in_seconds_, 75 skewport_target_time_in_seconds_,
76 skewport_extrapolation_limit_in_content_pixels_); 76 skewport_extrapolation_limit_in_content_pixels_);
77 tilings_.push_back(new_tiling.Pass()); 77 tilings_.push_back(new_tiling.Pass());
78 this_tiling = tilings_.back(); 78 this_tiling = tilings_.back();
79 tiling_sort_required = true; 79 tiling_sort_required = true;
80 } 80 }
81 this_tiling->TakeTilesAndPropertiesFrom(pending_twin_tiling, 81 this_tiling->TakeTilesAndPropertiesFrom(pending_twin_tiling,
82 layer_invalidation); 82 layer_invalidation);
83 } 83 }
84 84
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after
252 252
253 PictureLayerTiling* PictureLayerTilingSet::AddTiling( 253 PictureLayerTiling* PictureLayerTilingSet::AddTiling(
254 float contents_scale, 254 float contents_scale,
255 scoped_refptr<RasterSource> raster_source) { 255 scoped_refptr<RasterSource> raster_source) {
256 for (size_t i = 0; i < tilings_.size(); ++i) { 256 for (size_t i = 0; i < tilings_.size(); ++i) {
257 DCHECK_NE(tilings_[i]->contents_scale(), contents_scale); 257 DCHECK_NE(tilings_[i]->contents_scale(), contents_scale);
258 DCHECK_EQ(tilings_[i]->raster_source(), raster_source.get()); 258 DCHECK_EQ(tilings_[i]->raster_source(), raster_source.get());
259 } 259 }
260 260
261 tilings_.push_back(PictureLayerTiling::Create( 261 tilings_.push_back(PictureLayerTiling::Create(
262 contents_scale, raster_source, client_, max_tiles_for_interest_area_, 262 contents_scale, raster_source, client_, max_interest_area_,
263 skewport_target_time_in_seconds_, 263 skewport_target_time_in_seconds_,
264 skewport_extrapolation_limit_in_content_pixels_)); 264 skewport_extrapolation_limit_in_content_pixels_));
265 PictureLayerTiling* appended = tilings_.back(); 265 PictureLayerTiling* appended = tilings_.back();
266 266
267 tilings_.sort(LargestToSmallestScaleFunctor()); 267 tilings_.sort(LargestToSmallestScaleFunctor());
268 return appended; 268 return appended;
269 } 269 }
270 270
271 int PictureLayerTilingSet::NumHighResTilings() const { 271 int PictureLayerTilingSet::NumHighResTilings() const {
272 return std::count_if(tilings_.begin(), tilings_.end(), 272 return std::count_if(tilings_.begin(), tilings_.end(),
(...skipping 317 matching lines...) Expand 10 before | Expand all | Expand 10 after
590 case LOWER_THAN_LOW_RES: 590 case LOWER_THAN_LOW_RES:
591 range = TilingRange(low_res_range.end, tilings_.size()); 591 range = TilingRange(low_res_range.end, tilings_.size());
592 break; 592 break;
593 } 593 }
594 594
595 DCHECK_LE(range.start, range.end); 595 DCHECK_LE(range.start, range.end);
596 return range; 596 return range;
597 } 597 }
598 598
599 } // namespace cc 599 } // namespace cc
OLDNEW
« cc/layers/picture_layer_impl.cc ('K') | « cc/resources/picture_layer_tiling_set.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698