summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cc/cc.gyp1
-rw-r--r--cc/debug/frame_viewer_instrumentation.h93
-rw-r--r--cc/resources/tile_manager.cc32
3 files changed, 104 insertions, 22 deletions
diff --git a/cc/cc.gyp b/cc/cc.gyp
index c1fad05f..7ce4ef1 100644
--- a/cc/cc.gyp
+++ b/cc/cc.gyp
@@ -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;