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

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

Issue 21159007: cc: Adding support for RGBA_4444 tile textures (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: cleanup Created 7 years, 4 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
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/benchmark_instrumentation.h" 10 #include "cc/debug/benchmark_instrumentation.h"
(...skipping 30 matching lines...) Expand all
41 gfx::Rect content_rect, 41 gfx::Rect content_rect,
42 float contents_scale, 42 float contents_scale,
43 RasterMode raster_mode, 43 RasterMode raster_mode,
44 bool is_tile_in_pending_tree_now_bin, 44 bool is_tile_in_pending_tree_now_bin,
45 TileResolution tile_resolution, 45 TileResolution tile_resolution,
46 int layer_id, 46 int layer_id,
47 const void* tile_id, 47 const void* tile_id,
48 int source_frame_number, 48 int source_frame_number,
49 RenderingStatsInstrumentation* rendering_stats, 49 RenderingStatsInstrumentation* rendering_stats,
50 const RasterWorkerPool::RasterTask::Reply& reply, 50 const RasterWorkerPool::RasterTask::Reply& reply,
51 TaskVector* dependencies) 51 TaskVector* dependencies,
52 bool use_16bit_tiles)
52 : internal::RasterWorkerPoolTask(resource, dependencies), 53 : internal::RasterWorkerPoolTask(resource, dependencies),
53 picture_pile_(picture_pile), 54 picture_pile_(picture_pile),
54 content_rect_(content_rect), 55 content_rect_(content_rect),
55 contents_scale_(contents_scale), 56 contents_scale_(contents_scale),
56 raster_mode_(raster_mode), 57 raster_mode_(raster_mode),
57 is_tile_in_pending_tree_now_bin_(is_tile_in_pending_tree_now_bin), 58 is_tile_in_pending_tree_now_bin_(is_tile_in_pending_tree_now_bin),
58 tile_resolution_(tile_resolution), 59 tile_resolution_(tile_resolution),
59 layer_id_(layer_id), 60 layer_id_(layer_id),
60 tile_id_(tile_id), 61 tile_id_(tile_id),
61 source_frame_number_(source_frame_number), 62 source_frame_number_(source_frame_number),
62 rendering_stats_(rendering_stats), 63 rendering_stats_(rendering_stats),
63 reply_(reply) {} 64 reply_(reply),
65 use_16bit_tiles_(use_16bit_tiles) {}
64 66
65 void RunAnalysisOnThread(unsigned thread_index) { 67 void RunAnalysisOnThread(unsigned thread_index) {
66 TRACE_EVENT1("cc", 68 TRACE_EVENT1("cc",
67 "RasterWorkerPoolTaskImpl::RunAnalysisOnThread", 69 "RasterWorkerPoolTaskImpl::RunAnalysisOnThread",
68 "data", 70 "data",
69 TracedValue::FromValue(DataAsValue().release())); 71 TracedValue::FromValue(DataAsValue().release()));
70 72
71 DCHECK(picture_pile_.get()); 73 DCHECK(picture_pile_.get());
72 DCHECK(rendering_stats_); 74 DCHECK(rendering_stats_);
73 75
(...skipping 30 matching lines...) Expand all
104 DCHECK(picture_pile_.get()); 106 DCHECK(picture_pile_.get());
105 DCHECK(device); 107 DCHECK(device);
106 108
107 if (analysis_.is_solid_color) 109 if (analysis_.is_solid_color)
108 return false; 110 return false;
109 111
110 PicturePileImpl* picture_clone = 112 PicturePileImpl* picture_clone =
111 picture_pile_->GetCloneForDrawingOnThread(thread_index); 113 picture_pile_->GetCloneForDrawingOnThread(thread_index);
112 114
113 SkCanvas canvas(device); 115 SkCanvas canvas(device);
114
115 skia::RefPtr<SkDrawFilter> draw_filter; 116 skia::RefPtr<SkDrawFilter> draw_filter;
116 switch (raster_mode_) { 117 switch (raster_mode_) {
117 case LOW_QUALITY_RASTER_MODE: 118 case LOW_QUALITY_RASTER_MODE:
118 draw_filter = skia::AdoptRef(new skia::PaintSimplifier); 119 draw_filter = skia::AdoptRef(new skia::PaintSimplifier);
119 break; 120 break;
120 case HIGH_QUALITY_NO_LCD_RASTER_MODE: 121 case HIGH_QUALITY_NO_LCD_RASTER_MODE:
121 draw_filter = skia::AdoptRef(new DisableLCDTextFilter); 122 draw_filter = skia::AdoptRef(new DisableLCDTextFilter);
122 break; 123 break;
123 case HIGH_QUALITY_RASTER_MODE: 124 case HIGH_QUALITY_RASTER_MODE:
124 break; 125 break;
(...skipping 17 matching lines...) Expand all
142 HISTOGRAM_CUSTOM_COUNTS( 143 HISTOGRAM_CUSTOM_COUNTS(
143 "Renderer4.PictureRasterTimeUS", 144 "Renderer4.PictureRasterTimeUS",
144 raster_stats.total_rasterize_time.InMicroseconds(), 145 raster_stats.total_rasterize_time.InMicroseconds(),
145 0, 146 0,
146 100000, 147 100000,
147 100); 148 100);
148 } else { 149 } else {
149 picture_clone->RasterToBitmap( 150 picture_clone->RasterToBitmap(
150 &canvas, content_rect_, contents_scale_, NULL); 151 &canvas, content_rect_, contents_scale_, NULL);
151 } 152 }
153
154 if (use_16bit_tiles_) {
155 const SkBitmap& bitmap_32 = device->accessBitmap(true);
156 SkBitmap bitmap_16;
157 bitmap_32.copyTo(&bitmap_16, SkBitmap::kARGB_4444_Config);
158 canvas.drawBitmap(bitmap_16, 0, 0);
Sami 2013/08/08 10:11:01 |canvas| is still a 32-bit bitmap so this is reall
kaanb 2013/08/08 17:25:05 Let me check with Skia folks if they'd be willing
bsalomon 2013/08/08 18:40:15 Hi, What's the intent here? Are you trying to go f
159 }
160
152 return true; 161 return true;
153 } 162 }
154 163
155 // Overridden from internal::RasterWorkerPoolTask: 164 // Overridden from internal::RasterWorkerPoolTask:
156 virtual bool RunOnWorkerThread(SkDevice* device, unsigned thread_index) 165 virtual bool RunOnWorkerThread(SkDevice* device, unsigned thread_index)
157 OVERRIDE { 166 OVERRIDE {
158 RunAnalysisOnThread(thread_index); 167 RunAnalysisOnThread(thread_index);
159 return RunRasterOnThread(device, thread_index); 168 return RunRasterOnThread(device, thread_index);
160 } 169 }
161 virtual void CompleteOnOriginThread() OVERRIDE { 170 virtual void CompleteOnOriginThread() OVERRIDE {
(...skipping 20 matching lines...) Expand all
182 gfx::Rect content_rect_; 191 gfx::Rect content_rect_;
183 float contents_scale_; 192 float contents_scale_;
184 RasterMode raster_mode_; 193 RasterMode raster_mode_;
185 bool is_tile_in_pending_tree_now_bin_; 194 bool is_tile_in_pending_tree_now_bin_;
186 TileResolution tile_resolution_; 195 TileResolution tile_resolution_;
187 int layer_id_; 196 int layer_id_;
188 const void* tile_id_; 197 const void* tile_id_;
189 int source_frame_number_; 198 int source_frame_number_;
190 RenderingStatsInstrumentation* rendering_stats_; 199 RenderingStatsInstrumentation* rendering_stats_;
191 const RasterWorkerPool::RasterTask::Reply reply_; 200 const RasterWorkerPool::RasterTask::Reply reply_;
201 bool use_16bit_tiles_;
192 202
193 DISALLOW_COPY_AND_ASSIGN(RasterWorkerPoolTaskImpl); 203 DISALLOW_COPY_AND_ASSIGN(RasterWorkerPoolTaskImpl);
194 }; 204 };
195 205
196 class ImageDecodeWorkerPoolTaskImpl : public internal::WorkerPoolTask { 206 class ImageDecodeWorkerPoolTaskImpl : public internal::WorkerPoolTask {
197 public: 207 public:
198 ImageDecodeWorkerPoolTaskImpl(skia::LazyPixelRef* pixel_ref, 208 ImageDecodeWorkerPoolTaskImpl(skia::LazyPixelRef* pixel_ref,
199 int layer_id, 209 int layer_id,
200 RenderingStatsInstrumentation* rendering_stats, 210 RenderingStatsInstrumentation* rendering_stats,
201 const RasterWorkerPool::Task::Reply& reply) 211 const RasterWorkerPool::Task::Reply& reply)
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after
372 gfx::Rect content_rect, 382 gfx::Rect content_rect,
373 float contents_scale, 383 float contents_scale,
374 RasterMode raster_mode, 384 RasterMode raster_mode,
375 bool is_tile_in_pending_tree_now_bin, 385 bool is_tile_in_pending_tree_now_bin,
376 TileResolution tile_resolution, 386 TileResolution tile_resolution,
377 int layer_id, 387 int layer_id,
378 const void* tile_id, 388 const void* tile_id,
379 int source_frame_number, 389 int source_frame_number,
380 RenderingStatsInstrumentation* rendering_stats, 390 RenderingStatsInstrumentation* rendering_stats,
381 const RasterTask::Reply& reply, 391 const RasterTask::Reply& reply,
382 Task::Set* dependencies) { 392 Task::Set* dependencies,
393 bool use_16bit_tiles) {
383 return RasterTask( 394 return RasterTask(
384 new RasterWorkerPoolTaskImpl(resource, 395 new RasterWorkerPoolTaskImpl(resource,
385 picture_pile, 396 picture_pile,
386 content_rect, 397 content_rect,
387 contents_scale, 398 contents_scale,
388 raster_mode, 399 raster_mode,
389 is_tile_in_pending_tree_now_bin, 400 is_tile_in_pending_tree_now_bin,
390 tile_resolution, 401 tile_resolution,
391 layer_id, 402 layer_id,
392 tile_id, 403 tile_id,
393 source_frame_number, 404 source_frame_number,
394 rendering_stats, 405 rendering_stats,
395 reply, 406 reply,
396 &dependencies->tasks_)); 407 &dependencies->tasks_,
408 use_16bit_tiles));
397 } 409 }
398 410
399 // static 411 // static
400 RasterWorkerPool::Task RasterWorkerPool::CreateImageDecodeTask( 412 RasterWorkerPool::Task RasterWorkerPool::CreateImageDecodeTask(
401 skia::LazyPixelRef* pixel_ref, 413 skia::LazyPixelRef* pixel_ref,
402 int layer_id, 414 int layer_id,
403 RenderingStatsInstrumentation* stats_instrumentation, 415 RenderingStatsInstrumentation* stats_instrumentation,
404 const Task::Reply& reply) { 416 const Task::Reply& reply) {
405 return Task(new ImageDecodeWorkerPoolTaskImpl(pixel_ref, 417 return Task(new ImageDecodeWorkerPoolTaskImpl(pixel_ref,
406 layer_id, 418 layer_id,
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
534 546
535 internal::GraphNode* decode_node = CreateGraphNodeForTask( 547 internal::GraphNode* decode_node = CreateGraphNodeForTask(
536 decode_task, priority, graph); 548 decode_task, priority, graph);
537 decode_node->add_dependent(raster_node); 549 decode_node->add_dependent(raster_node);
538 } 550 }
539 551
540 return raster_node; 552 return raster_node;
541 } 553 }
542 554
543 } // namespace cc 555 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698