| Index: cc/resources/raster_worker_pool.cc
|
| diff --git a/cc/resources/raster_worker_pool.cc b/cc/resources/raster_worker_pool.cc
|
| index aced03fcec6c8eb3c5e413d5213f8b635e3b756a..11228895c28419b586e5658fdee6a9ef61a9f717 100644
|
| --- a/cc/resources/raster_worker_pool.cc
|
| +++ b/cc/resources/raster_worker_pool.cc
|
| @@ -48,7 +48,8 @@ class RasterWorkerPoolTaskImpl : public internal::RasterWorkerPoolTask {
|
| int source_frame_number,
|
| RenderingStatsInstrumentation* rendering_stats,
|
| const RasterWorkerPool::RasterTask::Reply& reply,
|
| - TaskVector* dependencies)
|
| + TaskVector* dependencies,
|
| + bool use_16bit_tiles)
|
| : internal::RasterWorkerPoolTask(resource, dependencies),
|
| picture_pile_(picture_pile),
|
| content_rect_(content_rect),
|
| @@ -60,7 +61,8 @@ class RasterWorkerPoolTaskImpl : public internal::RasterWorkerPoolTask {
|
| tile_id_(tile_id),
|
| source_frame_number_(source_frame_number),
|
| rendering_stats_(rendering_stats),
|
| - reply_(reply) {}
|
| + reply_(reply),
|
| + use_16bit_tiles_(use_16bit_tiles) {}
|
|
|
| void RunAnalysisOnThread(unsigned thread_index) {
|
| TRACE_EVENT1("cc",
|
| @@ -89,7 +91,8 @@ class RasterWorkerPoolTaskImpl : public internal::RasterWorkerPoolTask {
|
| analysis_.is_solid_color &= kUseColorEstimator;
|
| }
|
|
|
| - bool RunRasterOnThread(SkDevice* device, unsigned thread_index) {
|
| + bool RunRasterOnThread(unsigned thread_index,
|
| + void* buffer, gfx::Size size) {
|
| TRACE_EVENT2(
|
| benchmark_instrumentation::kCategory,
|
| benchmark_instrumentation::kRunRasterOnThread,
|
| @@ -102,7 +105,6 @@ class RasterWorkerPoolTaskImpl : public internal::RasterWorkerPoolTask {
|
| devtools_instrumentation::kRasterTask, layer_id_);
|
|
|
| DCHECK(picture_pile_.get());
|
| - DCHECK(device);
|
|
|
| if (analysis_.is_solid_color)
|
| return false;
|
| @@ -110,8 +112,14 @@ class RasterWorkerPoolTaskImpl : public internal::RasterWorkerPoolTask {
|
| PicturePileImpl* picture_clone =
|
| picture_pile_->GetCloneForDrawingOnThread(thread_index);
|
|
|
| - SkCanvas canvas(device);
|
| + SkBitmap bitmap_32;
|
| + bitmap_32.setConfig(SkBitmap::kARGB_8888_Config,
|
| + size.width(),
|
| + size.height());
|
| + bitmap_32.allocPixels();
|
| + SkDevice device_32(bitmap_32);
|
|
|
| + SkCanvas canvas(&device_32);
|
| skia::RefPtr<SkDrawFilter> draw_filter;
|
| switch (raster_mode_) {
|
| case LOW_QUALITY_RASTER_MODE:
|
| @@ -149,14 +157,23 @@ class RasterWorkerPoolTaskImpl : public internal::RasterWorkerPoolTask {
|
| picture_clone->RasterToBitmap(
|
| &canvas, content_rect_, contents_scale_, NULL);
|
| }
|
| +
|
| + if (use_16bit_tiles_) {
|
| + LOG(ERROR) << "KAANB: copying over to 16-bits";
|
| + SkBitmap bitmap_16;
|
| + bitmap_16.setPixels(buffer);
|
| + bitmap_32.copyTo(&bitmap_16, SkBitmap::kARGB_4444_Config);
|
| + }
|
| +
|
| return true;
|
| }
|
|
|
| // Overridden from internal::RasterWorkerPoolTask:
|
| - virtual bool RunOnWorkerThread(SkDevice* device, unsigned thread_index)
|
| + virtual bool RunOnWorkerThread(unsigned thread_index,
|
| + void* buffer, gfx::Size size)
|
| OVERRIDE {
|
| RunAnalysisOnThread(thread_index);
|
| - return RunRasterOnThread(device, thread_index);
|
| + return RunRasterOnThread(thread_index, buffer, size);
|
| }
|
| virtual void CompleteOnOriginThread() OVERRIDE {
|
| reply_.Run(analysis_, !HasFinishedRunning() || WasCanceled());
|
| @@ -189,6 +206,7 @@ class RasterWorkerPoolTaskImpl : public internal::RasterWorkerPoolTask {
|
| int source_frame_number_;
|
| RenderingStatsInstrumentation* rendering_stats_;
|
| const RasterWorkerPool::RasterTask::Reply reply_;
|
| + bool use_16bit_tiles_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(RasterWorkerPoolTaskImpl);
|
| };
|
| @@ -379,7 +397,8 @@ RasterWorkerPool::RasterTask RasterWorkerPool::CreateRasterTask(
|
| int source_frame_number,
|
| RenderingStatsInstrumentation* rendering_stats,
|
| const RasterTask::Reply& reply,
|
| - Task::Set* dependencies) {
|
| + Task::Set* dependencies,
|
| + bool use_16bit_tiles) {
|
| return RasterTask(
|
| new RasterWorkerPoolTaskImpl(resource,
|
| picture_pile,
|
| @@ -393,7 +412,8 @@ RasterWorkerPool::RasterTask RasterWorkerPool::CreateRasterTask(
|
| source_frame_number,
|
| rendering_stats,
|
| reply,
|
| - &dependencies->tasks_));
|
| + &dependencies->tasks_,
|
| + use_16bit_tiles));
|
| }
|
|
|
| // static
|
|
|