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

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: nits 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
« no previous file with comments | « cc/tile_manager.h ('k') | cc/tiled_layer.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
107 } 107 }
108 108
109 ManagedTileState::~ManagedTileState() { 109 ManagedTileState::~ManagedTileState() {
110 DCHECK(!resource); 110 DCHECK(!resource);
111 DCHECK(!resource_is_being_initialized); 111 DCHECK(!resource_is_being_initialized);
112 } 112 }
113 113
114 TileManager::TileManager( 114 TileManager::TileManager(
115 TileManagerClient* client, 115 TileManagerClient* client,
116 ResourceProvider* resource_provider, 116 ResourceProvider* resource_provider,
117 size_t num_raster_threads) 117 size_t num_raster_threads,
118 bool record_rendering_stats)
118 : client_(client), 119 : client_(client),
119 resource_pool_(ResourcePool::Create(resource_provider)), 120 resource_pool_(ResourcePool::Create(resource_provider)),
120 raster_worker_pool_(RasterWorkerPool::Create(num_raster_threads)), 121 raster_worker_pool_(RasterWorkerPool::Create(num_raster_threads, record_re ndering_stats)),
121 manage_tiles_pending_(false), 122 manage_tiles_pending_(false),
122 manage_tiles_call_count_(0), 123 manage_tiles_call_count_(0),
123 bytes_pending_set_pixels_(0), 124 bytes_pending_set_pixels_(0),
124 ever_exceeded_memory_budget_(false) { 125 ever_exceeded_memory_budget_(false),
126 record_rendering_stats_(record_rendering_stats) {
125 for (int i = 0; i < NUM_STATES; ++i) { 127 for (int i = 0; i < NUM_STATES; ++i) {
126 for (int j = 0; j < NUM_TREES; ++j) { 128 for (int j = 0; j < NUM_TREES; ++j) {
127 for (int k = 0; k < NUM_BINS; ++k) 129 for (int k = 0; k < NUM_BINS; ++k)
128 raster_state_count_[i][j][k] = 0; 130 raster_state_count_[i][j][k] = 0;
129 } 131 }
130 } 132 }
131 } 133 }
132 134
133 TileManager::~TileManager() { 135 TileManager::~TileManager() {
134 // Reset global state and manage. This should cause 136 // Reset global state and manage. This should cause
(...skipping 256 matching lines...) Expand 10 before | Expand all | Expand 10 after
391 GetMemoryStats(&memoryRequiredBytes, 393 GetMemoryStats(&memoryRequiredBytes,
392 &memoryNiceToHaveBytes, 394 &memoryNiceToHaveBytes,
393 &memoryUsedBytes); 395 &memoryUsedBytes);
394 requirements->SetInteger("memory_required_bytes", memoryRequiredBytes); 396 requirements->SetInteger("memory_required_bytes", memoryRequiredBytes);
395 requirements->SetInteger("memory_nice_to_have_bytes", memoryNiceToHaveBytes); 397 requirements->SetInteger("memory_nice_to_have_bytes", memoryNiceToHaveBytes);
396 requirements->SetInteger("memory_used_bytes", memoryUsedBytes); 398 requirements->SetInteger("memory_used_bytes", memoryUsedBytes);
397 return requirements.PassAs<base::Value>(); 399 return requirements.PassAs<base::Value>();
398 } 400 }
399 401
400 void TileManager::GetRenderingStats(RenderingStats* stats) { 402 void TileManager::GetRenderingStats(RenderingStats* stats) {
403 CHECK(record_rendering_stats_);
401 raster_worker_pool_->GetRenderingStats(stats); 404 raster_worker_pool_->GetRenderingStats(stats);
402 stats->totalDeferredImageCacheHitCount = 405 stats->totalDeferredImageCacheHitCount =
403 rendering_stats_.totalDeferredImageCacheHitCount; 406 rendering_stats_.totalDeferredImageCacheHitCount;
404 stats->totalImageGatheringCount = rendering_stats_.totalImageGatheringCount; 407 stats->totalImageGatheringCount = rendering_stats_.totalImageGatheringCount;
405 stats->totalImageGatheringTime = 408 stats->totalImageGatheringTime =
406 rendering_stats_.totalImageGatheringTime; 409 rendering_stats_.totalImageGatheringTime;
407 } 410 }
408 411
409 bool TileManager::HasPendingWorkScheduled(WhichTree tree) const { 412 bool TileManager::HasPendingWorkScheduled(WhichTree tree) const {
410 // Always true when ManageTiles() call is pending. 413 // Always true when ManageTiles() call is pending.
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after
555 DispatchOneRasterTask(tile); 558 DispatchOneRasterTask(tile);
556 } 559 }
557 tiles_that_need_to_be_rasterized_.pop_back(); 560 tiles_that_need_to_be_rasterized_.pop_back();
558 } 561 }
559 } 562 }
560 563
561 void TileManager::GatherPixelRefsForTile(Tile* tile) { 564 void TileManager::GatherPixelRefsForTile(Tile* tile) {
562 TRACE_EVENT0("cc", "TileManager::GatherPixelRefsForTile"); 565 TRACE_EVENT0("cc", "TileManager::GatherPixelRefsForTile");
563 ManagedTileState& managed_state = tile->managed_state(); 566 ManagedTileState& managed_state = tile->managed_state();
564 if (managed_state.need_to_gather_pixel_refs) { 567 if (managed_state.need_to_gather_pixel_refs) {
565 base::TimeTicks gather_begin_time = base::TimeTicks::Now(); 568 base::TimeTicks gather_begin_time;
569 if (record_rendering_stats_)
570 gather_begin_time = base::TimeTicks::Now();
566 tile->picture_pile()->GatherPixelRefs( 571 tile->picture_pile()->GatherPixelRefs(
567 tile->content_rect_, 572 tile->content_rect_,
568 tile->contents_scale_, 573 tile->contents_scale_,
569 managed_state.pending_pixel_refs); 574 managed_state.pending_pixel_refs);
570 rendering_stats_.totalImageGatheringCount++;
571 rendering_stats_.totalImageGatheringTime +=
572 base::TimeTicks::Now() - gather_begin_time;
573 managed_state.need_to_gather_pixel_refs = false; 575 managed_state.need_to_gather_pixel_refs = false;
576 if (record_rendering_stats_) {
577 rendering_stats_.totalImageGatheringCount++;
578 rendering_stats_.totalImageGatheringTime +=
579 base::TimeTicks::Now() - gather_begin_time;
580 }
574 } 581 }
575 } 582 }
576 583
577 void TileManager::DispatchImageDecodeTasksForTile(Tile* tile) { 584 void TileManager::DispatchImageDecodeTasksForTile(Tile* tile) {
578 GatherPixelRefsForTile(tile); 585 GatherPixelRefsForTile(tile);
579 std::list<skia::LazyPixelRef*>& pending_pixel_refs = 586 std::list<skia::LazyPixelRef*>& pending_pixel_refs =
580 tile->managed_state().pending_pixel_refs; 587 tile->managed_state().pending_pixel_refs;
581 std::list<skia::LazyPixelRef*>::iterator it = pending_pixel_refs.begin(); 588 std::list<skia::LazyPixelRef*>::iterator it = pending_pixel_refs.begin();
582 while (it != pending_pixel_refs.end()) { 589 while (it != pending_pixel_refs.end()) {
583 if (pending_decode_tasks_.end() != pending_decode_tasks_.find( 590 if (pending_decode_tasks_.end() != pending_decode_tasks_.find(
(...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after
765 bitmap.setPixels(buffer); 772 bitmap.setPixels(buffer);
766 SkDevice device(bitmap); 773 SkDevice device(bitmap);
767 SkCanvas canvas(&device); 774 SkCanvas canvas(&device);
768 picture_pile->Raster(&canvas, rect, contents_scale, stats); 775 picture_pile->Raster(&canvas, rect, contents_scale, stats);
769 } 776 }
770 777
771 // static 778 // static
772 void TileManager::RunImageDecodeTask(skia::LazyPixelRef* pixel_ref, 779 void TileManager::RunImageDecodeTask(skia::LazyPixelRef* pixel_ref,
773 RenderingStats* stats) { 780 RenderingStats* stats) {
774 TRACE_EVENT0("cc", "TileManager::RunImageDecodeTask"); 781 TRACE_EVENT0("cc", "TileManager::RunImageDecodeTask");
775 base::TimeTicks decode_begin_time = base::TimeTicks::Now(); 782 base::TimeTicks decode_begin_time;
783 if (stats)
784 decode_begin_time = base::TimeTicks::Now();
776 pixel_ref->Decode(); 785 pixel_ref->Decode();
777 stats->totalDeferredImageDecodeCount++; 786 if (stats) {
778 stats->totalDeferredImageDecodeTime += 787 stats->totalDeferredImageDecodeCount++;
779 base::TimeTicks::Now() - decode_begin_time; 788 stats->totalDeferredImageDecodeTime +=
789 base::TimeTicks::Now() - decode_begin_time;
790 }
780 } 791 }
781 792
782 } // namespace cc 793 } // namespace cc
OLDNEW
« no previous file with comments | « cc/tile_manager.h ('k') | cc/tiled_layer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698