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/resources/tile_manager.h" | 5 #include "cc/resources/tile_manager.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <string> | 8 #include <string> |
9 | 9 |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
156 bool prediction_benchmarking, | 156 bool prediction_benchmarking, |
157 RenderingStatsInstrumentation* rendering_stats_instrumentation) | 157 RenderingStatsInstrumentation* rendering_stats_instrumentation) |
158 : client_(client), | 158 : client_(client), |
159 resource_pool_(ResourcePool::Create(resource_provider)), | 159 resource_pool_(ResourcePool::Create(resource_provider)), |
160 raster_worker_pool_(RasterWorkerPool::Create(this, num_raster_threads)), | 160 raster_worker_pool_(RasterWorkerPool::Create(this, num_raster_threads)), |
161 manage_tiles_pending_(false), | 161 manage_tiles_pending_(false), |
162 manage_tiles_call_count_(0), | 162 manage_tiles_call_count_(0), |
163 bytes_pending_upload_(0), | 163 bytes_pending_upload_(0), |
164 has_performed_uploads_since_last_flush_(false), | 164 has_performed_uploads_since_last_flush_(false), |
165 ever_exceeded_memory_budget_(false), | 165 ever_exceeded_memory_budget_(false), |
| 166 rendering_stats_instrumentation_(rendering_stats_instrumentation), |
166 use_cheapness_estimator_(use_cheapness_estimator), | 167 use_cheapness_estimator_(use_cheapness_estimator), |
167 use_color_estimator_(use_color_estimator), | 168 use_color_estimator_(use_color_estimator), |
168 prediction_benchmarking_(prediction_benchmarking), | 169 prediction_benchmarking_(prediction_benchmarking), |
169 pending_tasks_(0), | 170 pending_tasks_(0), |
170 max_pending_tasks_(kMaxNumPendingTasksPerThread * num_raster_threads), | 171 max_pending_tasks_(kMaxNumPendingTasksPerThread * num_raster_threads) { |
171 rendering_stats_instrumentation_(rendering_stats_instrumentation) { | |
172 for (int i = 0; i < NUM_STATES; ++i) { | 172 for (int i = 0; i < NUM_STATES; ++i) { |
173 for (int j = 0; j < NUM_TREES; ++j) { | 173 for (int j = 0; j < NUM_TREES; ++j) { |
174 for (int k = 0; k < NUM_BINS; ++k) | 174 for (int k = 0; k < NUM_BINS; ++k) |
175 raster_state_count_[i][j][k] = 0; | 175 raster_state_count_[i][j][k] = 0; |
176 } | 176 } |
177 } | 177 } |
178 } | 178 } |
179 | 179 |
180 TileManager::~TileManager() { | 180 TileManager::~TileManager() { |
181 // Reset global state and manage. This should cause | 181 // Reset global state and manage. This should cause |
182 // our memory usage to drop to zero. | 182 // our memory usage to drop to zero. |
183 global_state_ = GlobalStateThatImpactsTilePriority(); | 183 global_state_ = GlobalStateThatImpactsTilePriority(); |
184 AssignGpuMemoryToTiles(); | 184 AssignGpuMemoryToTiles(); |
185 // This should finish all pending tasks and release any uninitialized | 185 // This should finish all pending tasks and release any uninitialized |
186 // resources. | 186 // resources. |
187 raster_worker_pool_.reset(); | 187 raster_worker_pool_.reset(); |
188 AbortPendingTileUploads(); | 188 AbortPendingTileUploads(); |
189 DCHECK_EQ(tiles_with_pending_upload_.size(), 0); | 189 DCHECK(tiles_with_pending_upload_.empty()); |
190 DCHECK_EQ(all_tiles_.size(), 0); | 190 DCHECK(all_tiles_.empty()); |
191 DCHECK_EQ(live_or_allocated_tiles_.size(), 0); | 191 DCHECK(live_or_allocated_tiles_.empty()); |
192 } | 192 } |
193 | 193 |
194 void TileManager::SetGlobalState( | 194 void TileManager::SetGlobalState( |
195 const GlobalStateThatImpactsTilePriority& global_state) { | 195 const GlobalStateThatImpactsTilePriority& global_state) { |
196 global_state_ = global_state; | 196 global_state_ = global_state; |
197 resource_pool_->SetMaxMemoryUsageBytes(global_state_.memory_limit_in_bytes); | 197 resource_pool_->SetMaxMemoryUsageBytes(global_state_.memory_limit_in_bytes); |
198 ScheduleManageTiles(); | 198 ScheduleManageTiles(); |
199 UpdateCheapTasksTimeLimit(); | 199 UpdateCheapTasksTimeLimit(); |
200 } | 200 } |
201 | 201 |
(...skipping 801 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1003 10); | 1003 10); |
1004 | 1004 |
1005 if (metadata.prediction_benchmarking) { | 1005 if (metadata.prediction_benchmarking) { |
1006 PicturePileImpl::Analysis analysis; | 1006 PicturePileImpl::Analysis analysis; |
1007 picture_pile->AnalyzeInRect(rect, contents_scale, &analysis); | 1007 picture_pile->AnalyzeInRect(rect, contents_scale, &analysis); |
1008 bool is_predicted_cheap = analysis.is_cheap_to_raster; | 1008 bool is_predicted_cheap = analysis.is_cheap_to_raster; |
1009 bool is_actually_cheap = duration.InMillisecondsF() <= 1.0f; | 1009 bool is_actually_cheap = duration.InMillisecondsF() <= 1.0f; |
1010 RecordCheapnessPredictorResults(is_predicted_cheap, is_actually_cheap); | 1010 RecordCheapnessPredictorResults(is_predicted_cheap, is_actually_cheap); |
1011 | 1011 |
1012 DCHECK_EQ(bitmap.rowBytes(), | 1012 DCHECK_EQ(bitmap.rowBytes(), |
1013 bitmap.width() * bitmap.bytesPerPixel()); | 1013 static_cast<size_t>(bitmap.width() * bitmap.bytesPerPixel())); |
1014 | 1014 |
1015 RecordSolidColorPredictorResults( | 1015 RecordSolidColorPredictorResults( |
1016 reinterpret_cast<SkColor*>(bitmap.getPixels()), | 1016 reinterpret_cast<SkColor*>(bitmap.getPixels()), |
1017 bitmap.getSize() / bitmap.bytesPerPixel(), | 1017 bitmap.getSize() / bitmap.bytesPerPixel(), |
1018 analysis.is_solid_color, | 1018 analysis.is_solid_color, |
1019 analysis.solid_color, | 1019 analysis.solid_color, |
1020 analysis.is_transparent); | 1020 analysis.is_transparent); |
1021 } | 1021 } |
1022 } | 1022 } |
1023 } | 1023 } |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1091 skia::LazyPixelRef* pixel_ref, | 1091 skia::LazyPixelRef* pixel_ref, |
1092 RenderingStatsInstrumentation* stats_instrumentation) { | 1092 RenderingStatsInstrumentation* stats_instrumentation) { |
1093 TRACE_EVENT0("cc", "TileManager::RunImageDecodeTask"); | 1093 TRACE_EVENT0("cc", "TileManager::RunImageDecodeTask"); |
1094 base::TimeTicks start_time = stats_instrumentation->StartRecording(); | 1094 base::TimeTicks start_time = stats_instrumentation->StartRecording(); |
1095 pixel_ref->Decode(); | 1095 pixel_ref->Decode(); |
1096 base::TimeDelta duration = stats_instrumentation->EndRecording(start_time); | 1096 base::TimeDelta duration = stats_instrumentation->EndRecording(start_time); |
1097 stats_instrumentation->AddDeferredImageDecode(duration); | 1097 stats_instrumentation->AddDeferredImageDecode(duration); |
1098 } | 1098 } |
1099 | 1099 |
1100 } // namespace cc | 1100 } // namespace cc |
OLD | NEW |