Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/raster_worker_pool.h" | 5 #include "cc/resources/raster_worker_pool.h" |
| 6 | 6 |
| 7 #include "base/json/json_writer.h" | 7 #include "base/json/json_writer.h" |
| 8 #include "base/metrics/histogram.h" | 8 #include "base/metrics/histogram.h" |
| 9 #include "base/values.h" | 9 #include "base/values.h" |
| 10 #include "cc/debug/devtools_instrumentation.h" | 10 #include "cc/debug/devtools_instrumentation.h" |
| (...skipping 17 matching lines...) Expand all Loading... | |
| 28 return true; | 28 return true; |
| 29 } | 29 } |
| 30 }; | 30 }; |
| 31 | 31 |
| 32 class RasterWorkerPoolTaskImpl : public internal::RasterWorkerPoolTask { | 32 class RasterWorkerPoolTaskImpl : public internal::RasterWorkerPoolTask { |
| 33 public: | 33 public: |
| 34 RasterWorkerPoolTaskImpl(const Resource* resource, | 34 RasterWorkerPoolTaskImpl(const Resource* resource, |
| 35 PicturePileImpl* picture_pile, | 35 PicturePileImpl* picture_pile, |
| 36 gfx::Rect content_rect, | 36 gfx::Rect content_rect, |
| 37 float contents_scale, | 37 float contents_scale, |
| 38 RasterMode raster_mode, | 38 RasterMode raster_mode, |
|
reveman
2013/06/30 05:47:50
how about we just pass a SkDrawFilter* instead of
vmpstr
2013/07/01 18:41:37
As it stands right now, TileManager isn't even awa
| |
| 39 bool use_color_estimator, | 39 bool use_color_estimator, |
|
reveman
2013/06/30 05:47:50
this is the same for every task. how about we move
vmpstr
2013/07/01 18:41:37
This will be removed in https://codereview.chromiu
| |
| 40 const RasterTaskMetadata& metadata, | 40 const RasterTaskMetadata& metadata, |
| 41 RenderingStatsInstrumentation* rendering_stats, | 41 RenderingStatsInstrumentation* rendering_stats, |
| 42 const RasterWorkerPool::RasterTask::Reply& reply, | 42 const RasterWorkerPool::RasterTask::Reply& reply, |
| 43 TaskVector* dependencies) | 43 TaskVector* dependencies) |
| 44 : internal::RasterWorkerPoolTask(resource, dependencies), | 44 : internal::RasterWorkerPoolTask(resource, dependencies), |
| 45 picture_pile_(picture_pile), | 45 picture_pile_(picture_pile), |
| 46 content_rect_(content_rect), | 46 content_rect_(content_rect), |
| 47 contents_scale_(contents_scale), | 47 contents_scale_(contents_scale), |
| 48 raster_mode_(raster_mode), | 48 raster_mode_(raster_mode), |
| 49 use_color_estimator_(use_color_estimator), | 49 use_color_estimator_(use_color_estimator), |
| (...skipping 10 matching lines...) Expand all Loading... | |
| 60 DCHECK(picture_pile_.get()); | 60 DCHECK(picture_pile_.get()); |
| 61 DCHECK(rendering_stats_); | 61 DCHECK(rendering_stats_); |
| 62 | 62 |
| 63 PicturePileImpl* picture_clone = | 63 PicturePileImpl* picture_clone = |
| 64 picture_pile_->GetCloneForDrawingOnThread(thread_index); | 64 picture_pile_->GetCloneForDrawingOnThread(thread_index); |
| 65 | 65 |
| 66 DCHECK(picture_clone); | 66 DCHECK(picture_clone); |
| 67 | 67 |
| 68 base::TimeTicks start_time = rendering_stats_->StartRecording(); | 68 base::TimeTicks start_time = rendering_stats_->StartRecording(); |
| 69 picture_clone->AnalyzeInRect(content_rect_, contents_scale_, &analysis_); | 69 picture_clone->AnalyzeInRect(content_rect_, contents_scale_, &analysis_); |
| 70 base::TimeDelta duration = rendering_stats_->EndRecording(start_time); | 70 base::TimeDelta duration = rendering_stats_->EndRecording(start_time); |
|
reveman
2013/06/30 05:47:50
can we make this consistent with raster and add Pi
vmpstr
2013/07/01 18:41:37
This is RenderingStatsInstrumentation (which is a
| |
| 71 | 71 |
| 72 // Record the solid color prediction. | 72 // Record the solid color prediction. |
| 73 UMA_HISTOGRAM_BOOLEAN("Renderer4.SolidColorTilesAnalyzed", | 73 UMA_HISTOGRAM_BOOLEAN("Renderer4.SolidColorTilesAnalyzed", |
| 74 analysis_.is_solid_color); | 74 analysis_.is_solid_color); |
|
reveman
2013/06/30 05:47:50
maybe move this to TileManager
vmpstr
2013/07/01 18:41:37
Removed in a different CL.
| |
| 75 rendering_stats_->AddTileAnalysisResult(duration, | 75 rendering_stats_->AddTileAnalysisResult(duration, |
| 76 analysis_.is_solid_color); | 76 analysis_.is_solid_color); |
|
reveman
2013/06/30 05:47:50
btw, s/AddTileAnalysisResult/AddAnalysisResult/ or
vmpstr
2013/07/01 18:41:37
Done.
| |
| 77 | 77 |
| 78 // Clear the flag if we're not using the estimator. | 78 // Clear the flag if we're not using the estimator. |
| 79 analysis_.is_solid_color &= use_color_estimator_; | 79 analysis_.is_solid_color &= use_color_estimator_; |
| 80 } | 80 } |
| 81 | 81 |
| 82 bool RunRasterOnThread(SkDevice* device, unsigned thread_index) { | 82 bool RunRasterOnThread(SkDevice* device, unsigned thread_index) { |
| 83 TRACE_EVENT1( | 83 TRACE_EVENT1( |
| 84 "cc", "RasterWorkerPoolTaskImpl::RunRasterOnThread", | 84 "cc", "RasterWorkerPoolTaskImpl::RunRasterOnThread", |
| 85 "metadata", TracedValue::FromValue(metadata_.AsValue().release())); | 85 "metadata", TracedValue::FromValue(metadata_.AsValue().release())); |
|
reveman
2013/06/30 05:47:50
do we need all that data in this trace event? can
vmpstr
2013/07/01 18:41:37
I think having this information on RunRasterOnThre
| |
| 86 devtools_instrumentation::ScopedLayerTask raster_task( | 86 devtools_instrumentation::ScopedLayerTask raster_task( |
| 87 devtools_instrumentation::kRasterTask, metadata_.layer_id); | 87 devtools_instrumentation::kRasterTask, metadata_.layer_id); |
| 88 | 88 |
| 89 DCHECK(picture_pile_.get()); | 89 DCHECK(picture_pile_.get()); |
| 90 DCHECK(device); | 90 DCHECK(device); |
| 91 | 91 |
| 92 if (analysis_.is_solid_color) | 92 if (analysis_.is_solid_color) |
| 93 return false; | 93 return false; |
| 94 | 94 |
| 95 PicturePileImpl* picture_clone = | 95 PicturePileImpl* picture_clone = |
| (...skipping 12 matching lines...) Expand all Loading... | |
| 108 case HIGH_QUALITY_RASTER_MODE: | 108 case HIGH_QUALITY_RASTER_MODE: |
| 109 break; | 109 break; |
| 110 case NUM_RASTER_MODES: | 110 case NUM_RASTER_MODES: |
| 111 default: | 111 default: |
| 112 NOTREACHED(); | 112 NOTREACHED(); |
| 113 } | 113 } |
| 114 | 114 |
| 115 canvas.setDrawFilter(draw_filter.get()); | 115 canvas.setDrawFilter(draw_filter.get()); |
| 116 | 116 |
| 117 if (rendering_stats_->record_rendering_stats()) { | 117 if (rendering_stats_->record_rendering_stats()) { |
| 118 PicturePileImpl::RasterStats raster_stats; | 118 PicturePileImpl::RasterStats raster_stats; |
|
reveman
2013/06/30 05:47:50
How about we remove |rendering_stats_| and add the
vmpstr
2013/07/01 18:41:37
It only really gets the time it takes to run the f
| |
| 119 picture_clone->RasterToBitmap( | 119 picture_clone->RasterToBitmap( |
| 120 &canvas, content_rect_, contents_scale_, &raster_stats); | 120 &canvas, content_rect_, contents_scale_, &raster_stats); |
| 121 rendering_stats_->AddRaster( | 121 rendering_stats_->AddRaster( |
| 122 raster_stats.total_rasterize_time, | 122 raster_stats.total_rasterize_time, |
| 123 raster_stats.best_rasterize_time, | 123 raster_stats.best_rasterize_time, |
| 124 raster_stats.total_pixels_rasterized, | 124 raster_stats.total_pixels_rasterized, |
| 125 metadata_.is_tile_in_pending_tree_now_bin); | 125 metadata_.is_tile_in_pending_tree_now_bin); |
| 126 | 126 |
| 127 HISTOGRAM_CUSTOM_COUNTS( | 127 HISTOGRAM_CUSTOM_COUNTS( |
| 128 "Renderer4.PictureRasterTimeUS", | 128 "Renderer4.PictureRasterTimeUS", |
| (...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 262 DCHECK(!did_complete_); | 262 DCHECK(!did_complete_); |
| 263 did_complete_ = true; | 263 did_complete_ = true; |
| 264 } | 264 } |
| 265 | 265 |
| 266 bool RasterWorkerPoolTask::HasCompleted() const { | 266 bool RasterWorkerPoolTask::HasCompleted() const { |
| 267 return did_complete_; | 267 return did_complete_; |
| 268 } | 268 } |
| 269 | 269 |
| 270 } // namespace internal | 270 } // namespace internal |
| 271 | 271 |
| 272 scoped_ptr<base::Value> RasterTaskMetadata::AsValue() const { | |
| 273 scoped_ptr<base::DictionaryValue> res(new base::DictionaryValue()); | |
| 274 res->Set("tile_id", TracedValue::CreateIDRef(tile_id).release()); | |
| 275 res->SetBoolean("is_tile_in_pending_tree_now_bin", | |
| 276 is_tile_in_pending_tree_now_bin); | |
| 277 res->Set("resolution", TileResolutionAsValue(tile_resolution).release()); | |
| 278 res->SetInteger("source_frame_number", source_frame_number); | |
| 279 return res.PassAs<base::Value>(); | |
| 280 } | |
| 281 | |
| 282 RasterWorkerPool::Task::Set::Set() { | 272 RasterWorkerPool::Task::Set::Set() { |
| 283 } | 273 } |
| 284 | 274 |
| 285 RasterWorkerPool::Task::Set::~Set() { | 275 RasterWorkerPool::Task::Set::~Set() { |
| 286 } | 276 } |
| 287 | 277 |
| 288 void RasterWorkerPool::Task::Set::Insert(const Task& task) { | 278 void RasterWorkerPool::Task::Set::Insert(const Task& task) { |
| 289 DCHECK(!task.is_null()); | 279 DCHECK(!task.is_null()); |
| 290 tasks_.push_back(task.internal_); | 280 tasks_.push_back(task.internal_); |
| 291 } | 281 } |
| (...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 488 TRACE_EVENT1("cc", "RasterWorkerPool::OnRasterFinished", | 478 TRACE_EVENT1("cc", "RasterWorkerPool::OnRasterFinished", |
| 489 "schedule_raster_tasks_count", schedule_raster_tasks_count); | 479 "schedule_raster_tasks_count", schedule_raster_tasks_count); |
| 490 DCHECK_GE(schedule_raster_tasks_count_, schedule_raster_tasks_count); | 480 DCHECK_GE(schedule_raster_tasks_count_, schedule_raster_tasks_count); |
| 491 // Call OnRasterTasksFinished() when we've finished running all raster | 481 // Call OnRasterTasksFinished() when we've finished running all raster |
| 492 // tasks needed since last time SetRasterTaskGraph() was called. | 482 // tasks needed since last time SetRasterTaskGraph() was called. |
| 493 if (schedule_raster_tasks_count_ == schedule_raster_tasks_count) | 483 if (schedule_raster_tasks_count_ == schedule_raster_tasks_count) |
| 494 OnRasterTasksFinished(); | 484 OnRasterTasksFinished(); |
| 495 } | 485 } |
| 496 | 486 |
| 497 } // namespace cc | 487 } // namespace cc |
| OLD | NEW |