Chromium Code Reviews| 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 |