10529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch// Copyright 2014 The Chromium Authors. All rights reserved. 20529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch// Use of this source code is governed by a BSD-style license that can be 30529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch// found in the LICENSE file. 40529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 50529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#ifndef CC_DEBUG_FRAME_VIEWER_INSTRUMENTATION_H_ 60529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#define CC_DEBUG_FRAME_VIEWER_INSTRUMENTATION_H_ 70529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 80529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#include "base/debug/trace_event.h" 90529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#include "cc/resources/tile.h" 100529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 110529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochnamespace cc { 120529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochnamespace frame_viewer_instrumentation { 130529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochnamespace internal { 140529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 150529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochconst char kCategory[] = "cc"; 160529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochconst char kTileData[] = "tileData"; 170529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochconst char kLayerId[] = "layerId"; 180529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochconst char kTileId[] = "tileId"; 190529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochconst char kTileResolution[] = "tileResolution"; 200529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochconst char kSourceFrameNumber[] = "sourceFrameNumber"; 210529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochconst char kRasterMode[] = "rasterMode"; 220529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 230529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochconst char kAnalyzeTask[] = "AnalyzeTask"; 240529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochconst char kRasterTask[] = "RasterTask"; 250529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)scoped_refptr<base::debug::ConvertableToTraceFormat> TileDataAsValue( 275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const void* tile_id, 285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) TileResolution tile_resolution, 295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) int source_frame_number, 305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) int layer_id) { 315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) scoped_refptr<base::debug::TracedValue> res(new base::debug::TracedValue()); 321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci TracedValue::SetIDRef(tile_id, res.get(), internal::kTileId); 335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) res->SetString(internal::kTileResolution, 345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) TileResolutionToString(tile_resolution)); 350529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch res->SetInteger(internal::kSourceFrameNumber, source_frame_number); 360529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch res->SetInteger(internal::kLayerId, layer_id); 375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return res; 380529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch} 390529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 400529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch} // namespace internal 410529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 420529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochclass ScopedAnalyzeTask { 430529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch public: 440529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch ScopedAnalyzeTask(const void* tile_id, 450529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch TileResolution tile_resolution, 460529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch int source_frame_number, 470529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch int layer_id) { 480529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch TRACE_EVENT_BEGIN1( 490529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch internal::kCategory, 500529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch internal::kAnalyzeTask, 510529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch internal::kTileData, 525f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) internal::TileDataAsValue( 535f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) tile_id, tile_resolution, source_frame_number, layer_id)); 540529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch } 550529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch ~ScopedAnalyzeTask() { 560529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch TRACE_EVENT_END0(internal::kCategory, internal::kAnalyzeTask); 570529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch } 580529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 590529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch private: 600529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch DISALLOW_COPY_AND_ASSIGN(ScopedAnalyzeTask); 610529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch}; 620529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 630529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochclass ScopedRasterTask { 640529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch public: 650529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch ScopedRasterTask(const void* tile_id, 660529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch TileResolution tile_resolution, 670529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch int source_frame_number, 680529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch int layer_id, 690529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch RasterMode raster_mode) { 700529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch TRACE_EVENT_BEGIN2( 710529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch internal::kCategory, 720529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch internal::kRasterTask, 730529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch internal::kTileData, 745f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) internal::TileDataAsValue( 755f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) tile_id, tile_resolution, source_frame_number, layer_id), 760529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch internal::kRasterMode, 775f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) RasterModeToString(raster_mode)); 780529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch } 790529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch ~ScopedRasterTask() { 800529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch TRACE_EVENT_END0(internal::kCategory, internal::kRasterTask); 810529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch } 820529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 830529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch private: 840529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch DISALLOW_COPY_AND_ASSIGN(ScopedRasterTask); 850529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch}; 860529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 870529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch} // namespace frame_viewer_instrumentation 880529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch} // namespace cc 890529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 900529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#endif // CC_DEBUG_FRAME_VIEWER_INSTRUMENTATION_H_ 91