Commit 2d8dc2d0 authored by nduca@chromium.org's avatar nduca@chromium.org

[cc] Pass metadata about a tile to the raster system for benchmarks

There are a variety of benchmarks that want to measure the cost of
raster for now bin only, and similarly, only for low res tiles. This
patch provides very primitive infrastructure for this.

R=reveman
CC=egraether,skyostil

BUG=175976

Review URL: https://chromiumcodereview.appspot.com/12258004

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@182216 0039d316-1c4b-4281-b951-d872f2087c98
parent 38f52016
......@@ -69,6 +69,14 @@ std::string ValueToString(scoped_ptr<base::Value> value)
return str;
}
RasterTaskMetadata GetRasterTaskMetadata(const ManagedTileState& mts) {
RasterTaskMetadata raster_task_metadata;
raster_task_metadata.is_tile_in_pending_tree_now_bin =
mts.tree_bin[PENDING_TREE] == NOW_BIN;
raster_task_metadata.tile_resolution = mts.resolution;
return raster_task_metadata;
}
} // namespace
scoped_ptr<base::Value> TileManagerBinAsValue(TileManagerBin bin) {
......@@ -771,7 +779,8 @@ void TileManager::DispatchOneRasterTask(scoped_refptr<Tile> tile) {
resource_id),
tile->content_rect_,
tile->contents_scale(),
use_cheapness_estimator_),
use_cheapness_estimator_,
GetRasterTaskMetadata(tile->managed_state())),
base::Bind(&TileManager::OnRasterTaskCompleted,
base::Unretained(this),
tile,
......@@ -788,6 +797,7 @@ void TileManager::PerformOneRaster(Tile* tile) {
tile->content_rect_,
tile->contents_scale(),
use_cheapness_estimator_,
GetRasterTaskMetadata(tile->managed_state()),
tile->picture_pile(),
&rendering_stats_);
......@@ -893,9 +903,16 @@ void TileManager::PerformRaster(uint8* buffer,
const gfx::Rect& rect,
float contents_scale,
bool use_cheapness_estimator,
const RasterTaskMetadata& raster_task_metadata,
PicturePileImpl* picture_pile,
RenderingStats* stats) {
TRACE_EVENT0("cc", "TileManager::PerformRaster");
TRACE_EVENT2(
"cc", "TileManager::PerformRaster",
"is_on_pending_tree",
raster_task_metadata.is_tile_in_pending_tree_now_bin,
"is_low_res",
raster_task_metadata.tile_resolution == LOW_RESOLUTION);
DCHECK(picture_pile);
DCHECK(buffer);
SkBitmap bitmap;
......
......@@ -63,6 +63,12 @@ enum TileRasterState {
scoped_ptr<base::Value> TileRasterStateAsValue(
TileRasterState bin);
// Metadata that is passed to raster tasks for diagnostic purposes.
struct RasterTaskMetadata {
bool is_tile_in_pending_tree_now_bin;
TileResolution tile_resolution;
};
// This is state that is specific to a tile that is
// managed by the TileManager.
class CC_EXPORT ManagedTileState {
......@@ -175,6 +181,7 @@ class CC_EXPORT TileManager {
const gfx::Rect& rect,
float contents_scale,
bool use_cheapness_estimator,
const RasterTaskMetadata& raster_task_metadata,
PicturePileImpl* picture_pile,
RenderingStats* stats);
static void RunImageDecodeTask(skia::LazyPixelRef* pixel_ref,
......
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