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

Unified Diff: cc/resources/tiling_set_raster_queue_all.cc

Issue 1130123003: cc: Separate the priority from the tile and put in new PrioritizedTile (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Tile too friendly, lets fix that 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 side-by-side diff with in-line comments
Download patch
Index: cc/resources/tiling_set_raster_queue_all.cc
diff --git a/cc/resources/tiling_set_raster_queue_all.cc b/cc/resources/tiling_set_raster_queue_all.cc
index 6f212152a98cfcfb3caebe1951cc4ff1a77f1158..27954ef8daba7f61db58e25a16a01f3bc3c07ffd 100644
--- a/cc/resources/tiling_set_raster_queue_all.cc
+++ b/cc/resources/tiling_set_raster_queue_all.cc
@@ -118,17 +118,7 @@ void TilingSetRasterQueueAll::Pop() {
AdvanceToNextStage();
}
-Tile* TilingSetRasterQueueAll::Top() {
- DCHECK(!IsEmpty());
-
- IteratorType index = stages_[current_stage_].iterator_type;
- DCHECK(!iterators_[index].done());
- DCHECK(iterators_[index].type() == stages_[current_stage_].tile_type);
-
- return *iterators_[index];
-}
-
-const Tile* TilingSetRasterQueueAll::Top() const {
+const PrioritizedTile& TilingSetRasterQueueAll::Top() const {
DCHECK(!IsEmpty());
IteratorType index = stages_[current_stage_].iterator_type;
@@ -153,39 +143,39 @@ void TilingSetRasterQueueAll::AdvanceToNextStage() {
// OnePriorityRectIterator
TilingSetRasterQueueAll::OnePriorityRectIterator::OnePriorityRectIterator()
- : tile_(nullptr), tiling_(nullptr), tiling_data_(nullptr) {
+ : tiling_(nullptr), tiling_data_(nullptr) {
}
TilingSetRasterQueueAll::OnePriorityRectIterator::OnePriorityRectIterator(
PictureLayerTiling* tiling,
TilingData* tiling_data)
- : tile_(nullptr), tiling_(tiling), tiling_data_(tiling_data) {
+ : tiling_(tiling), tiling_data_(tiling_data) {
}
template <typename TilingIteratorType>
void TilingSetRasterQueueAll::OnePriorityRectIterator::AdvanceToNextTile(
TilingIteratorType* iterator) {
- tile_ = nullptr;
- while (!tile_ || !TileNeedsRaster(tile_)) {
+ current_tile_.Invalidate();
+ Tile* tile = nullptr;
+ while (!tile || !TileNeedsRaster(tile)) {
++(*iterator);
if (!(*iterator)) {
- tile_ = nullptr;
return;
}
- tile_ = tiling_->TileAt(iterator->index_x(), iterator->index_y());
+ tile = tiling_->TileAt(iterator->index_x(), iterator->index_y());
}
- tiling_->UpdateTilePriority(tile_);
+ current_tile_.UpdateTile(tile, tiling_);
}
template <typename TilingIteratorType>
bool TilingSetRasterQueueAll::OnePriorityRectIterator::
GetFirstTileAndCheckIfValid(TilingIteratorType* iterator) {
- tile_ = tiling_->TileAt(iterator->index_x(), iterator->index_y());
- if (!tile_ || !TileNeedsRaster(tile_)) {
- tile_ = nullptr;
+ Tile* tile = tiling_->TileAt(iterator->index_x(), iterator->index_y());
+ if (!tile || !TileNeedsRaster(tile)) {
+ current_tile_.Invalidate();
return false;
}
- tiling_->UpdateTilePriority(tile_);
+ current_tile_.UpdateTile(tile, tiling_);
return true;
}
@@ -250,7 +240,7 @@ TilingSetRasterQueueAll::SkewportTilingIterator::SkewportTilingIterator(
++(*this);
return;
}
- if (tile_->content_rect().Intersects(pending_visible_rect_))
+ if (current_tile_.tile()->content_rect().Intersects(pending_visible_rect_))
++(*this);
}
@@ -259,7 +249,7 @@ TilingSetRasterQueueAll::SkewportTilingIterator&
operator++() {
AdvanceToNextTile(&iterator_);
while (!done()) {
- if (!tile_->content_rect().Intersects(pending_visible_rect_))
+ if (!current_tile_.tile()->content_rect().Intersects(pending_visible_rect_))
break;
AdvanceToNextTile(&iterator_);
}
@@ -283,7 +273,7 @@ TilingSetRasterQueueAll::SoonBorderTilingIterator::SoonBorderTilingIterator(
++(*this);
return;
}
- if (tile_->content_rect().Intersects(pending_visible_rect_))
+ if (current_tile_.tile()->content_rect().Intersects(pending_visible_rect_))
++(*this);
}
@@ -292,7 +282,7 @@ TilingSetRasterQueueAll::SoonBorderTilingIterator&
operator++() {
AdvanceToNextTile(&iterator_);
while (!done()) {
- if (!tile_->content_rect().Intersects(pending_visible_rect_))
+ if (!current_tile_.tile()->content_rect().Intersects(pending_visible_rect_))
break;
AdvanceToNextTile(&iterator_);
}
@@ -316,7 +306,7 @@ TilingSetRasterQueueAll::EventuallyTilingIterator::EventuallyTilingIterator(
++(*this);
return;
}
- if (tile_->content_rect().Intersects(pending_visible_rect_))
+ if (current_tile_.tile()->content_rect().Intersects(pending_visible_rect_))
++(*this);
}
@@ -325,7 +315,7 @@ TilingSetRasterQueueAll::EventuallyTilingIterator&
operator++() {
AdvanceToNextTile(&iterator_);
while (!done()) {
- if (!tile_->content_rect().Intersects(pending_visible_rect_))
+ if (!current_tile_.tile()->content_rect().Intersects(pending_visible_rect_))
break;
AdvanceToNextTile(&iterator_);
}
@@ -333,17 +323,13 @@ TilingSetRasterQueueAll::EventuallyTilingIterator&
}
// TilingIterator
-TilingSetRasterQueueAll::TilingIterator::TilingIterator()
- : tiling_(NULL), current_tile_(NULL) {
+TilingSetRasterQueueAll::TilingIterator::TilingIterator() : tiling_(nullptr) {
}
TilingSetRasterQueueAll::TilingIterator::TilingIterator(
PictureLayerTiling* tiling,
TilingData* tiling_data)
- : tiling_(tiling),
- tiling_data_(tiling_data),
- phase_(VISIBLE_RECT),
- current_tile_(NULL) {
+ : tiling_(tiling), tiling_data_(tiling_data), phase_(VISIBLE_RECT) {
visible_iterator_ = VisibleTilingIterator(tiling_, tiling_data_);
if (visible_iterator_.done()) {
AdvancePhase();
@@ -358,8 +344,8 @@ TilingSetRasterQueueAll::TilingIterator::~TilingIterator() {
void TilingSetRasterQueueAll::TilingIterator::AdvancePhase() {
DCHECK_LT(phase_, EVENTUALLY_RECT);
- current_tile_ = nullptr;
- while (!current_tile_ && phase_ < EVENTUALLY_RECT) {
+ current_tile_.Invalidate();
+ while (!current_tile_.tile() && phase_ < EVENTUALLY_RECT) {
phase_ = static_cast<Phase>(phase_ + 1);
switch (phase_) {
case VISIBLE_RECT:
@@ -429,7 +415,7 @@ TilingSetRasterQueueAll::TilingIterator&
case EVENTUALLY_RECT:
++eventually_iterator_;
if (eventually_iterator_.done()) {
- current_tile_ = nullptr;
+ current_tile_.Invalidate();
return *this;
}
current_tile_ = *eventually_iterator_;

Powered by Google App Engine
This is Rietveld 408576698