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/tile_manager.h" | 5 #include "cc/tile_manager.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/debug/trace_event.h" | 10 #include "base/debug/trace_event.h" |
(...skipping 741 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
752 resource_pool_->AcquireResource(tile->tile_size_.size(), tile->format_); | 752 resource_pool_->AcquireResource(tile->tile_size_.size(), tile->format_); |
753 resource_pool_->resource_provider()->acquirePixelBuffer(resource->id()); | 753 resource_pool_->resource_provider()->acquirePixelBuffer(resource->id()); |
754 | 754 |
755 managed_tile_state.resource_is_being_initialized = true; | 755 managed_tile_state.resource_is_being_initialized = true; |
756 managed_tile_state.can_be_freed = false; | 756 managed_tile_state.can_be_freed = false; |
757 | 757 |
758 DidTileRasterStateChange(tile, RASTER_STATE); | 758 DidTileRasterStateChange(tile, RASTER_STATE); |
759 return resource.Pass(); | 759 return resource.Pass(); |
760 } | 760 } |
761 | 761 |
762 namespace { | |
reveman
2013/02/13 10:24:39
we already have an anonymous namespace section at
| |
763 | |
764 RasterTaskMetadata GetRasterTaskMetadata(const ManagedTileState& mts) { | |
765 RasterTaskMetadata raster_task_metadata; | |
766 raster_task_metadata.is_tile_in_pending_tree_now_bin = | |
767 mts.tree_bin[PENDING_TREE] == NOW_BIN; | |
768 raster_task_metadata.tile_resolution = mts.resolution; | |
769 return raster_task_metadata; | |
770 } | |
771 | |
772 } // namespace | |
773 | |
762 void TileManager::DispatchOneRasterTask(scoped_refptr<Tile> tile) { | 774 void TileManager::DispatchOneRasterTask(scoped_refptr<Tile> tile) { |
763 TRACE_EVENT0("cc", "TileManager::DispatchOneRasterTask"); | 775 TRACE_EVENT0("cc", "TileManager::DispatchOneRasterTask"); |
764 scoped_ptr<ResourcePool::Resource> resource = PrepareTileForRaster(tile); | 776 scoped_ptr<ResourcePool::Resource> resource = PrepareTileForRaster(tile); |
765 ResourceProvider::ResourceId resource_id = resource->id(); | 777 ResourceProvider::ResourceId resource_id = resource->id(); |
766 | 778 |
767 raster_worker_pool_->PostRasterTaskAndReply( | 779 raster_worker_pool_->PostRasterTaskAndReply( |
768 tile->picture_pile(), | 780 tile->picture_pile(), |
769 base::Bind(&TileManager::PerformRaster, | 781 base::Bind(&TileManager::PerformRaster, |
770 resource_pool_->resource_provider()->mapPixelBuffer( | 782 resource_pool_->resource_provider()->mapPixelBuffer( |
771 resource_id), | 783 resource_id), |
772 tile->content_rect_, | 784 tile->content_rect_, |
773 tile->contents_scale(), | 785 tile->contents_scale(), |
774 use_cheapness_estimator_), | 786 use_cheapness_estimator_, |
787 GetRasterTaskMetadata(tile->managed_state())), | |
775 base::Bind(&TileManager::OnRasterTaskCompleted, | 788 base::Bind(&TileManager::OnRasterTaskCompleted, |
776 base::Unretained(this), | 789 base::Unretained(this), |
777 tile, | 790 tile, |
778 base::Passed(&resource), | 791 base::Passed(&resource), |
779 manage_tiles_call_count_)); | 792 manage_tiles_call_count_)); |
780 } | 793 } |
781 | 794 |
782 void TileManager::PerformOneRaster(Tile* tile) { | 795 void TileManager::PerformOneRaster(Tile* tile) { |
783 scoped_ptr<ResourcePool::Resource> resource = PrepareTileForRaster(tile); | 796 scoped_ptr<ResourcePool::Resource> resource = PrepareTileForRaster(tile); |
784 ResourceProvider::ResourceId resource_id = resource->id(); | 797 ResourceProvider::ResourceId resource_id = resource->id(); |
785 | 798 |
786 PerformRaster(resource_pool_->resource_provider()->mapPixelBuffer( | 799 PerformRaster(resource_pool_->resource_provider()->mapPixelBuffer( |
787 resource_id), | 800 resource_id), |
788 tile->content_rect_, | 801 tile->content_rect_, |
789 tile->contents_scale(), | 802 tile->contents_scale(), |
790 use_cheapness_estimator_, | 803 use_cheapness_estimator_, |
804 GetRasterTaskMetadata(tile->managed_state()), | |
791 tile->picture_pile(), | 805 tile->picture_pile(), |
792 &rendering_stats_); | 806 &rendering_stats_); |
793 | 807 |
794 OnRasterCompleted(tile, resource.Pass(), manage_tiles_call_count_); | 808 OnRasterCompleted(tile, resource.Pass(), manage_tiles_call_count_); |
795 } | 809 } |
796 | 810 |
797 void TileManager::OnRasterCompleted( | 811 void TileManager::OnRasterCompleted( |
798 scoped_refptr<Tile> tile, | 812 scoped_refptr<Tile> tile, |
799 scoped_ptr<ResourcePool::Resource> resource, | 813 scoped_ptr<ResourcePool::Resource> resource, |
800 int manage_tiles_call_count_when_dispatched) { | 814 int manage_tiles_call_count_when_dispatched) { |
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
886 ++raster_state_count_[mts.raster_state][tree][new_tree_bin]; | 900 ++raster_state_count_[mts.raster_state][tree][new_tree_bin]; |
887 | 901 |
888 mts.tree_bin[tree] = new_tree_bin; | 902 mts.tree_bin[tree] = new_tree_bin; |
889 } | 903 } |
890 | 904 |
891 // static | 905 // static |
892 void TileManager::PerformRaster(uint8* buffer, | 906 void TileManager::PerformRaster(uint8* buffer, |
893 const gfx::Rect& rect, | 907 const gfx::Rect& rect, |
894 float contents_scale, | 908 float contents_scale, |
895 bool use_cheapness_estimator, | 909 bool use_cheapness_estimator, |
910 const RasterTaskMetadata& raster_task_metadata, | |
896 PicturePileImpl* picture_pile, | 911 PicturePileImpl* picture_pile, |
897 RenderingStats* stats) { | 912 RenderingStats* stats) { |
898 TRACE_EVENT0("cc", "TileManager::PerformRaster"); | 913 TRACE_EVENT2("cc", "TileManager::PerformRaster", |
914 "is_on_pending_tree", raster_task_metadata.is_tile_in_pending_tre e_now_bin, | |
915 "is_low_res", raster_task_metadata.tile_resolution == LOW_RESOLUT ION); | |
reveman
2013/02/13 10:24:39
nit: break these lines so they are not too long.
| |
899 DCHECK(picture_pile); | 916 DCHECK(picture_pile); |
900 DCHECK(buffer); | 917 DCHECK(buffer); |
901 SkBitmap bitmap; | 918 SkBitmap bitmap; |
902 bitmap.setConfig(SkBitmap::kARGB_8888_Config, rect.width(), rect.height()); | 919 bitmap.setConfig(SkBitmap::kARGB_8888_Config, rect.width(), rect.height()); |
903 bitmap.setPixels(buffer); | 920 bitmap.setPixels(buffer); |
904 SkDevice device(bitmap); | 921 SkDevice device(bitmap); |
905 SkCanvas canvas(&device); | 922 SkCanvas canvas(&device); |
906 | 923 |
907 base::TimeTicks begin_time; | 924 base::TimeTicks begin_time; |
908 if (stats) | 925 if (stats) |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
953 decode_begin_time = base::TimeTicks::Now(); | 970 decode_begin_time = base::TimeTicks::Now(); |
954 pixel_ref->Decode(); | 971 pixel_ref->Decode(); |
955 if (stats) { | 972 if (stats) { |
956 stats->totalDeferredImageDecodeCount++; | 973 stats->totalDeferredImageDecodeCount++; |
957 stats->totalDeferredImageDecodeTime += | 974 stats->totalDeferredImageDecodeTime += |
958 base::TimeTicks::Now() - decode_begin_time; | 975 base::TimeTicks::Now() - decode_begin_time; |
959 } | 976 } |
960 } | 977 } |
961 | 978 |
962 } // namespace cc | 979 } // namespace cc |
OLD | NEW |