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

Side by Side Diff: cc/tile_manager.cc

Issue 11421210: cc: Apply contents scales to impl-side painting rasterization (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebased Created 8 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 | Annotate | Revision Log
« no previous file with comments | « cc/tile.cc ('k') | no next file » | 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/tile_manager.h" 5 #include "cc/tile_manager.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/command_line.h" 10 #include "base/command_line.h"
11 #include "base/debug/trace_event.h" 11 #include "base/debug/trace_event.h"
12 #include "base/logging.h" 12 #include "base/logging.h"
13 #include "base/string_number_conversions.h" 13 #include "base/string_number_conversions.h"
14 #include "base/threading/sequenced_worker_pool.h" 14 #include "base/threading/sequenced_worker_pool.h"
15 #include "cc/platform_color.h" 15 #include "cc/platform_color.h"
16 #include "cc/rendering_stats.h" 16 #include "cc/rendering_stats.h"
17 #include "cc/resource_pool.h" 17 #include "cc/resource_pool.h"
18 #include "cc/switches.h" 18 #include "cc/switches.h"
19 #include "cc/tile.h" 19 #include "cc/tile.h"
20 #include "third_party/skia/include/core/SkDevice.h" 20 #include "third_party/skia/include/core/SkDevice.h"
21 21
22 namespace { 22 namespace {
23 23
24 void RasterizeTile(cc::PicturePileImpl* picture_pile, 24 void RasterizeTile(cc::PicturePileImpl* picture_pile,
25 uint8_t* mapped_buffer, 25 uint8_t* mapped_buffer,
26 const gfx::Rect& rect, 26 const gfx::Rect& rect,
27 float contents_scale,
27 cc::RenderingStats* stats) { 28 cc::RenderingStats* stats) {
28 TRACE_EVENT0("cc", "RasterizeTile"); 29 TRACE_EVENT0("cc", "RasterizeTile");
29 DCHECK(mapped_buffer); 30 DCHECK(mapped_buffer);
30 DCHECK(picture_pile); 31 DCHECK(picture_pile);
31 SkBitmap bitmap; 32 SkBitmap bitmap;
32 bitmap.setConfig(SkBitmap::kARGB_8888_Config, rect.width(), rect.height()); 33 bitmap.setConfig(SkBitmap::kARGB_8888_Config, rect.width(), rect.height());
33 bitmap.setPixels(mapped_buffer); 34 bitmap.setPixels(mapped_buffer);
34 SkDevice device(bitmap); 35 SkDevice device(bitmap);
35 SkCanvas canvas(&device); 36 SkCanvas canvas(&device);
36 picture_pile->Raster(&canvas, rect, stats); 37 picture_pile->Raster(
38 &canvas,
39 rect,
40 contents_scale,
41 stats);
37 } 42 }
38 43
39 const int kMaxRasterThreads = 64; 44 const int kMaxRasterThreads = 64;
40 const int kDefaultNumberOfRasterThreads = 1; 45 const int kDefaultNumberOfRasterThreads = 1;
41 46
42 const char* kRasterThreadNamePrefix = "CompositorRaster"; 47 const char* kRasterThreadNamePrefix = "CompositorRaster";
43 48
44 // Allow two pending raster tasks per thread. This keeps resource usage 49 // Allow two pending raster tasks per thread. This keeps resource usage
45 // low while making sure raster threads aren't unnecessarily idle. 50 // low while making sure raster threads aren't unnecessarily idle.
46 const int kNumPendingRasterTasksPerThread = 2; 51 const int kNumPendingRasterTasksPerThread = 2;
(...skipping 284 matching lines...) Expand 10 before | Expand all | Expand 10 after
331 336
332 ++pending_raster_tasks_; 337 ++pending_raster_tasks_;
333 worker_pool_->GetTaskRunnerWithShutdownBehavior( 338 worker_pool_->GetTaskRunnerWithShutdownBehavior(
334 base::SequencedWorkerPool::SKIP_ON_SHUTDOWN)->PostTaskAndReply( 339 base::SequencedWorkerPool::SKIP_ON_SHUTDOWN)->PostTaskAndReply(
335 FROM_HERE, 340 FROM_HERE,
336 base::Bind(&RasterizeTile, 341 base::Bind(&RasterizeTile,
337 base::Unretained(cloned_picture_pile.get()), 342 base::Unretained(cloned_picture_pile.get()),
338 resource_pool_->resource_provider()->mapPixelBuffer( 343 resource_pool_->resource_provider()->mapPixelBuffer(
339 resource_id), 344 resource_id),
340 tile->rect_inside_picture_, 345 tile->rect_inside_picture_,
346 tile->contents_scale(),
341 stats), 347 stats),
342 base::Bind(&TileManager::OnRasterTaskCompleted, 348 base::Bind(&TileManager::OnRasterTaskCompleted,
343 base::Unretained(this), 349 base::Unretained(this),
344 tile, 350 tile,
345 resource_id, 351 resource_id,
346 cloned_picture_pile, 352 cloned_picture_pile,
347 stats)); 353 stats));
348 } 354 }
349 355
350 void TileManager::OnRasterTaskCompleted( 356 void TileManager::OnRasterTaskCompleted(
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
399 Tile* tile, ResourceProvider::ResourceId resource_id) { 405 Tile* tile, ResourceProvider::ResourceId resource_id) {
400 ManagedTileState& managed_tile_state = tile->managed_state(); 406 ManagedTileState& managed_tile_state = tile->managed_state();
401 DCHECK(!managed_tile_state.resource_id); 407 DCHECK(!managed_tile_state.resource_id);
402 managed_tile_state.resource_id = resource_id; 408 managed_tile_state.resource_id = resource_id;
403 managed_tile_state.resource_id_is_being_initialized = false; 409 managed_tile_state.resource_id_is_being_initialized = false;
404 // TODO(qinmin): Make this conditional on managed_tile_state.bin == NOW_BIN. 410 // TODO(qinmin): Make this conditional on managed_tile_state.bin == NOW_BIN.
405 client_->ScheduleRedraw(); 411 client_->ScheduleRedraw();
406 } 412 }
407 413
408 } 414 }
OLDNEW
« no previous file with comments | « cc/tile.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698