diff options
-rw-r--r-- | cc/cc.gyp | 1 | ||||
-rw-r--r-- | cc/debug/frame_viewer_instrumentation.h | 93 | ||||
-rw-r--r-- | cc/resources/tile_manager.cc | 32 |
3 files changed, 104 insertions, 22 deletions
@@ -96,6 +96,7 @@ 'debug/devtools_instrumentation.h', 'debug/frame_rate_counter.cc', 'debug/frame_rate_counter.h', + 'debug/frame_viewer_instrumentation.h', 'debug/layer_tree_debug_state.cc', 'debug/layer_tree_debug_state.h', 'debug/micro_benchmark.cc', diff --git a/cc/debug/frame_viewer_instrumentation.h b/cc/debug/frame_viewer_instrumentation.h new file mode 100644 index 0000000..16cf433 --- /dev/null +++ b/cc/debug/frame_viewer_instrumentation.h @@ -0,0 +1,93 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CC_DEBUG_FRAME_VIEWER_INSTRUMENTATION_H_ +#define CC_DEBUG_FRAME_VIEWER_INSTRUMENTATION_H_ + +#include "base/debug/trace_event.h" +#include "cc/resources/tile.h" + +namespace cc { +namespace frame_viewer_instrumentation { +namespace internal { + +const char kCategory[] = "cc"; +const char kTileData[] = "tileData"; +const char kLayerId[] = "layerId"; +const char kTileId[] = "tileId"; +const char kTileResolution[] = "tileResolution"; +const char kSourceFrameNumber[] = "sourceFrameNumber"; +const char kRasterMode[] = "rasterMode"; + +const char kAnalyzeTask[] = "AnalyzeTask"; +const char kRasterTask[] = "RasterTask"; + +scoped_ptr<base::Value> TileDataAsValue(const void* tile_id, + TileResolution tile_resolution, + int source_frame_number, + int layer_id) { + scoped_ptr<base::DictionaryValue> res(new base::DictionaryValue); + res->Set(internal::kTileId, TracedValue::CreateIDRef(tile_id).release()); + res->Set(internal::kTileResolution, + TileResolutionAsValue(tile_resolution).release()); + res->SetInteger(internal::kSourceFrameNumber, source_frame_number); + res->SetInteger(internal::kLayerId, layer_id); + return res.PassAs<base::Value>(); +} + +} // namespace internal + +class ScopedAnalyzeTask { + public: + ScopedAnalyzeTask(const void* tile_id, + TileResolution tile_resolution, + int source_frame_number, + int layer_id) { + TRACE_EVENT_BEGIN1( + internal::kCategory, + internal::kAnalyzeTask, + internal::kTileData, + TracedValue::FromValue(internal::TileDataAsValue(tile_id, + tile_resolution, + source_frame_number, + layer_id).release())); + } + ~ScopedAnalyzeTask() { + TRACE_EVENT_END0(internal::kCategory, internal::kAnalyzeTask); + } + + private: + DISALLOW_COPY_AND_ASSIGN(ScopedAnalyzeTask); +}; + +class ScopedRasterTask { + public: + ScopedRasterTask(const void* tile_id, + TileResolution tile_resolution, + int source_frame_number, + int layer_id, + RasterMode raster_mode) { + TRACE_EVENT_BEGIN2( + internal::kCategory, + internal::kRasterTask, + internal::kTileData, + TracedValue::FromValue(internal::TileDataAsValue(tile_id, + tile_resolution, + source_frame_number, + layer_id).release()), + internal::kRasterMode, + TracedValue::FromValue(RasterModeAsValue(raster_mode).release())); + } + ~ScopedRasterTask() { + TRACE_EVENT_END0(internal::kCategory, internal::kRasterTask); + } + + private: + DISALLOW_COPY_AND_ASSIGN(ScopedRasterTask); +}; + +} // namespace frame_viewer_instrumentation +} // namespace cc + +#endif // CC_DEBUG_FRAME_VIEWER_INSTRUMENTATION_H_ diff --git a/cc/resources/tile_manager.cc b/cc/resources/tile_manager.cc index 026fb8d..9d565e2 100644 --- a/cc/resources/tile_manager.cc +++ b/cc/resources/tile_manager.cc @@ -13,6 +13,7 @@ #include "base/logging.h" #include "base/metrics/histogram.h" #include "cc/debug/devtools_instrumentation.h" +#include "cc/debug/frame_viewer_instrumentation.h" #include "cc/debug/traced_value.h" #include "cc/layers/picture_layer_impl.h" #include "cc/resources/raster_worker_pool.h" @@ -109,15 +110,6 @@ class RasterTaskImpl : public RasterTask { virtual ~RasterTaskImpl() { DCHECK(!canvas_); } private: - scoped_ptr<base::Value> DataAsValue() const { - scoped_ptr<base::DictionaryValue> res(new base::DictionaryValue()); - res->Set("tile_id", TracedValue::CreateIDRef(tile_id_).release()); - res->Set("resolution", TileResolutionAsValue(tile_resolution_).release()); - res->SetInteger("source_frame_number", source_frame_number_); - res->SetInteger("layer_id", layer_id_); - return res.PassAs<base::Value>(); - } - void AnalyzeAndRaster(PicturePileImpl* picture_pile) { DCHECK(picture_pile); DCHECK(canvas_); @@ -132,10 +124,8 @@ class RasterTaskImpl : public RasterTask { } void Analyze(PicturePileImpl* picture_pile) { - TRACE_EVENT1("cc", - "RasterTaskImpl::Analyze", - "data", - TracedValue::FromValue(DataAsValue().release())); + frame_viewer_instrumentation::ScopedAnalyzeTask analyze_task( + tile_id_, tile_resolution_, source_frame_number_, layer_id_); DCHECK(picture_pile); @@ -151,15 +141,13 @@ class RasterTaskImpl : public RasterTask { } void Raster(PicturePileImpl* picture_pile) { - TRACE_EVENT2( - "cc", - "RasterTaskImpl::Raster", - "data", - TracedValue::FromValue(DataAsValue().release()), - "raster_mode", - TracedValue::FromValue(RasterModeAsValue(raster_mode_).release())); - - devtools_instrumentation::ScopedLayerTask raster_task( + frame_viewer_instrumentation::ScopedRasterTask raster_task( + tile_id_, + tile_resolution_, + source_frame_number_, + layer_id_, + raster_mode_); + devtools_instrumentation::ScopedLayerTask layer_task( devtools_instrumentation::kRasterTask, layer_id_); skia::RefPtr<SkDrawFilter> draw_filter; |