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

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

Issue 812543002: Update from https://crrev.com/308331 (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 6 years 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/tile_manager.h ('k') | cc/resources/tile_manager_unittest.cc » ('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/resources/tile_manager.h" 5 #include "cc/resources/tile_manager.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <limits> 8 #include <limits>
9 #include <string> 9 #include <string>
10 10
(...skipping 23 matching lines...) Expand all
34 RasterTaskImpl( 34 RasterTaskImpl(
35 const Resource* resource, 35 const Resource* resource,
36 RasterSource* raster_source, 36 RasterSource* raster_source,
37 const gfx::Rect& content_rect, 37 const gfx::Rect& content_rect,
38 float contents_scale, 38 float contents_scale,
39 TileResolution tile_resolution, 39 TileResolution tile_resolution,
40 int layer_id, 40 int layer_id,
41 const void* tile_id, 41 const void* tile_id,
42 int source_frame_number, 42 int source_frame_number,
43 bool analyze_picture, 43 bool analyze_picture,
44 RenderingStatsInstrumentation* rendering_stats,
45 const base::Callback<void(const RasterSource::SolidColorAnalysis&, bool)>& 44 const base::Callback<void(const RasterSource::SolidColorAnalysis&, bool)>&
46 reply, 45 reply,
47 ImageDecodeTask::Vector* dependencies) 46 ImageDecodeTask::Vector* dependencies)
48 : RasterTask(resource, dependencies), 47 : RasterTask(resource, dependencies),
49 raster_source_(raster_source), 48 raster_source_(raster_source),
50 content_rect_(content_rect), 49 content_rect_(content_rect),
51 contents_scale_(contents_scale), 50 contents_scale_(contents_scale),
52 tile_resolution_(tile_resolution), 51 tile_resolution_(tile_resolution),
53 layer_id_(layer_id), 52 layer_id_(layer_id),
54 tile_id_(tile_id), 53 tile_id_(tile_id),
55 source_frame_number_(source_frame_number), 54 source_frame_number_(source_frame_number),
56 analyze_picture_(analyze_picture), 55 analyze_picture_(analyze_picture),
57 rendering_stats_(rendering_stats),
58 reply_(reply) {} 56 reply_(reply) {}
59 57
60 // Overridden from Task: 58 // Overridden from Task:
61 void RunOnWorkerThread() override { 59 void RunOnWorkerThread() override {
62 TRACE_EVENT0("cc", "RasterizerTaskImpl::RunOnWorkerThread"); 60 TRACE_EVENT0("cc", "RasterizerTaskImpl::RunOnWorkerThread");
63 61
64 DCHECK(raster_source_.get()); 62 DCHECK(raster_source_.get());
65 DCHECK(raster_buffer_); 63 DCHECK(raster_buffer_);
66 64
67 if (analyze_picture_) { 65 if (analyze_picture_) {
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
121 119
122 RasterSource::SolidColorAnalysis analysis_; 120 RasterSource::SolidColorAnalysis analysis_;
123 scoped_refptr<RasterSource> raster_source_; 121 scoped_refptr<RasterSource> raster_source_;
124 gfx::Rect content_rect_; 122 gfx::Rect content_rect_;
125 float contents_scale_; 123 float contents_scale_;
126 TileResolution tile_resolution_; 124 TileResolution tile_resolution_;
127 int layer_id_; 125 int layer_id_;
128 const void* tile_id_; 126 const void* tile_id_;
129 int source_frame_number_; 127 int source_frame_number_;
130 bool analyze_picture_; 128 bool analyze_picture_;
131 RenderingStatsInstrumentation* rendering_stats_;
132 const base::Callback<void(const RasterSource::SolidColorAnalysis&, bool)> 129 const base::Callback<void(const RasterSource::SolidColorAnalysis&, bool)>
133 reply_; 130 reply_;
134 scoped_ptr<RasterBuffer> raster_buffer_; 131 scoped_ptr<RasterBuffer> raster_buffer_;
135 132
136 DISALLOW_COPY_AND_ASSIGN(RasterTaskImpl); 133 DISALLOW_COPY_AND_ASSIGN(RasterTaskImpl);
137 }; 134 };
138 135
139 class ImageDecodeTaskImpl : public ImageDecodeTask { 136 class ImageDecodeTaskImpl : public ImageDecodeTask {
140 public: 137 public:
141 ImageDecodeTaskImpl(SkPixelRef* pixel_ref, 138 ImageDecodeTaskImpl(SkPixelRef* pixel_ref,
142 int layer_id, 139 int layer_id,
143 RenderingStatsInstrumentation* rendering_stats,
144 const base::Callback<void(bool was_canceled)>& reply) 140 const base::Callback<void(bool was_canceled)>& reply)
145 : pixel_ref_(skia::SharePtr(pixel_ref)), 141 : pixel_ref_(skia::SharePtr(pixel_ref)),
146 layer_id_(layer_id), 142 layer_id_(layer_id),
147 rendering_stats_(rendering_stats),
148 reply_(reply) {} 143 reply_(reply) {}
149 144
150 // Overridden from Task: 145 // Overridden from Task:
151 void RunOnWorkerThread() override { 146 void RunOnWorkerThread() override {
152 TRACE_EVENT0("cc", "ImageDecodeTaskImpl::RunOnWorkerThread"); 147 TRACE_EVENT0("cc", "ImageDecodeTaskImpl::RunOnWorkerThread");
153 148
154 devtools_instrumentation::ScopedImageDecodeTask image_decode_task( 149 devtools_instrumentation::ScopedImageDecodeTask image_decode_task(
155 pixel_ref_.get()); 150 pixel_ref_.get());
156 // This will cause the image referred to by pixel ref to be decoded. 151 // This will cause the image referred to by pixel ref to be decoded.
157 pixel_ref_->lockPixels(); 152 pixel_ref_->lockPixels();
158 pixel_ref_->unlockPixels(); 153 pixel_ref_->unlockPixels();
159 } 154 }
160 155
161 // Overridden from TileTask: 156 // Overridden from TileTask:
162 void ScheduleOnOriginThread(TileTaskClient* client) override {} 157 void ScheduleOnOriginThread(TileTaskClient* client) override {}
163 void CompleteOnOriginThread(TileTaskClient* client) override {} 158 void CompleteOnOriginThread(TileTaskClient* client) override {}
164 void RunReplyOnOriginThread() override { reply_.Run(!HasFinishedRunning()); } 159 void RunReplyOnOriginThread() override { reply_.Run(!HasFinishedRunning()); }
165 160
166 protected: 161 protected:
167 ~ImageDecodeTaskImpl() override {} 162 ~ImageDecodeTaskImpl() override {}
168 163
169 private: 164 private:
170 skia::RefPtr<SkPixelRef> pixel_ref_; 165 skia::RefPtr<SkPixelRef> pixel_ref_;
171 int layer_id_; 166 int layer_id_;
172 RenderingStatsInstrumentation* rendering_stats_;
173 const base::Callback<void(bool was_canceled)> reply_; 167 const base::Callback<void(bool was_canceled)> reply_;
174 168
175 DISALLOW_COPY_AND_ASSIGN(ImageDecodeTaskImpl); 169 DISALLOW_COPY_AND_ASSIGN(ImageDecodeTaskImpl);
176 }; 170 };
177 171
178 const char* TaskSetName(TaskSet task_set) { 172 const char* TaskSetName(TaskSet task_set) {
179 switch (task_set) { 173 switch (task_set) {
180 case TileManager::ALL: 174 case TileManager::ALL:
181 return "ALL"; 175 return "ALL";
182 case TileManager::REQUIRED_FOR_ACTIVATION: 176 case TileManager::REQUIRED_FOR_ACTIVATION:
(...skipping 19 matching lines...) Expand all
202 state->SetInteger("canceled_count", stats.canceled_count); 196 state->SetInteger("canceled_count", stats.canceled_count);
203 return state; 197 return state;
204 } 198 }
205 199
206 // static 200 // static
207 scoped_ptr<TileManager> TileManager::Create( 201 scoped_ptr<TileManager> TileManager::Create(
208 TileManagerClient* client, 202 TileManagerClient* client,
209 base::SequencedTaskRunner* task_runner, 203 base::SequencedTaskRunner* task_runner,
210 ResourcePool* resource_pool, 204 ResourcePool* resource_pool,
211 TileTaskRunner* tile_task_runner, 205 TileTaskRunner* tile_task_runner,
212 RenderingStatsInstrumentation* rendering_stats_instrumentation,
213 size_t scheduled_raster_task_limit) { 206 size_t scheduled_raster_task_limit) {
214 return make_scoped_ptr(new TileManager( 207 return make_scoped_ptr(new TileManager(client, task_runner, resource_pool,
215 client, task_runner, resource_pool, tile_task_runner, 208 tile_task_runner,
216 rendering_stats_instrumentation, scheduled_raster_task_limit)); 209 scheduled_raster_task_limit));
217 } 210 }
218 211
219 TileManager::TileManager( 212 TileManager::TileManager(
220 TileManagerClient* client, 213 TileManagerClient* client,
221 const scoped_refptr<base::SequencedTaskRunner>& task_runner, 214 const scoped_refptr<base::SequencedTaskRunner>& task_runner,
222 ResourcePool* resource_pool, 215 ResourcePool* resource_pool,
223 TileTaskRunner* tile_task_runner, 216 TileTaskRunner* tile_task_runner,
224 RenderingStatsInstrumentation* rendering_stats_instrumentation,
225 size_t scheduled_raster_task_limit) 217 size_t scheduled_raster_task_limit)
226 : client_(client), 218 : client_(client),
227 task_runner_(task_runner), 219 task_runner_(task_runner),
228 resource_pool_(resource_pool), 220 resource_pool_(resource_pool),
229 tile_task_runner_(tile_task_runner), 221 tile_task_runner_(tile_task_runner),
230 scheduled_raster_task_limit_(scheduled_raster_task_limit), 222 scheduled_raster_task_limit_(scheduled_raster_task_limit),
231 all_tiles_that_need_to_be_rasterized_are_scheduled_(true), 223 all_tiles_that_need_to_be_rasterized_are_scheduled_(true),
232 rendering_stats_instrumentation_(rendering_stats_instrumentation),
233 did_check_for_completed_tasks_since_last_schedule_tasks_(true), 224 did_check_for_completed_tasks_since_last_schedule_tasks_(true),
234 did_oom_on_last_assign_(false), 225 did_oom_on_last_assign_(false),
235 ready_to_activate_check_notifier_( 226 ready_to_activate_check_notifier_(
236 task_runner_.get(), 227 task_runner_.get(),
237 base::Bind(&TileManager::CheckIfReadyToActivate, 228 base::Bind(&TileManager::CheckIfReadyToActivate,
238 base::Unretained(this))), 229 base::Unretained(this))),
239 ready_to_draw_check_notifier_( 230 ready_to_draw_check_notifier_(
240 task_runner_.get(), 231 task_runner_.get(),
241 base::Bind(&TileManager::CheckIfReadyToDraw, base::Unretained(this))), 232 base::Bind(&TileManager::CheckIfReadyToDraw, base::Unretained(this))),
242 did_notify_ready_to_activate_(false), 233 did_notify_ready_to_activate_(false),
(...skipping 469 matching lines...) Expand 10 before | Expand all | Expand 10 after
712 703
713 did_check_for_completed_tasks_since_last_schedule_tasks_ = false; 704 did_check_for_completed_tasks_since_last_schedule_tasks_ = false;
714 } 705 }
715 706
716 scoped_refptr<ImageDecodeTask> TileManager::CreateImageDecodeTask( 707 scoped_refptr<ImageDecodeTask> TileManager::CreateImageDecodeTask(
717 Tile* tile, 708 Tile* tile,
718 SkPixelRef* pixel_ref) { 709 SkPixelRef* pixel_ref) {
719 return make_scoped_refptr(new ImageDecodeTaskImpl( 710 return make_scoped_refptr(new ImageDecodeTaskImpl(
720 pixel_ref, 711 pixel_ref,
721 tile->layer_id(), 712 tile->layer_id(),
722 rendering_stats_instrumentation_,
723 base::Bind(&TileManager::OnImageDecodeTaskCompleted, 713 base::Bind(&TileManager::OnImageDecodeTaskCompleted,
724 base::Unretained(this), 714 base::Unretained(this),
725 tile->layer_id(), 715 tile->layer_id(),
726 base::Unretained(pixel_ref)))); 716 base::Unretained(pixel_ref))));
727 } 717 }
728 718
729 scoped_refptr<RasterTask> TileManager::CreateRasterTask(Tile* tile) { 719 scoped_refptr<RasterTask> TileManager::CreateRasterTask(Tile* tile) {
730 ManagedTileState& mts = tile->managed_state(); 720 ManagedTileState& mts = tile->managed_state();
731 721
732 scoped_ptr<ScopedResource> resource = 722 scoped_ptr<ScopedResource> resource =
(...skipping 26 matching lines...) Expand all
759 return make_scoped_refptr( 749 return make_scoped_refptr(
760 new RasterTaskImpl(const_resource, 750 new RasterTaskImpl(const_resource,
761 tile->raster_source(), 751 tile->raster_source(),
762 tile->content_rect(), 752 tile->content_rect(),
763 tile->contents_scale(), 753 tile->contents_scale(),
764 mts.resolution, 754 mts.resolution,
765 tile->layer_id(), 755 tile->layer_id(),
766 static_cast<const void*>(tile), 756 static_cast<const void*>(tile),
767 tile->source_frame_number(), 757 tile->source_frame_number(),
768 tile->use_picture_analysis(), 758 tile->use_picture_analysis(),
769 rendering_stats_instrumentation_,
770 base::Bind(&TileManager::OnRasterTaskCompleted, 759 base::Bind(&TileManager::OnRasterTaskCompleted,
771 base::Unretained(this), 760 base::Unretained(this),
772 tile->id(), 761 tile->id(),
773 base::Passed(&resource)), 762 base::Passed(&resource)),
774 &decode_tasks)); 763 &decode_tasks));
775 } 764 }
776 765
777 void TileManager::OnImageDecodeTaskCompleted(int layer_id, 766 void TileManager::OnImageDecodeTaskCompleted(int layer_id,
778 SkPixelRef* pixel_ref, 767 SkPixelRef* pixel_ref,
779 bool was_canceled) { 768 bool was_canceled) {
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after
951 result -= other; 940 result -= other;
952 return result; 941 return result;
953 } 942 }
954 943
955 bool TileManager::MemoryUsage::Exceeds(const MemoryUsage& limit) const { 944 bool TileManager::MemoryUsage::Exceeds(const MemoryUsage& limit) const {
956 return memory_bytes_ > limit.memory_bytes_ || 945 return memory_bytes_ > limit.memory_bytes_ ||
957 resource_count_ > limit.resource_count_; 946 resource_count_ > limit.resource_count_;
958 } 947 }
959 948
960 } // namespace cc 949 } // namespace cc
OLDNEW
« no previous file with comments | « cc/resources/tile_manager.h ('k') | cc/resources/tile_manager_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698