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 |
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
146 : client_(client), | 146 : client_(client), |
147 resource_pool_(ResourcePool::Create(resource_provider)), | 147 resource_pool_(ResourcePool::Create(resource_provider)), |
148 raster_worker_pool_(raster_worker_pool.Pass()), | 148 raster_worker_pool_(raster_worker_pool.Pass()), |
149 prioritized_tiles_dirty_(false), | 149 prioritized_tiles_dirty_(false), |
150 all_tiles_that_need_to_be_rasterized_have_memory_(true), | 150 all_tiles_that_need_to_be_rasterized_have_memory_(true), |
151 all_tiles_required_for_activation_have_memory_(true), | 151 all_tiles_required_for_activation_have_memory_(true), |
152 bytes_releasable_(0), | 152 bytes_releasable_(0), |
153 resources_releasable_(0), | 153 resources_releasable_(0), |
154 ever_exceeded_memory_budget_(false), | 154 ever_exceeded_memory_budget_(false), |
155 rendering_stats_instrumentation_(rendering_stats_instrumentation), | 155 rendering_stats_instrumentation_(rendering_stats_instrumentation), |
156 did_initialize_visible_tile_(false) { | 156 did_initialize_visible_tile_(false), |
| 157 use_16_bit_tiles_(resource_provider->use_16bit_textures()) { |
157 raster_worker_pool_->SetClient(this); | 158 raster_worker_pool_->SetClient(this); |
158 } | 159 } |
159 | 160 |
160 TileManager::~TileManager() { | 161 TileManager::~TileManager() { |
161 // Reset global state and manage. This should cause | 162 // Reset global state and manage. This should cause |
162 // our memory usage to drop to zero. | 163 // our memory usage to drop to zero. |
163 global_state_ = GlobalStateThatImpactsTilePriority(); | 164 global_state_ = GlobalStateThatImpactsTilePriority(); |
164 | 165 |
165 DCHECK_EQ(0u, tiles_.size()); | 166 DCHECK_EQ(0u, tiles_.size()); |
166 | 167 |
(...skipping 563 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
730 tile->layer_id(), | 731 tile->layer_id(), |
731 base::Unretained(pixel_ref))); | 732 base::Unretained(pixel_ref))); |
732 } | 733 } |
733 | 734 |
734 RasterWorkerPool::RasterTask TileManager::CreateRasterTask(Tile* tile) { | 735 RasterWorkerPool::RasterTask TileManager::CreateRasterTask(Tile* tile) { |
735 ManagedTileState& mts = tile->managed_state(); | 736 ManagedTileState& mts = tile->managed_state(); |
736 | 737 |
737 scoped_ptr<ResourcePool::Resource> resource = | 738 scoped_ptr<ResourcePool::Resource> resource = |
738 resource_pool_->AcquireResource( | 739 resource_pool_->AcquireResource( |
739 tile->tile_size_.size(), | 740 tile->tile_size_.size(), |
740 raster_worker_pool_->GetResourceFormat()); | 741 raster_worker_pool_->GetResourceFormat(), |
| 742 use_16_bit_tiles_); |
741 const Resource* const_resource = resource.get(); | 743 const Resource* const_resource = resource.get(); |
742 | 744 |
743 // Create and queue all image decode tasks that this tile depends on. | 745 // Create and queue all image decode tasks that this tile depends on. |
744 RasterWorkerPool::Task::Set decode_tasks; | 746 RasterWorkerPool::Task::Set decode_tasks; |
745 PixelRefTaskMap& existing_pixel_refs = image_decode_tasks_[tile->layer_id()]; | 747 PixelRefTaskMap& existing_pixel_refs = image_decode_tasks_[tile->layer_id()]; |
746 for (PicturePileImpl::PixelRefIterator iter(tile->content_rect(), | 748 for (PicturePileImpl::PixelRefIterator iter(tile->content_rect(), |
747 tile->contents_scale(), | 749 tile->contents_scale(), |
748 tile->picture_pile()); | 750 tile->picture_pile()); |
749 iter; ++iter) { | 751 iter; ++iter) { |
750 skia::LazyPixelRef* pixel_ref = *iter; | 752 skia::LazyPixelRef* pixel_ref = *iter; |
(...skipping 23 matching lines...) Expand all Loading... |
774 mts.resolution, | 776 mts.resolution, |
775 tile->layer_id(), | 777 tile->layer_id(), |
776 static_cast<const void *>(tile), | 778 static_cast<const void *>(tile), |
777 tile->source_frame_number(), | 779 tile->source_frame_number(), |
778 rendering_stats_instrumentation_, | 780 rendering_stats_instrumentation_, |
779 base::Bind(&TileManager::OnRasterTaskCompleted, | 781 base::Bind(&TileManager::OnRasterTaskCompleted, |
780 base::Unretained(this), | 782 base::Unretained(this), |
781 tile->id(), | 783 tile->id(), |
782 base::Passed(&resource), | 784 base::Passed(&resource), |
783 mts.raster_mode), | 785 mts.raster_mode), |
784 &decode_tasks); | 786 &decode_tasks, |
| 787 use_16_bit_tiles_); |
785 } | 788 } |
786 | 789 |
787 void TileManager::OnImageDecodeTaskCompleted( | 790 void TileManager::OnImageDecodeTaskCompleted( |
788 int layer_id, | 791 int layer_id, |
789 skia::LazyPixelRef* pixel_ref, | 792 skia::LazyPixelRef* pixel_ref, |
790 bool was_canceled) { | 793 bool was_canceled) { |
791 // If the task was canceled, we need to clean it up | 794 // If the task was canceled, we need to clean it up |
792 // from |image_decode_tasks_|. | 795 // from |image_decode_tasks_|. |
793 if (!was_canceled) | 796 if (!was_canceled) |
794 return; | 797 return; |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
846 bytes_releasable_ += tile->bytes_consumed_if_allocated(); | 849 bytes_releasable_ += tile->bytes_consumed_if_allocated(); |
847 ++resources_releasable_; | 850 ++resources_releasable_; |
848 } | 851 } |
849 | 852 |
850 FreeUnusedResourcesForTile(tile); | 853 FreeUnusedResourcesForTile(tile); |
851 if (tile->priority(ACTIVE_TREE).distance_to_visible_in_pixels == 0) | 854 if (tile->priority(ACTIVE_TREE).distance_to_visible_in_pixels == 0) |
852 did_initialize_visible_tile_ = true; | 855 did_initialize_visible_tile_ = true; |
853 } | 856 } |
854 | 857 |
855 } // namespace cc | 858 } // namespace cc |
OLD | NEW |