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

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

Issue 21159007: cc: Adding support for RGBA_4444 tile textures (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix raster-on-demand codepath Created 7 years, 3 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 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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698