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

Side by Side Diff: cc/tile_manager.cc

Issue 12095053: cc: Avoid expensive RenderingStats collection. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: use WebSettings 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 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
111 } 111 }
112 112
113 ManagedTileState::~ManagedTileState() { 113 ManagedTileState::~ManagedTileState() {
114 DCHECK(!resource); 114 DCHECK(!resource);
115 DCHECK(!resource_is_being_initialized); 115 DCHECK(!resource_is_being_initialized);
116 } 116 }
117 117
118 TileManager::TileManager( 118 TileManager::TileManager(
119 TileManagerClient* client, 119 TileManagerClient* client,
120 ResourceProvider* resource_provider, 120 ResourceProvider* resource_provider,
121 size_t num_raster_threads) 121 size_t num_raster_threads,
122 bool record_rendering_stats)
122 : client_(client), 123 : client_(client),
123 resource_pool_(ResourcePool::Create(resource_provider)), 124 resource_pool_(ResourcePool::Create(resource_provider)),
124 raster_worker_pool_(RasterWorkerPool::Create(num_raster_threads)), 125 raster_worker_pool_(RasterWorkerPool::Create(
126 num_raster_threads, record_rendering_stats)),
125 manage_tiles_pending_(false), 127 manage_tiles_pending_(false),
126 manage_tiles_call_count_(0), 128 manage_tiles_call_count_(0),
127 bytes_pending_set_pixels_(0), 129 bytes_pending_set_pixels_(0),
128 ever_exceeded_memory_budget_(false) { 130 ever_exceeded_memory_budget_(false),
131 record_rendering_stats_(record_rendering_stats) {
129 bool worker_pool_is_running = raster_worker_pool_->Start(); 132 bool worker_pool_is_running = raster_worker_pool_->Start();
130 CHECK(worker_pool_is_running); 133 CHECK(worker_pool_is_running);
131 134
132 for (int i = 0; i < NUM_STATES; ++i) { 135 for (int i = 0; i < NUM_STATES; ++i) {
133 for (int j = 0; j < NUM_TREES; ++j) { 136 for (int j = 0; j < NUM_TREES; ++j) {
134 for (int k = 0; k < NUM_BINS; ++k) 137 for (int k = 0; k < NUM_BINS; ++k)
135 raster_state_count_[i][j][k] = 0; 138 raster_state_count_[i][j][k] = 0;
136 } 139 }
137 } 140 }
138 } 141 }
(...skipping 259 matching lines...) Expand 10 before | Expand all | Expand 10 after
398 GetMemoryStats(&memoryRequiredBytes, 401 GetMemoryStats(&memoryRequiredBytes,
399 &memoryNiceToHaveBytes, 402 &memoryNiceToHaveBytes,
400 &memoryUsedBytes); 403 &memoryUsedBytes);
401 requirements->SetInteger("memory_required_bytes", memoryRequiredBytes); 404 requirements->SetInteger("memory_required_bytes", memoryRequiredBytes);
402 requirements->SetInteger("memory_nice_to_have_bytes", memoryNiceToHaveBytes); 405 requirements->SetInteger("memory_nice_to_have_bytes", memoryNiceToHaveBytes);
403 requirements->SetInteger("memory_used_bytes", memoryUsedBytes); 406 requirements->SetInteger("memory_used_bytes", memoryUsedBytes);
404 return requirements.PassAs<base::Value>(); 407 return requirements.PassAs<base::Value>();
405 } 408 }
406 409
407 void TileManager::GetRenderingStats(RenderingStats* stats) { 410 void TileManager::GetRenderingStats(RenderingStats* stats) {
411 DCHECK(record_rendering_stats_);
408 raster_worker_pool_->GetRenderingStats(stats); 412 raster_worker_pool_->GetRenderingStats(stats);
409 stats->totalDeferredImageCacheHitCount = 413 stats->totalDeferredImageCacheHitCount =
410 rendering_stats_.totalDeferredImageCacheHitCount; 414 rendering_stats_.totalDeferredImageCacheHitCount;
411 stats->totalImageGatheringCount = rendering_stats_.totalImageGatheringCount; 415 stats->totalImageGatheringCount = rendering_stats_.totalImageGatheringCount;
412 stats->totalImageGatheringTime = 416 stats->totalImageGatheringTime =
413 rendering_stats_.totalImageGatheringTime; 417 rendering_stats_.totalImageGatheringTime;
414 } 418 }
415 419
416 bool TileManager::HasPendingWorkScheduled(WhichTree tree) const { 420 bool TileManager::HasPendingWorkScheduled(WhichTree tree) const {
417 // Always true when ManageTiles() call is pending. 421 // Always true when ManageTiles() call is pending.
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after
562 DispatchOneRasterTask(tile); 566 DispatchOneRasterTask(tile);
563 } 567 }
564 tiles_that_need_to_be_rasterized_.pop_back(); 568 tiles_that_need_to_be_rasterized_.pop_back();
565 } 569 }
566 } 570 }
567 571
568 void TileManager::GatherPixelRefsForTile(Tile* tile) { 572 void TileManager::GatherPixelRefsForTile(Tile* tile) {
569 TRACE_EVENT0("cc", "TileManager::GatherPixelRefsForTile"); 573 TRACE_EVENT0("cc", "TileManager::GatherPixelRefsForTile");
570 ManagedTileState& managed_state = tile->managed_state(); 574 ManagedTileState& managed_state = tile->managed_state();
571 if (managed_state.need_to_gather_pixel_refs) { 575 if (managed_state.need_to_gather_pixel_refs) {
572 base::TimeTicks gather_begin_time = base::TimeTicks::Now(); 576 base::TimeTicks gather_begin_time;
577 if (record_rendering_stats_)
578 gather_begin_time = base::TimeTicks::Now();
573 tile->picture_pile()->GatherPixelRefs( 579 tile->picture_pile()->GatherPixelRefs(
574 tile->content_rect_, 580 tile->content_rect_,
575 tile->contents_scale_, 581 tile->contents_scale_,
576 managed_state.pending_pixel_refs); 582 managed_state.pending_pixel_refs);
577 rendering_stats_.totalImageGatheringCount++;
578 rendering_stats_.totalImageGatheringTime +=
579 base::TimeTicks::Now() - gather_begin_time;
580 managed_state.need_to_gather_pixel_refs = false; 583 managed_state.need_to_gather_pixel_refs = false;
584 if (record_rendering_stats_) {
585 rendering_stats_.totalImageGatheringCount++;
586 rendering_stats_.totalImageGatheringTime +=
587 base::TimeTicks::Now() - gather_begin_time;
588 }
581 } 589 }
582 } 590 }
583 591
584 void TileManager::DispatchImageDecodeTasksForTile(Tile* tile) { 592 void TileManager::DispatchImageDecodeTasksForTile(Tile* tile) {
585 GatherPixelRefsForTile(tile); 593 GatherPixelRefsForTile(tile);
586 std::list<skia::LazyPixelRef*>& pending_pixel_refs = 594 std::list<skia::LazyPixelRef*>& pending_pixel_refs =
587 tile->managed_state().pending_pixel_refs; 595 tile->managed_state().pending_pixel_refs;
588 std::list<skia::LazyPixelRef*>::iterator it = pending_pixel_refs.begin(); 596 std::list<skia::LazyPixelRef*>::iterator it = pending_pixel_refs.begin();
589 while (it != pending_pixel_refs.end()) { 597 while (it != pending_pixel_refs.end()) {
590 if (pending_decode_tasks_.end() != pending_decode_tasks_.find( 598 if (pending_decode_tasks_.end() != pending_decode_tasks_.find(
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after
750 --raster_state_count_[mts.raster_state][tree][mts.tree_bin[tree]]; 758 --raster_state_count_[mts.raster_state][tree][mts.tree_bin[tree]];
751 DCHECK_GE(raster_state_count_[mts.raster_state][tree][mts.tree_bin[tree]], 0); 759 DCHECK_GE(raster_state_count_[mts.raster_state][tree][mts.tree_bin[tree]], 0);
752 760
753 // Increment count for new bin. 761 // Increment count for new bin.
754 ++raster_state_count_[mts.raster_state][tree][bin]; 762 ++raster_state_count_[mts.raster_state][tree][bin];
755 763
756 mts.tree_bin[tree] = bin; 764 mts.tree_bin[tree] = bin;
757 } 765 }
758 766
759 } // namespace cc 767 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698