Commit 9f7eaff1 authored by vmpstr's avatar vmpstr Committed by Commit bot

cc: Eliminate refcount churn in prioritized tile's raster source.

This patch saves about 5% time during prepare tiles by eliminating
unnecessary refcount churn when copying prioritized tiles around in
the raster tile priority queues.

R=ericrk
CQ_INCLUDE_TRYBOTS=tryserver.blink:linux_blink_rel

Review-Url: https://codereview.chromium.org/2150473003
Cr-Commit-Position: refs/heads/master@{#405613}
parent 7d57b7e2
...@@ -778,7 +778,7 @@ PrioritizedTile PictureLayerTiling::MakePrioritizedTile( ...@@ -778,7 +778,7 @@ PrioritizedTile PictureLayerTiling::MakePrioritizedTile(
1.f / tile->contents_scale()) 1.f / tile->contents_scale())
.ToString(); .ToString();
return PrioritizedTile(tile, raster_source(), return PrioritizedTile(tile, this,
ComputePriorityForTile(tile, priority_rect_type), ComputePriorityForTile(tile, priority_rect_type),
IsTileOccluded(tile)); IsTileOccluded(tile));
} }
......
...@@ -9,25 +9,19 @@ ...@@ -9,25 +9,19 @@
namespace cc { namespace cc {
PrioritizedTile::PrioritizedTile() : tile_(nullptr), is_occluded_(false) {} PrioritizedTile::PrioritizedTile() = default;
PrioritizedTile::PrioritizedTile(Tile* tile, PrioritizedTile::PrioritizedTile(Tile* tile,
scoped_refptr<RasterSource> raster_source, const PictureLayerTiling* source_tiling,
const TilePriority priority, const TilePriority priority,
bool is_occluded) bool is_occluded)
: tile_(tile), : tile_(tile),
raster_source_(std::move(raster_source)), source_tiling_(source_tiling),
priority_(priority), priority_(priority),
is_occluded_(is_occluded) {} is_occluded_(is_occluded) {}
PrioritizedTile::PrioritizedTile(const PrioritizedTile& other) = default;
PrioritizedTile::PrioritizedTile(PrioritizedTile&& other) = default;
PrioritizedTile::~PrioritizedTile() = default; PrioritizedTile::~PrioritizedTile() = default;
PrioritizedTile& PrioritizedTile::operator=(const PrioritizedTile& other) =
default;
PrioritizedTile& PrioritizedTile::operator=(PrioritizedTile&& other) = default;
void PrioritizedTile::AsValueInto(base::trace_event::TracedValue* value) const { void PrioritizedTile::AsValueInto(base::trace_event::TracedValue* value) const {
tile_->AsValueInto(value); tile_->AsValueInto(value);
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
#include "cc/base/cc_export.h" #include "cc/base/cc_export.h"
#include "cc/playback/raster_source.h" #include "cc/playback/raster_source.h"
#include "cc/tiles/picture_layer_tiling.h"
#include "cc/tiles/tile.h" #include "cc/tiles/tile.h"
#include "cc/tiles/tile_priority.h" #include "cc/tiles/tile_priority.h"
...@@ -19,16 +20,15 @@ class CC_EXPORT PrioritizedTile { ...@@ -19,16 +20,15 @@ class CC_EXPORT PrioritizedTile {
// This class is constructed and returned by a |PictureLayerTiling|, and // This class is constructed and returned by a |PictureLayerTiling|, and
// represents a tile and its priority. // represents a tile and its priority.
PrioritizedTile(); PrioritizedTile();
PrioritizedTile(const PrioritizedTile& other); PrioritizedTile(Tile* tile,
PrioritizedTile(PrioritizedTile&& other); const PictureLayerTiling* source_tiling,
const TilePriority priority,
bool is_occluded);
~PrioritizedTile(); ~PrioritizedTile();
PrioritizedTile& operator=(const PrioritizedTile& other);
PrioritizedTile& operator=(PrioritizedTile&& other);
Tile* tile() const { return tile_; } Tile* tile() const { return tile_; }
const scoped_refptr<RasterSource>& raster_source() const { const scoped_refptr<RasterSource>& raster_source() const {
return raster_source_; return source_tiling_->raster_source();
} }
const TilePriority& priority() const { return priority_; } const TilePriority& priority() const { return priority_; }
bool is_occluded() const { return is_occluded_; } bool is_occluded() const { return is_occluded_; }
...@@ -36,17 +36,10 @@ class CC_EXPORT PrioritizedTile { ...@@ -36,17 +36,10 @@ class CC_EXPORT PrioritizedTile {
void AsValueInto(base::trace_event::TracedValue* value) const; void AsValueInto(base::trace_event::TracedValue* value) const;
private: private:
friend class PictureLayerTiling; Tile* tile_ = nullptr;
const PictureLayerTiling* source_tiling_ = nullptr;
PrioritizedTile(Tile* tile,
scoped_refptr<RasterSource> raster_source,
const TilePriority priority,
bool is_occluded);
Tile* tile_;
scoped_refptr<RasterSource> raster_source_;
TilePriority priority_; TilePriority priority_;
bool is_occluded_; bool is_occluded_ = false;
}; };
} // namespace cc } // namespace cc
......
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