Commit b38ea4ae authored by vmpstr's avatar vmpstr Committed by Commit bot

cc: TilingSetRasterQueue clean-ups and optimizations.

This patch removes some redundant code (fixing a bunch of TODOs). Also
ensures that we only call pending_visible_rect once per iterator (since
the function involves a virtual call).

R=enne
BUG=488636

Review URL: https://codereview.chromium.org/1144973005

Cr-Commit-Position: refs/heads/master@{#330787}
parent 74efa339
...@@ -152,7 +152,8 @@ TilingSetRasterQueueAll::OnePriorityRectIterator::OnePriorityRectIterator( ...@@ -152,7 +152,8 @@ TilingSetRasterQueueAll::OnePriorityRectIterator::OnePriorityRectIterator(
PictureLayerTiling::PriorityRectType priority_rect_type) PictureLayerTiling::PriorityRectType priority_rect_type)
: tiling_(tiling), : tiling_(tiling),
tiling_data_(tiling_data), tiling_data_(tiling_data),
priority_rect_type_(priority_rect_type) { priority_rect_type_(priority_rect_type),
pending_visible_rect_(tiling->pending_visible_rect()) {
} }
template <typename TilingIteratorType> template <typename TilingIteratorType>
...@@ -194,7 +195,7 @@ bool TilingSetRasterQueueAll::OnePriorityRectIterator::IsTileValid( ...@@ -194,7 +195,7 @@ bool TilingSetRasterQueueAll::OnePriorityRectIterator::IsTileValid(
// for pending visible rect tiles as tiling iterators do not ignore those // for pending visible rect tiles as tiling iterators do not ignore those
// tiles. // tiles.
if (priority_rect_type_ > PictureLayerTiling::PENDING_VISIBLE_RECT && if (priority_rect_type_ > PictureLayerTiling::PENDING_VISIBLE_RECT &&
tiling_->pending_visible_rect().Intersects(tile->content_rect())) { pending_visible_rect_.Intersects(tile->content_rect())) {
return false; return false;
} }
return true; return true;
...@@ -232,9 +233,8 @@ TilingSetRasterQueueAll::PendingVisibleTilingIterator:: ...@@ -232,9 +233,8 @@ TilingSetRasterQueueAll::PendingVisibleTilingIterator::
: OnePriorityRectIterator(tiling, : OnePriorityRectIterator(tiling,
tiling_data, tiling_data,
PictureLayerTiling::PENDING_VISIBLE_RECT) { PictureLayerTiling::PENDING_VISIBLE_RECT) {
iterator_ = TilingData::DifferenceIterator(tiling_data_, iterator_ = TilingData::DifferenceIterator(
tiling_->pending_visible_rect(), tiling_data_, pending_visible_rect_, tiling_->current_visible_rect());
tiling_->current_visible_rect());
if (!iterator_) if (!iterator_)
return; return;
if (!GetFirstTileAndCheckIfValid(&iterator_)) if (!GetFirstTileAndCheckIfValid(&iterator_))
...@@ -254,8 +254,7 @@ TilingSetRasterQueueAll::SkewportTilingIterator::SkewportTilingIterator( ...@@ -254,8 +254,7 @@ TilingSetRasterQueueAll::SkewportTilingIterator::SkewportTilingIterator(
TilingData* tiling_data) TilingData* tiling_data)
: OnePriorityRectIterator(tiling, : OnePriorityRectIterator(tiling,
tiling_data, tiling_data,
PictureLayerTiling::SKEWPORT_RECT), PictureLayerTiling::SKEWPORT_RECT) {
pending_visible_rect_(tiling->pending_visible_rect()) {
if (!tiling_->has_skewport_rect_tiles()) if (!tiling_->has_skewport_rect_tiles())
return; return;
iterator_ = TilingData::SpiralDifferenceIterator( iterator_ = TilingData::SpiralDifferenceIterator(
...@@ -267,23 +266,12 @@ TilingSetRasterQueueAll::SkewportTilingIterator::SkewportTilingIterator( ...@@ -267,23 +266,12 @@ TilingSetRasterQueueAll::SkewportTilingIterator::SkewportTilingIterator(
++(*this); ++(*this);
return; return;
} }
// TODO(e_hakkinen): This is not needed as GetFirstTileAndCheckIfValid
// does the same checking.
if (current_tile_.tile()->content_rect().Intersects(pending_visible_rect_))
++(*this);
} }
TilingSetRasterQueueAll::SkewportTilingIterator& TilingSetRasterQueueAll::SkewportTilingIterator&
TilingSetRasterQueueAll::SkewportTilingIterator:: TilingSetRasterQueueAll::SkewportTilingIterator::
operator++() { operator++() {
AdvanceToNextTile(&iterator_); AdvanceToNextTile(&iterator_);
// TODO(e_hakkinen): This is not needed as GetFirstTileAndCheckIfValid called
// by AdvanceToNextTile does the same checking.
while (!done()) {
if (!current_tile_.tile()->content_rect().Intersects(pending_visible_rect_))
break;
AdvanceToNextTile(&iterator_);
}
return *this; return *this;
} }
...@@ -293,8 +281,7 @@ TilingSetRasterQueueAll::SoonBorderTilingIterator::SoonBorderTilingIterator( ...@@ -293,8 +281,7 @@ TilingSetRasterQueueAll::SoonBorderTilingIterator::SoonBorderTilingIterator(
TilingData* tiling_data) TilingData* tiling_data)
: OnePriorityRectIterator(tiling, : OnePriorityRectIterator(tiling,
tiling_data, tiling_data,
PictureLayerTiling::SOON_BORDER_RECT), PictureLayerTiling::SOON_BORDER_RECT) {
pending_visible_rect_(tiling->pending_visible_rect()) {
if (!tiling_->has_soon_border_rect_tiles()) if (!tiling_->has_soon_border_rect_tiles())
return; return;
iterator_ = TilingData::SpiralDifferenceIterator( iterator_ = TilingData::SpiralDifferenceIterator(
...@@ -306,23 +293,12 @@ TilingSetRasterQueueAll::SoonBorderTilingIterator::SoonBorderTilingIterator( ...@@ -306,23 +293,12 @@ TilingSetRasterQueueAll::SoonBorderTilingIterator::SoonBorderTilingIterator(
++(*this); ++(*this);
return; return;
} }
// TODO(e_hakkinen): This is not needed as GetFirstTileAndCheckIfValid
// does the same checking.
if (current_tile_.tile()->content_rect().Intersects(pending_visible_rect_))
++(*this);
} }
TilingSetRasterQueueAll::SoonBorderTilingIterator& TilingSetRasterQueueAll::SoonBorderTilingIterator&
TilingSetRasterQueueAll::SoonBorderTilingIterator:: TilingSetRasterQueueAll::SoonBorderTilingIterator::
operator++() { operator++() {
AdvanceToNextTile(&iterator_); AdvanceToNextTile(&iterator_);
// TODO(e_hakkinen): This is not needed as GetFirstTileAndCheckIfValid called
// by AdvanceToNextTile does the same checking.
while (!done()) {
if (!current_tile_.tile()->content_rect().Intersects(pending_visible_rect_))
break;
AdvanceToNextTile(&iterator_);
}
return *this; return *this;
} }
...@@ -332,8 +308,7 @@ TilingSetRasterQueueAll::EventuallyTilingIterator::EventuallyTilingIterator( ...@@ -332,8 +308,7 @@ TilingSetRasterQueueAll::EventuallyTilingIterator::EventuallyTilingIterator(
TilingData* tiling_data) TilingData* tiling_data)
: OnePriorityRectIterator(tiling, : OnePriorityRectIterator(tiling,
tiling_data, tiling_data,
PictureLayerTiling::EVENTUALLY_RECT), PictureLayerTiling::EVENTUALLY_RECT) {
pending_visible_rect_(tiling->pending_visible_rect()) {
if (!tiling_->has_eventually_rect_tiles()) if (!tiling_->has_eventually_rect_tiles())
return; return;
iterator_ = TilingData::SpiralDifferenceIterator( iterator_ = TilingData::SpiralDifferenceIterator(
...@@ -345,23 +320,12 @@ TilingSetRasterQueueAll::EventuallyTilingIterator::EventuallyTilingIterator( ...@@ -345,23 +320,12 @@ TilingSetRasterQueueAll::EventuallyTilingIterator::EventuallyTilingIterator(
++(*this); ++(*this);
return; return;
} }
// TODO(e_hakkinen): This is not needed as GetFirstTileAndCheckIfValid
// does the same checking.
if (current_tile_.tile()->content_rect().Intersects(pending_visible_rect_))
++(*this);
} }
TilingSetRasterQueueAll::EventuallyTilingIterator& TilingSetRasterQueueAll::EventuallyTilingIterator&
TilingSetRasterQueueAll::EventuallyTilingIterator:: TilingSetRasterQueueAll::EventuallyTilingIterator::
operator++() { operator++() {
AdvanceToNextTile(&iterator_); AdvanceToNextTile(&iterator_);
// TODO(e_hakkinen): This is not needed as GetFirstTileAndCheckIfValid called
// by AdvanceToNextTile does the same checking.
while (!done()) {
if (!current_tile_.tile()->content_rect().Intersects(pending_visible_rect_))
break;
AdvanceToNextTile(&iterator_);
}
return *this; return *this;
} }
......
...@@ -55,6 +55,7 @@ class CC_EXPORT TilingSetRasterQueueAll { ...@@ -55,6 +55,7 @@ class CC_EXPORT TilingSetRasterQueueAll {
PictureLayerTiling* tiling_; PictureLayerTiling* tiling_;
TilingData* tiling_data_; TilingData* tiling_data_;
PictureLayerTiling::PriorityRectType priority_rect_type_; PictureLayerTiling::PriorityRectType priority_rect_type_;
gfx::Rect pending_visible_rect_;
}; };
// Iterates over visible rect only, left to right top to bottom order. // Iterates over visible rect only, left to right top to bottom order.
...@@ -91,7 +92,6 @@ class CC_EXPORT TilingSetRasterQueueAll { ...@@ -91,7 +92,6 @@ class CC_EXPORT TilingSetRasterQueueAll {
private: private:
TilingData::SpiralDifferenceIterator iterator_; TilingData::SpiralDifferenceIterator iterator_;
gfx::Rect pending_visible_rect_;
}; };
// Iterates over soon border only, spiral around the visible rect. // Iterates over soon border only, spiral around the visible rect.
...@@ -105,7 +105,6 @@ class CC_EXPORT TilingSetRasterQueueAll { ...@@ -105,7 +105,6 @@ class CC_EXPORT TilingSetRasterQueueAll {
private: private:
TilingData::SpiralDifferenceIterator iterator_; TilingData::SpiralDifferenceIterator iterator_;
gfx::Rect pending_visible_rect_;
}; };
// Iterates over eventually rect only, spiral around the soon rect. // Iterates over eventually rect only, spiral around the soon rect.
...@@ -119,7 +118,6 @@ class CC_EXPORT TilingSetRasterQueueAll { ...@@ -119,7 +118,6 @@ class CC_EXPORT TilingSetRasterQueueAll {
private: private:
TilingData::SpiralDifferenceIterator iterator_; TilingData::SpiralDifferenceIterator iterator_;
gfx::Rect pending_visible_rect_;
}; };
// Iterates over all of the above phases in the following order: visible, // Iterates over all of the above phases in the following order: visible,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment