Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 |
| 11 #include "base/bind.h" | 11 #include "base/bind.h" |
| 12 #include "base/json/json_writer.h" | 12 #include "base/json/json_writer.h" |
| 13 #include "base/logging.h" | 13 #include "base/logging.h" |
| 14 #include "base/metrics/histogram.h" | 14 #include "base/metrics/histogram.h" |
| 15 #include "cc/debug/traced_value.h" | 15 #include "cc/debug/traced_value.h" |
| 16 #include "cc/resources/direct_raster_worker_pool.h" | |
| 16 #include "cc/resources/image_raster_worker_pool.h" | 17 #include "cc/resources/image_raster_worker_pool.h" |
| 17 #include "cc/resources/pixel_buffer_raster_worker_pool.h" | 18 #include "cc/resources/pixel_buffer_raster_worker_pool.h" |
| 19 #include "cc/resources/raster_worker_pool_delegate.h" | |
| 18 #include "cc/resources/tile.h" | 20 #include "cc/resources/tile.h" |
| 19 #include "third_party/skia/include/core/SkCanvas.h" | |
| 20 #include "ui/gfx/rect_conversions.h" | 21 #include "ui/gfx/rect_conversions.h" |
| 21 | 22 |
| 22 namespace cc { | 23 namespace cc { |
| 23 | |
| 24 namespace { | 24 namespace { |
| 25 | 25 |
| 26 // Memory limit policy works by mapping some bin states to the NEVER bin. | 26 // Memory limit policy works by mapping some bin states to the NEVER bin. |
| 27 const ManagedTileBin kBinPolicyMap[NUM_TILE_MEMORY_LIMIT_POLICIES][NUM_BINS] = { | 27 const ManagedTileBin kBinPolicyMap[NUM_TILE_MEMORY_LIMIT_POLICIES][NUM_BINS] = { |
| 28 // [ALLOW_NOTHING] | 28 // [ALLOW_NOTHING] |
| 29 {NEVER_BIN, // [NOW_AND_READY_TO_DRAW_BIN] | 29 {NEVER_BIN, // [NOW_AND_READY_TO_DRAW_BIN] |
| 30 NEVER_BIN, // [NOW_BIN] | 30 NEVER_BIN, // [NOW_BIN] |
| 31 NEVER_BIN, // [SOON_BIN] | 31 NEVER_BIN, // [SOON_BIN] |
| 32 NEVER_BIN, // [EVENTUALLY_AND_ACTIVE_BIN] | 32 NEVER_BIN, // [EVENTUALLY_AND_ACTIVE_BIN] |
| 33 NEVER_BIN, // [EVENTUALLY_BIN] | 33 NEVER_BIN, // [EVENTUALLY_BIN] |
| (...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 150 ContextProvider* context_provider, | 150 ContextProvider* context_provider, |
| 151 RenderingStatsInstrumentation* rendering_stats_instrumentation, | 151 RenderingStatsInstrumentation* rendering_stats_instrumentation, |
| 152 bool use_map_image, | 152 bool use_map_image, |
| 153 bool use_rasterize_on_demand, | 153 bool use_rasterize_on_demand, |
| 154 size_t max_transfer_buffer_usage_bytes, | 154 size_t max_transfer_buffer_usage_bytes, |
| 155 size_t max_raster_usage_bytes, | 155 size_t max_raster_usage_bytes, |
| 156 unsigned map_image_texture_target) { | 156 unsigned map_image_texture_target) { |
| 157 return make_scoped_ptr(new TileManager( | 157 return make_scoped_ptr(new TileManager( |
| 158 client, | 158 client, |
| 159 resource_provider, | 159 resource_provider, |
| 160 use_map_image | 160 context_provider, |
| 161 ? ImageRasterWorkerPool::Create( | 161 use_map_image ? ImageRasterWorkerPool::Create(resource_provider, |
| 162 resource_provider, context_provider, map_image_texture_target) | 162 map_image_texture_target) |
| 163 : PixelBufferRasterWorkerPool::Create( | 163 : PixelBufferRasterWorkerPool::Create( |
| 164 resource_provider, | 164 resource_provider, max_transfer_buffer_usage_bytes), |
| 165 context_provider, | 165 DirectRasterWorkerPool::Create(resource_provider, context_provider), |
| 166 max_transfer_buffer_usage_bytes), | |
| 167 max_raster_usage_bytes, | 166 max_raster_usage_bytes, |
| 168 rendering_stats_instrumentation, | 167 rendering_stats_instrumentation, |
| 169 use_rasterize_on_demand)); | 168 use_rasterize_on_demand)); |
| 170 } | 169 } |
| 171 | 170 |
| 172 TileManager::TileManager( | 171 TileManager::TileManager( |
| 173 TileManagerClient* client, | 172 TileManagerClient* client, |
| 174 ResourceProvider* resource_provider, | 173 ResourceProvider* resource_provider, |
| 174 ContextProvider* context_provider, | |
| 175 scoped_ptr<RasterWorkerPool> raster_worker_pool, | 175 scoped_ptr<RasterWorkerPool> raster_worker_pool, |
| 176 scoped_ptr<RasterWorkerPool> direct_raster_worker_pool, | |
| 176 size_t max_raster_usage_bytes, | 177 size_t max_raster_usage_bytes, |
| 177 RenderingStatsInstrumentation* rendering_stats_instrumentation, | 178 RenderingStatsInstrumentation* rendering_stats_instrumentation, |
| 178 bool use_rasterize_on_demand) | 179 bool use_rasterize_on_demand) |
| 179 : client_(client), | 180 : client_(client), |
| 180 resource_pool_( | 181 resource_pool_( |
| 181 ResourcePool::Create(resource_provider, | 182 ResourcePool::Create(resource_provider, |
| 182 raster_worker_pool->GetResourceTarget(), | 183 raster_worker_pool->GetResourceTarget(), |
| 183 raster_worker_pool->GetResourceFormat())), | 184 raster_worker_pool->GetResourceFormat())), |
| 184 raster_worker_pool_(raster_worker_pool.Pass()), | 185 raster_worker_pool_(raster_worker_pool.Pass()), |
| 186 direct_raster_worker_pool_(direct_raster_worker_pool.Pass()), | |
| 185 prioritized_tiles_dirty_(false), | 187 prioritized_tiles_dirty_(false), |
| 186 all_tiles_that_need_to_be_rasterized_have_memory_(true), | 188 all_tiles_that_need_to_be_rasterized_have_memory_(true), |
| 187 all_tiles_required_for_activation_have_memory_(true), | 189 all_tiles_required_for_activation_have_memory_(true), |
| 188 memory_required_bytes_(0), | 190 memory_required_bytes_(0), |
| 189 memory_nice_to_have_bytes_(0), | 191 memory_nice_to_have_bytes_(0), |
| 190 bytes_releasable_(0), | 192 bytes_releasable_(0), |
| 191 resources_releasable_(0), | 193 resources_releasable_(0), |
| 192 max_raster_usage_bytes_(max_raster_usage_bytes), | 194 max_raster_usage_bytes_(max_raster_usage_bytes), |
| 193 ever_exceeded_memory_budget_(false), | 195 ever_exceeded_memory_budget_(false), |
| 194 rendering_stats_instrumentation_(rendering_stats_instrumentation), | 196 rendering_stats_instrumentation_(rendering_stats_instrumentation), |
| 195 did_initialize_visible_tile_(false), | 197 did_initialize_visible_tile_(false), |
| 196 did_check_for_completed_tasks_since_last_schedule_tasks_(true), | 198 did_check_for_completed_tasks_since_last_schedule_tasks_(true), |
| 197 use_rasterize_on_demand_(use_rasterize_on_demand) { | 199 use_rasterize_on_demand_(use_rasterize_on_demand) { |
| 198 raster_worker_pool_->SetClient(this); | 200 RasterWorkerPool* raster_worker_pools[NUM_RASTER_WORKER_POOL_TYPES] = { |
| 201 raster_worker_pool_.get(), direct_raster_worker_pool_.get(), }; | |
|
vmpstr
2014/02/14 23:47:24
nit: No need for the trailing comma.
reveman
2014/02/15 00:02:45
Done.
| |
| 202 raster_worker_pool_delegate_ = RasterWorkerPoolDelegate::Create( | |
| 203 this, | |
| 204 raster_worker_pools, | |
| 205 raster_worker_pools + arraysize(raster_worker_pools)); | |
|
vmpstr
2014/02/14 23:47:24
nit: Maybe pass NUM_RASTER_WORKER_POOL_TYPES inste
reveman
2014/02/15 00:02:45
Done. Passing arraysize.
| |
| 199 } | 206 } |
| 200 | 207 |
| 201 TileManager::~TileManager() { | 208 TileManager::~TileManager() { |
| 202 // Reset global state and manage. This should cause | 209 // Reset global state and manage. This should cause |
| 203 // our memory usage to drop to zero. | 210 // our memory usage to drop to zero. |
| 204 global_state_ = GlobalStateThatImpactsTilePriority(); | 211 global_state_ = GlobalStateThatImpactsTilePriority(); |
| 205 | 212 |
| 206 CleanUpReleasedTiles(); | 213 CleanUpReleasedTiles(); |
| 207 DCHECK_EQ(0u, tiles_.size()); | 214 DCHECK_EQ(0u, tiles_.size()); |
| 208 | 215 |
| 209 RasterWorkerPool::RasterTask::Queue empty; | 216 RasterWorkerPool::RasterTask::Queue empty[NUM_RASTER_WORKER_POOL_TYPES]; |
| 210 raster_worker_pool_->ScheduleTasks(&empty); | 217 raster_worker_pool_delegate_->ScheduleTasks(empty); |
| 211 | 218 |
| 212 // This should finish all pending tasks and release any uninitialized | 219 // This should finish all pending tasks and release any uninitialized |
| 213 // resources. | 220 // resources. |
| 214 raster_worker_pool_->Shutdown(); | 221 raster_worker_pool_delegate_->Shutdown(); |
| 215 raster_worker_pool_->CheckForCompletedTasks(); | 222 raster_worker_pool_delegate_->CheckForCompletedTasks(); |
| 216 | 223 |
| 217 DCHECK_EQ(0u, bytes_releasable_); | 224 DCHECK_EQ(0u, bytes_releasable_); |
| 218 DCHECK_EQ(0u, resources_releasable_); | 225 DCHECK_EQ(0u, resources_releasable_); |
| 219 } | 226 } |
| 220 | 227 |
| 221 void TileManager::Release(Tile* tile) { | 228 void TileManager::Release(Tile* tile) { |
| 222 prioritized_tiles_dirty_ = true; | 229 prioritized_tiles_dirty_ = true; |
| 223 released_tiles_.push_back(tile); | 230 released_tiles_.push_back(tile); |
| 224 } | 231 } |
| 225 | 232 |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 268 } | 275 } |
| 269 | 276 |
| 270 void TileManager::DidFinishRunningTasks() { | 277 void TileManager::DidFinishRunningTasks() { |
| 271 TRACE_EVENT0("cc", "TileManager::DidFinishRunningTasks"); | 278 TRACE_EVENT0("cc", "TileManager::DidFinishRunningTasks"); |
| 272 | 279 |
| 273 // When OOM, keep re-assigning memory until we reach a steady state | 280 // When OOM, keep re-assigning memory until we reach a steady state |
| 274 // where top-priority tiles are initialized. | 281 // where top-priority tiles are initialized. |
| 275 if (all_tiles_that_need_to_be_rasterized_have_memory_) | 282 if (all_tiles_that_need_to_be_rasterized_have_memory_) |
| 276 return; | 283 return; |
| 277 | 284 |
| 278 raster_worker_pool_->CheckForCompletedTasks(); | 285 raster_worker_pool_delegate_->CheckForCompletedTasks(); |
| 279 did_check_for_completed_tasks_since_last_schedule_tasks_ = true; | 286 did_check_for_completed_tasks_since_last_schedule_tasks_ = true; |
| 280 | 287 |
| 281 TileVector tiles_that_need_to_be_rasterized; | 288 TileVector tiles_that_need_to_be_rasterized; |
| 282 AssignGpuMemoryToTiles(&prioritized_tiles_, | 289 AssignGpuMemoryToTiles(&prioritized_tiles_, |
| 283 &tiles_that_need_to_be_rasterized); | 290 &tiles_that_need_to_be_rasterized); |
| 284 | 291 |
| 285 // |tiles_that_need_to_be_rasterized| will be empty when we reach a | 292 // |tiles_that_need_to_be_rasterized| will be empty when we reach a |
| 286 // steady memory state. Keep scheduling tasks until we reach this state. | 293 // steady memory state. Keep scheduling tasks until we reach this state. |
| 287 if (!tiles_that_need_to_be_rasterized.empty()) { | 294 if (!tiles_that_need_to_be_rasterized.empty()) { |
| 288 ScheduleTasks(tiles_that_need_to_be_rasterized); | 295 ScheduleTasks(tiles_that_need_to_be_rasterized); |
| (...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 463 prioritized_tiles_dirty_ = true; | 470 prioritized_tiles_dirty_ = true; |
| 464 resource_pool_->SetResourceUsageLimits( | 471 resource_pool_->SetResourceUsageLimits( |
| 465 global_state_.memory_limit_in_bytes, | 472 global_state_.memory_limit_in_bytes, |
| 466 global_state_.unused_memory_limit_in_bytes, | 473 global_state_.unused_memory_limit_in_bytes, |
| 467 global_state_.num_resources_limit); | 474 global_state_.num_resources_limit); |
| 468 } | 475 } |
| 469 | 476 |
| 470 // We need to call CheckForCompletedTasks() once in-between each call | 477 // We need to call CheckForCompletedTasks() once in-between each call |
| 471 // to ScheduleTasks() to prevent canceled tasks from being scheduled. | 478 // to ScheduleTasks() to prevent canceled tasks from being scheduled. |
| 472 if (!did_check_for_completed_tasks_since_last_schedule_tasks_) { | 479 if (!did_check_for_completed_tasks_since_last_schedule_tasks_) { |
| 473 raster_worker_pool_->CheckForCompletedTasks(); | 480 raster_worker_pool_delegate_->CheckForCompletedTasks(); |
| 474 did_check_for_completed_tasks_since_last_schedule_tasks_ = true; | 481 did_check_for_completed_tasks_since_last_schedule_tasks_ = true; |
| 475 } | 482 } |
| 476 | 483 |
| 477 UpdatePrioritizedTileSetIfNeeded(); | 484 UpdatePrioritizedTileSetIfNeeded(); |
| 478 | 485 |
| 479 TileVector tiles_that_need_to_be_rasterized; | 486 TileVector tiles_that_need_to_be_rasterized; |
| 480 AssignGpuMemoryToTiles(&prioritized_tiles_, | 487 AssignGpuMemoryToTiles(&prioritized_tiles_, |
| 481 &tiles_that_need_to_be_rasterized); | 488 &tiles_that_need_to_be_rasterized); |
| 482 | 489 |
| 483 // Finally, schedule rasterizer tasks. | 490 // Finally, schedule rasterizer tasks. |
| 484 ScheduleTasks(tiles_that_need_to_be_rasterized); | 491 ScheduleTasks(tiles_that_need_to_be_rasterized); |
| 485 | 492 |
| 486 TRACE_EVENT_INSTANT1("cc", | 493 TRACE_EVENT_INSTANT1("cc", |
| 487 "DidManage", | 494 "DidManage", |
| 488 TRACE_EVENT_SCOPE_THREAD, | 495 TRACE_EVENT_SCOPE_THREAD, |
| 489 "state", | 496 "state", |
| 490 TracedValue::FromValue(BasicStateAsValue().release())); | 497 TracedValue::FromValue(BasicStateAsValue().release())); |
| 491 | 498 |
| 492 TRACE_COUNTER_ID1("cc", | 499 TRACE_COUNTER_ID1("cc", |
| 493 "unused_memory_bytes", | 500 "unused_memory_bytes", |
| 494 this, | 501 this, |
| 495 resource_pool_->total_memory_usage_bytes() - | 502 resource_pool_->total_memory_usage_bytes() - |
| 496 resource_pool_->acquired_memory_usage_bytes()); | 503 resource_pool_->acquired_memory_usage_bytes()); |
| 497 } | 504 } |
| 498 | 505 |
| 499 bool TileManager::UpdateVisibleTiles() { | 506 bool TileManager::UpdateVisibleTiles() { |
| 500 TRACE_EVENT0("cc", "TileManager::UpdateVisibleTiles"); | 507 TRACE_EVENT0("cc", "TileManager::UpdateVisibleTiles"); |
| 501 | 508 |
| 502 raster_worker_pool_->CheckForCompletedTasks(); | 509 raster_worker_pool_delegate_->CheckForCompletedTasks(); |
| 503 did_check_for_completed_tasks_since_last_schedule_tasks_ = true; | 510 did_check_for_completed_tasks_since_last_schedule_tasks_ = true; |
| 504 | 511 |
| 505 TRACE_EVENT_INSTANT1( | 512 TRACE_EVENT_INSTANT1( |
| 506 "cc", | 513 "cc", |
| 507 "DidUpdateVisibleTiles", | 514 "DidUpdateVisibleTiles", |
| 508 TRACE_EVENT_SCOPE_THREAD, | 515 TRACE_EVENT_SCOPE_THREAD, |
| 509 "stats", | 516 "stats", |
| 510 TracedValue::FromValue(RasterTaskCompletionStatsAsValue( | 517 TracedValue::FromValue(RasterTaskCompletionStatsAsValue( |
| 511 update_visible_tiles_stats_).release())); | 518 update_visible_tiles_stats_).release())); |
| 512 update_visible_tiles_stats_ = RasterTaskCompletionStats(); | 519 update_visible_tiles_stats_ = RasterTaskCompletionStats(); |
| (...skipping 256 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 769 | 776 |
| 770 void TileManager::ScheduleTasks( | 777 void TileManager::ScheduleTasks( |
| 771 const TileVector& tiles_that_need_to_be_rasterized) { | 778 const TileVector& tiles_that_need_to_be_rasterized) { |
| 772 TRACE_EVENT1("cc", | 779 TRACE_EVENT1("cc", |
| 773 "TileManager::ScheduleTasks", | 780 "TileManager::ScheduleTasks", |
| 774 "count", | 781 "count", |
| 775 tiles_that_need_to_be_rasterized.size()); | 782 tiles_that_need_to_be_rasterized.size()); |
| 776 | 783 |
| 777 DCHECK(did_check_for_completed_tasks_since_last_schedule_tasks_); | 784 DCHECK(did_check_for_completed_tasks_since_last_schedule_tasks_); |
| 778 | 785 |
| 779 raster_tasks_.Reset(); | 786 for (size_t i = 0; i < NUM_RASTER_WORKER_POOL_TYPES; ++i) |
| 787 raster_queue_[i].Reset(); | |
| 780 | 788 |
| 781 // Build a new task queue containing all task currently needed. Tasks | 789 // Build a new task queue containing all task currently needed. Tasks |
| 782 // are added in order of priority, highest priority task first. | 790 // are added in order of priority, highest priority task first. |
| 783 for (TileVector::const_iterator it = tiles_that_need_to_be_rasterized.begin(); | 791 for (TileVector::const_iterator it = tiles_that_need_to_be_rasterized.begin(); |
| 784 it != tiles_that_need_to_be_rasterized.end(); | 792 it != tiles_that_need_to_be_rasterized.end(); |
| 785 ++it) { | 793 ++it) { |
| 786 Tile* tile = *it; | 794 Tile* tile = *it; |
| 787 ManagedTileState& mts = tile->managed_state(); | 795 ManagedTileState& mts = tile->managed_state(); |
| 788 ManagedTileState::TileVersion& tile_version = | 796 ManagedTileState::TileVersion& tile_version = |
| 789 mts.tile_versions[mts.raster_mode]; | 797 mts.tile_versions[mts.raster_mode]; |
| 790 | 798 |
| 791 DCHECK(tile_version.requires_resource()); | 799 DCHECK(tile_version.requires_resource()); |
| 792 DCHECK(!tile_version.resource_); | 800 DCHECK(!tile_version.resource_); |
| 793 | 801 |
| 794 if (tile_version.raster_task_.is_null()) | 802 if (tile_version.raster_task_.is_null()) |
| 795 tile_version.raster_task_ = CreateRasterTask(tile); | 803 tile_version.raster_task_ = CreateRasterTask(tile); |
| 796 | 804 |
| 797 raster_tasks_.Append(tile_version.raster_task_, | 805 size_t pool_type = tile->use_gpu_rasterization() |
| 798 tile->required_for_activation()); | 806 ? RASTER_WORKER_POOL_TYPE_DIRECT |
| 807 : RASTER_WORKER_POOL_TYPE_DEFAULT; | |
| 808 | |
| 809 raster_queue_[pool_type] | |
| 810 .Append(tile_version.raster_task_, tile->required_for_activation()); | |
| 799 } | 811 } |
| 800 | 812 |
| 801 // We must reduce the amount of unused resoruces before calling | 813 // We must reduce the amount of unused resoruces before calling |
| 802 // ScheduleTasks to prevent usage from rising above limits. | 814 // ScheduleTasks to prevent usage from rising above limits. |
| 803 resource_pool_->ReduceResourceUsage(); | 815 resource_pool_->ReduceResourceUsage(); |
| 804 | 816 |
| 805 // Schedule running of |raster_tasks_|. This replaces any previously | 817 // Schedule running of |raster_tasks_|. This replaces any previously |
| 806 // scheduled tasks and effectively cancels all tasks not present | 818 // scheduled tasks and effectively cancels all tasks not present |
| 807 // in |raster_tasks_|. | 819 // in |raster_tasks_|. |
| 808 raster_worker_pool_->ScheduleTasks(&raster_tasks_); | 820 raster_worker_pool_delegate_->ScheduleTasks(raster_queue_); |
| 809 | 821 |
| 810 did_check_for_completed_tasks_since_last_schedule_tasks_ = false; | 822 did_check_for_completed_tasks_since_last_schedule_tasks_ = false; |
| 811 } | 823 } |
| 812 | 824 |
| 813 RasterWorkerPool::Task TileManager::CreateImageDecodeTask( | 825 RasterWorkerPool::Task TileManager::CreateImageDecodeTask( |
| 814 Tile* tile, | 826 Tile* tile, |
| 815 SkPixelRef* pixel_ref) { | 827 SkPixelRef* pixel_ref) { |
| 816 return RasterWorkerPool::CreateImageDecodeTask( | 828 return RasterWorkerPool::CreateImageDecodeTask( |
| 817 pixel_ref, | 829 pixel_ref, |
| 818 tile->layer_id(), | 830 tile->layer_id(), |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 856 return RasterWorkerPool::CreateRasterTask( | 868 return RasterWorkerPool::CreateRasterTask( |
| 857 const_resource, | 869 const_resource, |
| 858 tile->picture_pile(), | 870 tile->picture_pile(), |
| 859 tile->content_rect(), | 871 tile->content_rect(), |
| 860 tile->contents_scale(), | 872 tile->contents_scale(), |
| 861 mts.raster_mode, | 873 mts.raster_mode, |
| 862 mts.resolution, | 874 mts.resolution, |
| 863 tile->layer_id(), | 875 tile->layer_id(), |
| 864 static_cast<const void*>(tile), | 876 static_cast<const void*>(tile), |
| 865 tile->source_frame_number(), | 877 tile->source_frame_number(), |
| 866 tile->use_gpu_rasterization(), | |
| 867 rendering_stats_instrumentation_, | 878 rendering_stats_instrumentation_, |
| 868 base::Bind(&TileManager::OnRasterTaskCompleted, | 879 base::Bind(&TileManager::OnRasterTaskCompleted, |
| 869 base::Unretained(this), | 880 base::Unretained(this), |
| 870 tile->id(), | 881 tile->id(), |
| 871 base::Passed(&resource), | 882 base::Passed(&resource), |
| 872 mts.raster_mode), | 883 mts.raster_mode), |
| 873 &decode_tasks); | 884 &decode_tasks, |
| 885 context_provider_); | |
| 874 } | 886 } |
| 875 | 887 |
| 876 void TileManager::OnImageDecodeTaskCompleted(int layer_id, | 888 void TileManager::OnImageDecodeTaskCompleted(int layer_id, |
| 877 SkPixelRef* pixel_ref, | 889 SkPixelRef* pixel_ref, |
| 878 bool was_canceled) { | 890 bool was_canceled) { |
| 879 // If the task was canceled, we need to clean it up | 891 // If the task was canceled, we need to clean it up |
| 880 // from |image_decode_tasks_|. | 892 // from |image_decode_tasks_|. |
| 881 if (!was_canceled) | 893 if (!was_canceled) |
| 882 return; | 894 return; |
| 883 | 895 |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 957 flags)); | 969 flags)); |
| 958 DCHECK(tiles_.find(tile->id()) == tiles_.end()); | 970 DCHECK(tiles_.find(tile->id()) == tiles_.end()); |
| 959 | 971 |
| 960 tiles_[tile->id()] = tile; | 972 tiles_[tile->id()] = tile; |
| 961 used_layer_counts_[tile->layer_id()]++; | 973 used_layer_counts_[tile->layer_id()]++; |
| 962 prioritized_tiles_dirty_ = true; | 974 prioritized_tiles_dirty_ = true; |
| 963 return tile; | 975 return tile; |
| 964 } | 976 } |
| 965 | 977 |
| 966 } // namespace cc | 978 } // namespace cc |
| OLD | NEW |