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

Unified Diff: cc/tiles/picture_layer_tiling_set.cc

Issue 2175553002: Raster PictureLayerTiling with fractional translation (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: combined Created 3 years, 9 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 side-by-side diff with in-line comments
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 »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/tiles/picture_layer_tiling_set.cc
diff --git a/cc/tiles/picture_layer_tiling_set.cc b/cc/tiles/picture_layer_tiling_set.cc
index d9c21abaed9ca1fa3ca7b576fada379fb282328a..a24f12a52d452bb2961b3da73f13f0ee74f6f4a9 100644
--- a/cc/tiles/picture_layer_tiling_set.cc
+++ b/cc/tiles/picture_layer_tiling_set.cc
@@ -24,7 +24,7 @@ class LargestToSmallestScaleFunctor {
public:
bool operator()(const std::unique_ptr<PictureLayerTiling>& left,
const std::unique_ptr<PictureLayerTiling>& right) {
- return left->contents_scale() > right->contents_scale();
+ return left->contents_scale_key() > right->contents_scale_key();
}
};
@@ -84,11 +84,16 @@ void PictureLayerTilingSet::CopyTilingsAndPropertiesFromPendingTwin(
bool tiling_sort_required = false;
for (const auto& pending_twin_tiling : pending_twin_set->tilings_) {
+ ScaleTranslate2d raster_transform = pending_twin_tiling->raster_transform();
PictureLayerTiling* this_tiling =
- FindTilingWithScaleKey(pending_twin_tiling->contents_scale());
+ FindTilingWithScaleKey(pending_twin_tiling->contents_scale_key());
+ if (this_tiling && this_tiling->raster_transform() != raster_transform) {
+ Remove(this_tiling);
+ this_tiling = nullptr;
+ }
if (!this_tiling) {
std::unique_ptr<PictureLayerTiling> new_tiling(new PictureLayerTiling(
- tree_, pending_twin_tiling->contents_scale(), raster_source_, client_,
+ tree_, raster_transform, raster_source_, client_,
kMaxSoonBorderDistanceInScreenPixels, max_preraster_distance_));
tilings_.push_back(std::move(new_tiling));
this_tiling = tilings_.back().get();
@@ -124,7 +129,7 @@ void PictureLayerTilingSet::UpdateTilingsToCurrentRasterSourceForActivation(
// If the tiling is not shared (FindTilingWithScale returns nullptr), then
// invalidate tiles and update them to the new raster source.
for (const auto& tiling : tilings_) {
- if (pending_twin_set->FindTilingWithScaleKey(tiling->contents_scale()))
+ if (pending_twin_set->FindTilingWithScaleKey(tiling->contents_scale_key()))
continue;
tiling->SetRasterSourceAndResize(raster_source);
@@ -241,8 +246,8 @@ void PictureLayerTilingSet::CleanUpTilings(
std::vector<PictureLayerTiling*> to_remove;
for (const auto& tiling : tilings_) {
// Keep all tilings within the min/max scales.
- if (tiling->contents_scale() >= min_acceptable_high_res_scale_key &&
- tiling->contents_scale() <= max_acceptable_high_res_scale_key) {
+ if (tiling->contents_scale_key() >= min_acceptable_high_res_scale_key &&
+ tiling->contents_scale_key() <= max_acceptable_high_res_scale_key) {
continue;
}
@@ -277,20 +282,20 @@ void PictureLayerTilingSet::MarkAllTilingsNonIdeal() {
}
PictureLayerTiling* PictureLayerTilingSet::AddTiling(
- float contents_scale,
+ const ScaleTranslate2d& raster_transform,
scoped_refptr<RasterSource> raster_source) {
if (!raster_source_)
raster_source_ = raster_source;
#if DCHECK_IS_ON()
for (size_t i = 0; i < tilings_.size(); ++i) {
- DCHECK_NE(tilings_[i]->contents_scale(), contents_scale);
+ DCHECK_NE(tilings_[i]->contents_scale_key(), raster_transform.scale());
DCHECK_EQ(tilings_[i]->raster_source(), raster_source.get());
}
#endif // DCHECK_IS_ON()
tilings_.push_back(base::MakeUnique<PictureLayerTiling>(
- tree_, contents_scale, raster_source, client_,
+ tree_, raster_transform, raster_source, client_,
kMaxSoonBorderDistanceInScreenPixels, max_preraster_distance_));
PictureLayerTiling* appended = tilings_.back().get();
state_since_last_tile_priority_update_.added_tilings = true;
@@ -309,7 +314,7 @@ int PictureLayerTilingSet::NumHighResTilings() const {
PictureLayerTiling* PictureLayerTilingSet::FindTilingWithScaleKey(
float scale_key) const {
for (size_t i = 0; i < tilings_.size(); ++i) {
- if (tilings_[i]->contents_scale() == scale_key)
+ if (tilings_[i]->contents_scale_key() == scale_key)
return tilings_[i].get();
}
return nullptr;
@@ -332,7 +337,7 @@ void PictureLayerTilingSet::RemoveTilingsBelowScaleKey(
base::EraseIf(
tilings_,
[minimum_scale_key](const std::unique_ptr<PictureLayerTiling>& tiling) {
- return tiling->contents_scale() < minimum_scale_key;
+ return tiling->contents_scale_key() < minimum_scale_key;
});
}
@@ -341,7 +346,7 @@ void PictureLayerTilingSet::RemoveTilingsAboveScaleKey(
base::EraseIf(
tilings_,
[maximum_scale_key](const std::unique_ptr<PictureLayerTiling>& tiling) {
- return tiling->contents_scale() > maximum_scale_key;
+ return tiling->contents_scale_key() > maximum_scale_key;
});
}
@@ -372,7 +377,7 @@ float PictureLayerTilingSet::GetSnappedContentsScaleKey(
float snapped_contents_scale = start_scale;
float snapped_ratio = snap_to_existing_tiling_ratio;
for (const auto& tiling : tilings_) {
- float tiling_contents_scale = tiling->contents_scale();
+ float tiling_contents_scale = tiling->contents_scale_key();
float ratio = LargerRatio(tiling_contents_scale, start_scale);
if (ratio < snapped_ratio) {
snapped_contents_scale = tiling_contents_scale;
@@ -386,7 +391,7 @@ float PictureLayerTilingSet::GetMaximumContentsScale() const {
if (tilings_.empty())
return 0.f;
// The first tiling has the largest contents scale.
- return tilings_[0]->contents_scale();
+ return tilings_[0]->raster_transform().scale();
}
bool PictureLayerTilingSet::TilingsNeedUpdate(
@@ -574,7 +579,7 @@ PictureLayerTilingSet::CoverageIterator::CoverageIterator(
size_t tilings_size = set_->tilings_.size();
for (ideal_tiling_ = 0; ideal_tiling_ < tilings_size; ++ideal_tiling_) {
PictureLayerTiling* tiling = set_->tilings_[ideal_tiling_].get();
- if (tiling->contents_scale() < ideal_contents_scale) {
+ if (tiling->contents_scale_key() < ideal_contents_scale) {
if (ideal_tiling_ > 0)
ideal_tiling_--;
break;
« 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