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

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

Issue 111143005: cc: Gather and lock/unlock SkDiscardablePixelRefs instead of skia::LazyPixelRefs. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: s/lazy/discardable/ to fix cc_unittests Created 6 years, 11 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 | Annotate | Revision Log
« no previous file with comments | « cc/resources/tile_manager.h ('k') | cc/test/skia_common.h » ('j') | 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/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 816 matching lines...) Expand 10 before | Expand all | Expand 10 after
827 827
828 // Schedule running of |tasks|. This replaces any previously 828 // Schedule running of |tasks|. This replaces any previously
829 // scheduled tasks and effectively cancels all tasks not present 829 // scheduled tasks and effectively cancels all tasks not present
830 // in |tasks|. 830 // in |tasks|.
831 raster_worker_pool_->ScheduleTasks(&tasks); 831 raster_worker_pool_->ScheduleTasks(&tasks);
832 832
833 did_check_for_completed_tasks_since_last_schedule_tasks_ = false; 833 did_check_for_completed_tasks_since_last_schedule_tasks_ = false;
834 } 834 }
835 835
836 RasterWorkerPool::Task TileManager::CreateImageDecodeTask( 836 RasterWorkerPool::Task TileManager::CreateImageDecodeTask(
837 Tile* tile, skia::LazyPixelRef* pixel_ref) { 837 Tile* tile, SkPixelRef* pixel_ref) {
838 return RasterWorkerPool::CreateImageDecodeTask( 838 return RasterWorkerPool::CreateImageDecodeTask(
839 pixel_ref, 839 pixel_ref,
840 tile->layer_id(), 840 tile->layer_id(),
841 rendering_stats_instrumentation_, 841 rendering_stats_instrumentation_,
842 base::Bind(&TileManager::OnImageDecodeTaskCompleted, 842 base::Bind(&TileManager::OnImageDecodeTaskCompleted,
843 base::Unretained(this), 843 base::Unretained(this),
844 tile->layer_id(), 844 tile->layer_id(),
845 base::Unretained(pixel_ref))); 845 base::Unretained(pixel_ref)));
846 } 846 }
847 847
848 RasterWorkerPool::RasterTask TileManager::CreateRasterTask(Tile* tile) { 848 RasterWorkerPool::RasterTask TileManager::CreateRasterTask(Tile* tile) {
849 ManagedTileState& mts = tile->managed_state(); 849 ManagedTileState& mts = tile->managed_state();
850 850
851 scoped_ptr<ScopedResource> resource = 851 scoped_ptr<ScopedResource> resource =
852 resource_pool_->AcquireResource(tile->tile_size_.size()); 852 resource_pool_->AcquireResource(tile->tile_size_.size());
853 const ScopedResource* const_resource = resource.get(); 853 const ScopedResource* const_resource = resource.get();
854 854
855 // Create and queue all image decode tasks that this tile depends on. 855 // Create and queue all image decode tasks that this tile depends on.
856 RasterWorkerPool::Task::Set decode_tasks; 856 RasterWorkerPool::Task::Set decode_tasks;
857 PixelRefTaskMap& existing_pixel_refs = image_decode_tasks_[tile->layer_id()]; 857 PixelRefTaskMap& existing_pixel_refs = image_decode_tasks_[tile->layer_id()];
858 for (PicturePileImpl::PixelRefIterator iter(tile->content_rect(), 858 for (PicturePileImpl::PixelRefIterator iter(tile->content_rect(),
859 tile->contents_scale(), 859 tile->contents_scale(),
860 tile->picture_pile()); 860 tile->picture_pile());
861 iter; ++iter) { 861 iter; ++iter) {
862 skia::LazyPixelRef* pixel_ref = *iter; 862 SkPixelRef* pixel_ref = *iter;
863 uint32_t id = pixel_ref->getGenerationID(); 863 uint32_t id = pixel_ref->getGenerationID();
864 864
865 // Append existing image decode task if available. 865 // Append existing image decode task if available.
866 PixelRefTaskMap::iterator decode_task_it = existing_pixel_refs.find(id); 866 PixelRefTaskMap::iterator decode_task_it = existing_pixel_refs.find(id);
867 if (decode_task_it != existing_pixel_refs.end()) { 867 if (decode_task_it != existing_pixel_refs.end()) {
868 decode_tasks.Insert(decode_task_it->second); 868 decode_tasks.Insert(decode_task_it->second);
869 continue; 869 continue;
870 } 870 }
871 871
872 // Create and append new image decode task for this pixel ref. 872 // Create and append new image decode task for this pixel ref.
(...skipping 17 matching lines...) Expand all
890 base::Bind(&TileManager::OnRasterTaskCompleted, 890 base::Bind(&TileManager::OnRasterTaskCompleted,
891 base::Unretained(this), 891 base::Unretained(this),
892 tile->id(), 892 tile->id(),
893 base::Passed(&resource), 893 base::Passed(&resource),
894 mts.raster_mode), 894 mts.raster_mode),
895 &decode_tasks); 895 &decode_tasks);
896 } 896 }
897 897
898 void TileManager::OnImageDecodeTaskCompleted( 898 void TileManager::OnImageDecodeTaskCompleted(
899 int layer_id, 899 int layer_id,
900 skia::LazyPixelRef* pixel_ref, 900 SkPixelRef* pixel_ref,
901 bool was_canceled) { 901 bool was_canceled) {
902 // If the task was canceled, we need to clean it up 902 // If the task was canceled, we need to clean it up
903 // from |image_decode_tasks_|. 903 // from |image_decode_tasks_|.
904 if (!was_canceled) 904 if (!was_canceled)
905 return; 905 return;
906 906
907 LayerPixelRefTaskMap::iterator layer_it = 907 LayerPixelRefTaskMap::iterator layer_it =
908 image_decode_tasks_.find(layer_id); 908 image_decode_tasks_.find(layer_id);
909 909
910 if (layer_it == image_decode_tasks_.end()) 910 if (layer_it == image_decode_tasks_.end())
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
982 flags)); 982 flags));
983 DCHECK(tiles_.find(tile->id()) == tiles_.end()); 983 DCHECK(tiles_.find(tile->id()) == tiles_.end());
984 984
985 tiles_[tile->id()] = tile; 985 tiles_[tile->id()] = tile;
986 used_layer_counts_[tile->layer_id()]++; 986 used_layer_counts_[tile->layer_id()]++;
987 prioritized_tiles_dirty_ = true; 987 prioritized_tiles_dirty_ = true;
988 return tile; 988 return tile;
989 } 989 }
990 990
991 } // namespace cc 991 } // namespace cc
OLDNEW
« no previous file with comments | « cc/resources/tile_manager.h ('k') | cc/test/skia_common.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698