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

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: Rebase and feedback 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 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
118 return state.PassAs<base::Value>(); 118 return state.PassAs<base::Value>();
119 } 119 }
120 120
121 // static 121 // static
122 scoped_ptr<TileManager> TileManager::Create( 122 scoped_ptr<TileManager> TileManager::Create(
123 TileManagerClient* client, 123 TileManagerClient* client,
124 ResourceProvider* resource_provider, 124 ResourceProvider* resource_provider,
125 size_t num_raster_threads, 125 size_t num_raster_threads,
126 RenderingStatsInstrumentation* rendering_stats_instrumentation, 126 RenderingStatsInstrumentation* rendering_stats_instrumentation,
127 bool use_map_image, 127 bool use_map_image,
128 size_t max_transfer_buffer_usage_bytes) { 128 size_t max_transfer_buffer_usage_bytes,
129 bool use_rgba_4444_tiles) {
129 return make_scoped_ptr( 130 return make_scoped_ptr(
130 new TileManager(client, 131 new TileManager(client,
131 resource_provider, 132 resource_provider,
132 use_map_image ? 133 use_map_image ?
133 ImageRasterWorkerPool::Create( 134 ImageRasterWorkerPool::Create(
134 resource_provider, num_raster_threads) : 135 resource_provider, num_raster_threads) :
135 PixelBufferRasterWorkerPool::Create( 136 PixelBufferRasterWorkerPool::Create(
136 resource_provider, 137 resource_provider,
137 num_raster_threads, 138 num_raster_threads,
138 max_transfer_buffer_usage_bytes), 139 max_transfer_buffer_usage_bytes),
139 num_raster_threads, 140 num_raster_threads,
140 rendering_stats_instrumentation)); 141 rendering_stats_instrumentation,
142 use_rgba_4444_tiles ?
143 ResourceProvider::RGBA_4444 :
144 ResourceProvider::RGBA_8888));
141 } 145 }
142 146
143 TileManager::TileManager( 147 TileManager::TileManager(
144 TileManagerClient* client, 148 TileManagerClient* client,
145 ResourceProvider* resource_provider, 149 ResourceProvider* resource_provider,
146 scoped_ptr<RasterWorkerPool> raster_worker_pool, 150 scoped_ptr<RasterWorkerPool> raster_worker_pool,
147 size_t num_raster_threads, 151 size_t num_raster_threads,
148 RenderingStatsInstrumentation* rendering_stats_instrumentation) 152 RenderingStatsInstrumentation* rendering_stats_instrumentation,
153 ResourceProvider::TextureType texture_type)
149 : client_(client), 154 : client_(client),
150 resource_pool_(ResourcePool::Create(resource_provider)), 155 resource_pool_(ResourcePool::Create(resource_provider)),
151 raster_worker_pool_(raster_worker_pool.Pass()), 156 raster_worker_pool_(raster_worker_pool.Pass()),
152 prioritized_tiles_dirty_(false), 157 prioritized_tiles_dirty_(false),
153 all_tiles_that_need_to_be_rasterized_have_memory_(true), 158 all_tiles_that_need_to_be_rasterized_have_memory_(true),
154 all_tiles_required_for_activation_have_memory_(true), 159 all_tiles_required_for_activation_have_memory_(true),
155 bytes_releasable_(0), 160 bytes_releasable_(0),
156 resources_releasable_(0), 161 resources_releasable_(0),
157 ever_exceeded_memory_budget_(false), 162 ever_exceeded_memory_budget_(false),
158 rendering_stats_instrumentation_(rendering_stats_instrumentation), 163 rendering_stats_instrumentation_(rendering_stats_instrumentation),
159 did_initialize_visible_tile_(false) { 164 did_initialize_visible_tile_(false),
165 texture_type_(texture_type) {
160 raster_worker_pool_->SetClient(this); 166 raster_worker_pool_->SetClient(this);
161 } 167 }
162 168
163 TileManager::~TileManager() { 169 TileManager::~TileManager() {
164 // Reset global state and manage. This should cause 170 // Reset global state and manage. This should cause
165 // our memory usage to drop to zero. 171 // our memory usage to drop to zero.
166 global_state_ = GlobalStateThatImpactsTilePriority(); 172 global_state_ = GlobalStateThatImpactsTilePriority();
167 173
168 DCHECK_EQ(0u, tiles_.size()); 174 DCHECK_EQ(0u, tiles_.size());
169 175
(...skipping 544 matching lines...) Expand 10 before | Expand all | Expand 10 after
714 tile->layer_id(), 720 tile->layer_id(),
715 base::Unretained(pixel_ref))); 721 base::Unretained(pixel_ref)));
716 } 722 }
717 723
718 RasterWorkerPool::RasterTask TileManager::CreateRasterTask(Tile* tile) { 724 RasterWorkerPool::RasterTask TileManager::CreateRasterTask(Tile* tile) {
719 ManagedTileState& mts = tile->managed_state(); 725 ManagedTileState& mts = tile->managed_state();
720 726
721 scoped_ptr<ResourcePool::Resource> resource = 727 scoped_ptr<ResourcePool::Resource> resource =
722 resource_pool_->AcquireResource( 728 resource_pool_->AcquireResource(
723 tile->tile_size_.size(), 729 tile->tile_size_.size(),
724 raster_worker_pool_->GetResourceFormat()); 730 raster_worker_pool_->GetResourceFormat(),
731 texture_type_);
732
725 const Resource* const_resource = resource.get(); 733 const Resource* const_resource = resource.get();
726 734
727 // Create and queue all image decode tasks that this tile depends on. 735 // Create and queue all image decode tasks that this tile depends on.
728 RasterWorkerPool::Task::Set decode_tasks; 736 RasterWorkerPool::Task::Set decode_tasks;
729 PixelRefTaskMap& existing_pixel_refs = image_decode_tasks_[tile->layer_id()]; 737 PixelRefTaskMap& existing_pixel_refs = image_decode_tasks_[tile->layer_id()];
730 for (PicturePileImpl::PixelRefIterator iter(tile->content_rect(), 738 for (PicturePileImpl::PixelRefIterator iter(tile->content_rect(),
731 tile->contents_scale(), 739 tile->contents_scale(),
732 tile->picture_pile()); 740 tile->picture_pile());
733 iter; ++iter) { 741 iter; ++iter) {
734 skia::LazyPixelRef* pixel_ref = *iter; 742 skia::LazyPixelRef* pixel_ref = *iter;
(...skipping 23 matching lines...) Expand all
758 mts.resolution, 766 mts.resolution,
759 tile->layer_id(), 767 tile->layer_id(),
760 static_cast<const void *>(tile), 768 static_cast<const void *>(tile),
761 tile->source_frame_number(), 769 tile->source_frame_number(),
762 rendering_stats_instrumentation_, 770 rendering_stats_instrumentation_,
763 base::Bind(&TileManager::OnRasterTaskCompleted, 771 base::Bind(&TileManager::OnRasterTaskCompleted,
764 base::Unretained(this), 772 base::Unretained(this),
765 tile->id(), 773 tile->id(),
766 base::Passed(&resource), 774 base::Passed(&resource),
767 mts.raster_mode), 775 mts.raster_mode),
768 &decode_tasks); 776 &decode_tasks,
777 texture_type_);
769 } 778 }
770 779
771 void TileManager::OnImageDecodeTaskCompleted( 780 void TileManager::OnImageDecodeTaskCompleted(
772 int layer_id, 781 int layer_id,
773 skia::LazyPixelRef* pixel_ref, 782 skia::LazyPixelRef* pixel_ref,
774 bool was_canceled) { 783 bool was_canceled) {
775 // If the task was canceled, we need to clean it up 784 // If the task was canceled, we need to clean it up
776 // from |image_decode_tasks_|. 785 // from |image_decode_tasks_|.
777 if (!was_canceled) 786 if (!was_canceled)
778 return; 787 return;
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
830 bytes_releasable_ += tile->bytes_consumed_if_allocated(); 839 bytes_releasable_ += tile->bytes_consumed_if_allocated();
831 ++resources_releasable_; 840 ++resources_releasable_;
832 } 841 }
833 842
834 FreeUnusedResourcesForTile(tile); 843 FreeUnusedResourcesForTile(tile);
835 if (tile->priority(ACTIVE_TREE).distance_to_visible_in_pixels == 0) 844 if (tile->priority(ACTIVE_TREE).distance_to_visible_in_pixels == 0)
836 did_initialize_visible_tile_ = true; 845 did_initialize_visible_tile_ = true;
837 } 846 }
838 847
839 } // namespace cc 848 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698