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

Side by Side Diff: cc/resources/raster_worker_pool.cc

Issue 18370002: cc: Made use color estimator a const instead of a flag. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 7 years, 5 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
« no previous file with comments | « cc/resources/raster_worker_pool.h ('k') | cc/resources/tile_manager.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 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"
11 #include "cc/debug/traced_value.h" 11 #include "cc/debug/traced_value.h"
12 #include "cc/resources/picture_pile_impl.h" 12 #include "cc/resources/picture_pile_impl.h"
13 #include "skia/ext/lazy_pixel_ref.h" 13 #include "skia/ext/lazy_pixel_ref.h"
14 #include "skia/ext/paint_simplifier.h" 14 #include "skia/ext/paint_simplifier.h"
15 15
16 namespace cc { 16 namespace cc {
17 17
18 namespace { 18 namespace {
19 19
20 // Flag to indicate whether we should try and detect that
21 // a tile is of solid color.
22 const bool kUseColorEstimator = true;
piman 2013/07/01 20:14:45 nit: do we even need this?
vmpstr 2013/07/01 20:22:18 I think it's still useful to disable the color est
23
20 scoped_ptr<base::Value> RasterModeAsValue(RasterMode raster_mode) { 24 scoped_ptr<base::Value> RasterModeAsValue(RasterMode raster_mode) {
21 switch (raster_mode) { 25 switch (raster_mode) {
22 case HIGH_QUALITY_NO_LCD_RASTER_MODE: 26 case HIGH_QUALITY_NO_LCD_RASTER_MODE:
23 return scoped_ptr<base::Value>( 27 return scoped_ptr<base::Value>(
24 base::Value::CreateStringValue("HIGH_QUALITY_NO_LCD_RASTER_MODE")); 28 base::Value::CreateStringValue("HIGH_QUALITY_NO_LCD_RASTER_MODE"));
25 case HIGH_QUALITY_RASTER_MODE: 29 case HIGH_QUALITY_RASTER_MODE:
26 return scoped_ptr<base::Value>( 30 return scoped_ptr<base::Value>(
27 base::Value::CreateStringValue("HIGH_QUALITY_RASTER_MODE")); 31 base::Value::CreateStringValue("HIGH_QUALITY_RASTER_MODE"));
28 case LOW_QUALITY_RASTER_MODE: 32 case LOW_QUALITY_RASTER_MODE:
29 return scoped_ptr<base::Value>( 33 return scoped_ptr<base::Value>(
(...skipping 18 matching lines...) Expand all
48 } 52 }
49 }; 53 };
50 54
51 class RasterWorkerPoolTaskImpl : public internal::RasterWorkerPoolTask { 55 class RasterWorkerPoolTaskImpl : public internal::RasterWorkerPoolTask {
52 public: 56 public:
53 RasterWorkerPoolTaskImpl(const Resource* resource, 57 RasterWorkerPoolTaskImpl(const Resource* resource,
54 PicturePileImpl* picture_pile, 58 PicturePileImpl* picture_pile,
55 gfx::Rect content_rect, 59 gfx::Rect content_rect,
56 float contents_scale, 60 float contents_scale,
57 RasterMode raster_mode, 61 RasterMode raster_mode,
58 bool use_color_estimator,
59 const RasterTaskMetadata& metadata, 62 const RasterTaskMetadata& metadata,
60 RenderingStatsInstrumentation* rendering_stats, 63 RenderingStatsInstrumentation* rendering_stats,
61 const RasterWorkerPool::RasterTask::Reply& reply, 64 const RasterWorkerPool::RasterTask::Reply& reply,
62 TaskVector* dependencies) 65 TaskVector* dependencies)
63 : internal::RasterWorkerPoolTask(resource, dependencies), 66 : internal::RasterWorkerPoolTask(resource, dependencies),
64 picture_pile_(picture_pile), 67 picture_pile_(picture_pile),
65 content_rect_(content_rect), 68 content_rect_(content_rect),
66 contents_scale_(contents_scale), 69 contents_scale_(contents_scale),
67 raster_mode_(raster_mode), 70 raster_mode_(raster_mode),
68 use_color_estimator_(use_color_estimator),
69 metadata_(metadata), 71 metadata_(metadata),
70 rendering_stats_(rendering_stats), 72 rendering_stats_(rendering_stats),
71 reply_(reply) {} 73 reply_(reply) {}
72 74
73 void RunAnalysisOnThread(unsigned thread_index) { 75 void RunAnalysisOnThread(unsigned thread_index) {
74 TRACE_EVENT1("cc", 76 TRACE_EVENT1("cc",
75 "RasterWorkerPoolTaskImpl::RunAnalysisOnThread", 77 "RasterWorkerPoolTaskImpl::RunAnalysisOnThread",
76 "metadata", 78 "metadata",
77 TracedValue::FromValue(metadata_.AsValue().release())); 79 TracedValue::FromValue(metadata_.AsValue().release()));
78 80
79 DCHECK(picture_pile_.get()); 81 DCHECK(picture_pile_.get());
80 DCHECK(rendering_stats_); 82 DCHECK(rendering_stats_);
81 83
82 PicturePileImpl* picture_clone = 84 PicturePileImpl* picture_clone =
83 picture_pile_->GetCloneForDrawingOnThread(thread_index); 85 picture_pile_->GetCloneForDrawingOnThread(thread_index);
84 86
85 DCHECK(picture_clone); 87 DCHECK(picture_clone);
86 88
87 base::TimeTicks start_time = rendering_stats_->StartRecording(); 89 base::TimeTicks start_time = rendering_stats_->StartRecording();
88 picture_clone->AnalyzeInRect(content_rect_, contents_scale_, &analysis_); 90 picture_clone->AnalyzeInRect(content_rect_, contents_scale_, &analysis_);
89 base::TimeDelta duration = rendering_stats_->EndRecording(start_time); 91 base::TimeDelta duration = rendering_stats_->EndRecording(start_time);
90 92
91 // Record the solid color prediction. 93 // Record the solid color prediction.
92 UMA_HISTOGRAM_BOOLEAN("Renderer4.SolidColorTilesAnalyzed", 94 UMA_HISTOGRAM_BOOLEAN("Renderer4.SolidColorTilesAnalyzed",
93 analysis_.is_solid_color); 95 analysis_.is_solid_color);
94 rendering_stats_->AddTileAnalysisResult(duration, 96 rendering_stats_->AddTileAnalysisResult(duration,
95 analysis_.is_solid_color); 97 analysis_.is_solid_color);
96 98
97 // Clear the flag if we're not using the estimator. 99 // Clear the flag if we're not using the estimator.
98 analysis_.is_solid_color &= use_color_estimator_; 100 analysis_.is_solid_color &= kUseColorEstimator;
99 } 101 }
100 102
101 bool RunRasterOnThread(SkDevice* device, unsigned thread_index) { 103 bool RunRasterOnThread(SkDevice* device, unsigned thread_index) {
102 TRACE_EVENT2( 104 TRACE_EVENT2(
103 "cc", 105 "cc",
104 "RasterWorkerPoolTaskImpl::RunRasterOnThread", 106 "RasterWorkerPoolTaskImpl::RunRasterOnThread",
105 "metadata", 107 "metadata",
106 TracedValue::FromValue(metadata_.AsValue().release()), 108 TracedValue::FromValue(metadata_.AsValue().release()),
107 "raster_mode", 109 "raster_mode",
108 TracedValue::FromValue(RasterModeAsValue(raster_mode_).release())); 110 TracedValue::FromValue(RasterModeAsValue(raster_mode_).release()));
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
173 175
174 protected: 176 protected:
175 virtual ~RasterWorkerPoolTaskImpl() {} 177 virtual ~RasterWorkerPoolTaskImpl() {}
176 178
177 private: 179 private:
178 PicturePileImpl::Analysis analysis_; 180 PicturePileImpl::Analysis analysis_;
179 scoped_refptr<PicturePileImpl> picture_pile_; 181 scoped_refptr<PicturePileImpl> picture_pile_;
180 gfx::Rect content_rect_; 182 gfx::Rect content_rect_;
181 float contents_scale_; 183 float contents_scale_;
182 RasterMode raster_mode_; 184 RasterMode raster_mode_;
183 bool use_color_estimator_;
184 RasterTaskMetadata metadata_; 185 RasterTaskMetadata metadata_;
185 RenderingStatsInstrumentation* rendering_stats_; 186 RenderingStatsInstrumentation* rendering_stats_;
186 const RasterWorkerPool::RasterTask::Reply reply_; 187 const RasterWorkerPool::RasterTask::Reply reply_;
187 188
188 DISALLOW_COPY_AND_ASSIGN(RasterWorkerPoolTaskImpl); 189 DISALLOW_COPY_AND_ASSIGN(RasterWorkerPoolTaskImpl);
189 }; 190 };
190 191
191 class ImageDecodeWorkerPoolTaskImpl : public internal::WorkerPoolTask { 192 class ImageDecodeWorkerPoolTaskImpl : public internal::WorkerPoolTask {
192 public: 193 public:
193 ImageDecodeWorkerPoolTaskImpl(skia::LazyPixelRef* pixel_ref, 194 ImageDecodeWorkerPoolTaskImpl(skia::LazyPixelRef* pixel_ref,
(...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after
412 graph_.set(raster_task, raster_node.Pass()); 413 graph_.set(raster_task, raster_node.Pass());
413 } 414 }
414 415
415 // static 416 // static
416 RasterWorkerPool::RasterTask RasterWorkerPool::CreateRasterTask( 417 RasterWorkerPool::RasterTask RasterWorkerPool::CreateRasterTask(
417 const Resource* resource, 418 const Resource* resource,
418 PicturePileImpl* picture_pile, 419 PicturePileImpl* picture_pile,
419 gfx::Rect content_rect, 420 gfx::Rect content_rect,
420 float contents_scale, 421 float contents_scale,
421 RasterMode raster_mode, 422 RasterMode raster_mode,
422 bool use_color_estimator,
423 const RasterTaskMetadata& metadata, 423 const RasterTaskMetadata& metadata,
424 RenderingStatsInstrumentation* rendering_stats, 424 RenderingStatsInstrumentation* rendering_stats,
425 const RasterTask::Reply& reply, 425 const RasterTask::Reply& reply,
426 Task::Set* dependencies) { 426 Task::Set* dependencies) {
427 return RasterTask(new RasterWorkerPoolTaskImpl(resource, 427 return RasterTask(new RasterWorkerPoolTaskImpl(resource,
428 picture_pile, 428 picture_pile,
429 content_rect, 429 content_rect,
430 contents_scale, 430 contents_scale,
431 raster_mode, 431 raster_mode,
432 use_color_estimator,
433 metadata, 432 metadata,
434 rendering_stats, 433 rendering_stats,
435 reply, 434 reply,
436 &dependencies->tasks_)); 435 &dependencies->tasks_));
437 } 436 }
438 437
439 // static 438 // static
440 RasterWorkerPool::Task RasterWorkerPool::CreateImageDecodeTask( 439 RasterWorkerPool::Task RasterWorkerPool::CreateImageDecodeTask(
441 skia::LazyPixelRef* pixel_ref, 440 skia::LazyPixelRef* pixel_ref,
442 int layer_id, 441 int layer_id,
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
517 TRACE_EVENT1("cc", "RasterWorkerPool::OnRasterFinished", 516 TRACE_EVENT1("cc", "RasterWorkerPool::OnRasterFinished",
518 "schedule_raster_tasks_count", schedule_raster_tasks_count); 517 "schedule_raster_tasks_count", schedule_raster_tasks_count);
519 DCHECK_GE(schedule_raster_tasks_count_, schedule_raster_tasks_count); 518 DCHECK_GE(schedule_raster_tasks_count_, schedule_raster_tasks_count);
520 // Call OnRasterTasksFinished() when we've finished running all raster 519 // Call OnRasterTasksFinished() when we've finished running all raster
521 // tasks needed since last time SetRasterTaskGraph() was called. 520 // tasks needed since last time SetRasterTaskGraph() was called.
522 if (schedule_raster_tasks_count_ == schedule_raster_tasks_count) 521 if (schedule_raster_tasks_count_ == schedule_raster_tasks_count)
523 OnRasterTasksFinished(); 522 OnRasterTasksFinished();
524 } 523 }
525 524
526 } // namespace cc 525 } // namespace cc
OLDNEW
« no previous file with comments | « cc/resources/raster_worker_pool.h ('k') | cc/resources/tile_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698