Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(49)

Side by Side Diff: cc/tile_manager.cc

Issue 12096112: [cc] Trace detailed tile info when --trace-all-rendered-frames (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "cc/tile_manager.h" 5 #include "cc/tile_manager.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/debug/trace_event.h" 10 #include "base/debug/trace_event.h"
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
88 case NEVER_BIN: 88 case NEVER_BIN:
89 return scoped_ptr<base::Value>(base::Value::CreateStringValue( 89 return scoped_ptr<base::Value>(base::Value::CreateStringValue(
90 "NEVER_BIN")); 90 "NEVER_BIN"));
91 default: 91 default:
92 DCHECK(false) << "Unrecognized TileManagerBin value"; 92 DCHECK(false) << "Unrecognized TileManagerBin value";
93 return scoped_ptr<base::Value>(base::Value::CreateStringValue( 93 return scoped_ptr<base::Value>(base::Value::CreateStringValue(
94 "<unknown TileManagerBin value>")); 94 "<unknown TileManagerBin value>"));
95 } 95 }
96 } 96 }
97 97
98 scoped_ptr<base::Value> TileManagerBinPriorityAsValue(
99 TileManagerBinPriority bin_priority) {
100 switch (bin_priority) {
101 case HIGH_PRIORITY_BIN:
102 return scoped_ptr<base::Value>(base::Value::CreateStringValue(
103 "HIGH_PRIORITY_BIN"));
104 case LOW_PRIORITY_BIN:
105 return scoped_ptr<base::Value>(base::Value::CreateStringValue(
106 "LOW_PRIORITY_BIN"));
107 default:
108 DCHECK(false) << "Unrecognized TileManagerBinPriority value";
109 return scoped_ptr<base::Value>(base::Value::CreateStringValue(
110 "<unknown TileManagerBinPriority value>"));
111 }
112 }
113
114 scoped_ptr<base::Value> TileRasterStateAsValue(
115 TileRasterState raster_state) {
116 switch (raster_state) {
117 case IDLE_STATE:
118 return scoped_ptr<base::Value>(base::Value::CreateStringValue(
119 "IDLE_STATE"));
120 case WAITING_FOR_RASTER_STATE:
121 return scoped_ptr<base::Value>(base::Value::CreateStringValue(
122 "WAITING_FOR_RASTER_STATE"));
123 case RASTER_STATE:
124 return scoped_ptr<base::Value>(base::Value::CreateStringValue(
125 "RASTER_STATE"));
126 case SET_PIXELS_STATE:
127 return scoped_ptr<base::Value>(base::Value::CreateStringValue(
128 "SET_PIXELS_STATE"));
129 default:
130 DCHECK(false) << "Unrecognized TileRasterState value";
131 return scoped_ptr<base::Value>(base::Value::CreateStringValue(
132 "<unknown TileRasterState value>"));
133 }
134 }
135
98 ManagedTileState::ManagedTileState() 136 ManagedTileState::ManagedTileState()
99 : can_use_gpu_memory(false), 137 : can_use_gpu_memory(false),
100 can_be_freed(true), 138 can_be_freed(true),
101 resource_is_being_initialized(false), 139 resource_is_being_initialized(false),
102 contents_swizzled(false), 140 contents_swizzled(false),
103 need_to_gather_pixel_refs(true), 141 need_to_gather_pixel_refs(true),
104 gpu_memmgr_stats_bin(NEVER_BIN), 142 gpu_memmgr_stats_bin(NEVER_BIN),
105 raster_state(IDLE_STATE) { 143 raster_state(IDLE_STATE) {
106 for (int i = 0; i < NUM_TREES; ++i) 144 for (int i = 0; i < NUM_TREES; ++i)
107 tree_bin[i] = NEVER_BIN; 145 tree_bin[i] = NEVER_BIN;
108 } 146 }
109 147
110 ManagedTileState::~ManagedTileState() { 148 ManagedTileState::~ManagedTileState() {
111 DCHECK(!resource); 149 DCHECK(!resource);
112 DCHECK(!resource_is_being_initialized); 150 DCHECK(!resource_is_being_initialized);
113 } 151 }
114 152
153 scoped_ptr<base::Value> ManagedTileState::AsValue() const {
154 scoped_ptr<base::DictionaryValue> state(new base::DictionaryValue());
155 state->SetBoolean("can_use_gpu_memory", can_use_gpu_memory);
156 state->SetBoolean("can_be_freed", can_be_freed);
157 state->SetBoolean("has_resource", resource.get() != 0);
158 state->SetBoolean("resource_is_being_initialized", resource_is_being_initializ ed);
159 state->Set("raster_state", TileRasterStateAsValue(raster_state).release());
160 state->Set("bin.0", TileManagerBinAsValue(bin[0]).release());
161 state->Set("bin.1", TileManagerBinAsValue(bin[0]).release());
162 state->Set("gpu_memmgr_stats_bin", TileManagerBinAsValue(bin[0]).release());
163 state->Set("resolution", TileResolutionAsValue(resolution).release());
164 state->SetDouble("time_to_needed_in_seconds", time_to_needed_in_seconds);
165 return state.PassAs<base::Value>();
166 }
167
115 TileManager::TileManager( 168 TileManager::TileManager(
116 TileManagerClient* client, 169 TileManagerClient* client,
117 ResourceProvider* resource_provider, 170 ResourceProvider* resource_provider,
118 size_t num_raster_threads, 171 size_t num_raster_threads,
119 bool use_cheapness_estimator) 172 bool use_cheapness_estimator)
120 : client_(client), 173 : client_(client),
121 resource_pool_(ResourcePool::Create(resource_provider)), 174 resource_pool_(ResourcePool::Create(resource_provider)),
122 raster_worker_pool_(RasterWorkerPool::Create(num_raster_threads)), 175 raster_worker_pool_(RasterWorkerPool::Create(num_raster_threads)),
123 manage_tiles_pending_(false), 176 manage_tiles_pending_(false),
124 manage_tiles_call_count_(0), 177 manage_tiles_call_count_(0),
(...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after
331 384
332 DidTileBinChange(tile, bin_map[mts.tree_bin[ACTIVE_TREE]], ACTIVE_TREE); 385 DidTileBinChange(tile, bin_map[mts.tree_bin[ACTIVE_TREE]], ACTIVE_TREE);
333 DidTileBinChange(tile, bin_map[mts.tree_bin[PENDING_TREE]], PENDING_TREE); 386 DidTileBinChange(tile, bin_map[mts.tree_bin[PENDING_TREE]], PENDING_TREE);
334 } 387 }
335 388
336 SortTiles(); 389 SortTiles();
337 390
338 // Assign gpu memory and determine what tiles need to be rasterized. 391 // Assign gpu memory and determine what tiles need to be rasterized.
339 AssignGpuMemoryToTiles(); 392 AssignGpuMemoryToTiles();
340 393
341 TRACE_EVENT_INSTANT1("cc", "DidManage", "state", ValueToString(AsValue())); 394 TRACE_EVENT_INSTANT1("cc", "DidManage", "state",
395 ValueToString(BasicStateAsValue()));
342 396
343 // Finally, kick the rasterizer. 397 // Finally, kick the rasterizer.
344 DispatchMoreTasks(); 398 DispatchMoreTasks();
345 } 399 }
346 400
347 void TileManager::CheckForCompletedTileUploads() { 401 void TileManager::CheckForCompletedTileUploads() {
348 while (!tiles_with_pending_set_pixels_.empty()) { 402 while (!tiles_with_pending_set_pixels_.empty()) {
349 Tile* tile = tiles_with_pending_set_pixels_.front(); 403 Tile* tile = tiles_with_pending_set_pixels_.front();
350 DCHECK(tile->managed_state().resource); 404 DCHECK(tile->managed_state().resource);
351 405
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
386 size_t tile_bytes = tile->bytes_consumed_if_allocated(); 440 size_t tile_bytes = tile->bytes_consumed_if_allocated();
387 if (mts.gpu_memmgr_stats_bin == NOW_BIN) 441 if (mts.gpu_memmgr_stats_bin == NOW_BIN)
388 *memoryRequiredBytes += tile_bytes; 442 *memoryRequiredBytes += tile_bytes;
389 if (mts.gpu_memmgr_stats_bin != NEVER_BIN) 443 if (mts.gpu_memmgr_stats_bin != NEVER_BIN)
390 *memoryNiceToHaveBytes += tile_bytes; 444 *memoryNiceToHaveBytes += tile_bytes;
391 if (mts.can_use_gpu_memory) 445 if (mts.can_use_gpu_memory)
392 *memoryUsedBytes += tile_bytes; 446 *memoryUsedBytes += tile_bytes;
393 } 447 }
394 } 448 }
395 449
396 scoped_ptr<base::Value> TileManager::AsValue() const { 450 scoped_ptr<base::Value> TileManager::BasicStateAsValue() const {
397 scoped_ptr<base::DictionaryValue> state(new base::DictionaryValue()); 451 scoped_ptr<base::DictionaryValue> state(new base::DictionaryValue());
398 state->SetInteger("tile_count", tiles_.size()); 452 state->SetInteger("tile_count", tiles_.size());
399 453
400 state->Set("global_state", global_state_.AsValue().release()); 454 state->Set("global_state", global_state_.AsValue().release());
401 455
402 state->Set("memory_requirements", GetMemoryRequirementsAsValue().release()); 456 state->Set("memory_requirements", GetMemoryRequirementsAsValue().release());
403 return state.PassAs<base::Value>(); 457 return state.PassAs<base::Value>();
404 } 458 }
459 scoped_ptr<base::Value> TileManager::AllTilesAsValue() const {
460 scoped_ptr<base::ListValue> state(new base::ListValue());
461 for (size_t i = 0; i < tiles_.size(); i++)
462 state->Append(tiles_[i]->AsValue().release());
463 return state.PassAs<base::Value>();
464 }
405 465
406 scoped_ptr<base::Value> TileManager::GetMemoryRequirementsAsValue() const { 466 scoped_ptr<base::Value> TileManager::GetMemoryRequirementsAsValue() const {
407 scoped_ptr<base::DictionaryValue> requirements( 467 scoped_ptr<base::DictionaryValue> requirements(
408 new base::DictionaryValue()); 468 new base::DictionaryValue());
409 469
410 size_t memoryRequiredBytes; 470 size_t memoryRequiredBytes;
411 size_t memoryNiceToHaveBytes; 471 size_t memoryNiceToHaveBytes;
412 size_t memoryUsedBytes; 472 size_t memoryUsedBytes;
413 GetMemoryStats(&memoryRequiredBytes, 473 GetMemoryStats(&memoryRequiredBytes,
414 &memoryNiceToHaveBytes, 474 &memoryNiceToHaveBytes,
(...skipping 470 matching lines...) Expand 10 before | Expand all | Expand 10 after
885 decode_begin_time = base::TimeTicks::Now(); 945 decode_begin_time = base::TimeTicks::Now();
886 pixel_ref->Decode(); 946 pixel_ref->Decode();
887 if (stats) { 947 if (stats) {
888 stats->totalDeferredImageDecodeCount++; 948 stats->totalDeferredImageDecodeCount++;
889 stats->totalDeferredImageDecodeTime += 949 stats->totalDeferredImageDecodeTime +=
890 base::TimeTicks::Now() - decode_begin_time; 950 base::TimeTicks::Now() - decode_begin_time;
891 } 951 }
892 } 952 }
893 953
894 } // namespace cc 954 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698