| OLD | NEW | 
|---|
| 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  Loading... | 
| 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  Loading... | 
| 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  Loading... | 
| 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  Loading... | 
| 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 | 
| OLD | NEW | 
|---|