| 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 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 62 return EVENTUALLY_BIN; | 62 return EVENTUALLY_BIN; |
| 63 } | 63 } |
| 64 | 64 |
| 65 std::string ValueToString(scoped_ptr<base::Value> value) | 65 std::string ValueToString(scoped_ptr<base::Value> value) |
| 66 { | 66 { |
| 67 std::string str; | 67 std::string str; |
| 68 base::JSONWriter::Write(value.get(), &str); | 68 base::JSONWriter::Write(value.get(), &str); |
| 69 return str; | 69 return str; |
| 70 } | 70 } |
| 71 | 71 |
| 72 RasterTaskMetadata GetRasterTaskMetadata(const ManagedTileState& mts) { |
| 73 RasterTaskMetadata raster_task_metadata; |
| 74 raster_task_metadata.is_tile_in_pending_tree_now_bin = |
| 75 mts.tree_bin[PENDING_TREE] == NOW_BIN; |
| 76 raster_task_metadata.tile_resolution = mts.resolution; |
| 77 return raster_task_metadata; |
| 78 } |
| 79 |
| 72 } // namespace | 80 } // namespace |
| 73 | 81 |
| 74 scoped_ptr<base::Value> TileManagerBinAsValue(TileManagerBin bin) { | 82 scoped_ptr<base::Value> TileManagerBinAsValue(TileManagerBin bin) { |
| 75 switch (bin) { | 83 switch (bin) { |
| 76 case NOW_BIN: | 84 case NOW_BIN: |
| 77 return scoped_ptr<base::Value>(base::Value::CreateStringValue( | 85 return scoped_ptr<base::Value>(base::Value::CreateStringValue( |
| 78 "NOW_BIN")); | 86 "NOW_BIN")); |
| 79 case SOON_BIN: | 87 case SOON_BIN: |
| 80 return scoped_ptr<base::Value>(base::Value::CreateStringValue( | 88 return scoped_ptr<base::Value>(base::Value::CreateStringValue( |
| 81 "SOON_BIN")); | 89 "SOON_BIN")); |
| (...skipping 682 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 764 scoped_ptr<ResourcePool::Resource> resource = PrepareTileForRaster(tile); | 772 scoped_ptr<ResourcePool::Resource> resource = PrepareTileForRaster(tile); |
| 765 ResourceProvider::ResourceId resource_id = resource->id(); | 773 ResourceProvider::ResourceId resource_id = resource->id(); |
| 766 | 774 |
| 767 raster_worker_pool_->PostRasterTaskAndReply( | 775 raster_worker_pool_->PostRasterTaskAndReply( |
| 768 tile->picture_pile(), | 776 tile->picture_pile(), |
| 769 base::Bind(&TileManager::PerformRaster, | 777 base::Bind(&TileManager::PerformRaster, |
| 770 resource_pool_->resource_provider()->mapPixelBuffer( | 778 resource_pool_->resource_provider()->mapPixelBuffer( |
| 771 resource_id), | 779 resource_id), |
| 772 tile->content_rect_, | 780 tile->content_rect_, |
| 773 tile->contents_scale(), | 781 tile->contents_scale(), |
| 774 use_cheapness_estimator_), | 782 use_cheapness_estimator_, |
| 783 GetRasterTaskMetadata(tile->managed_state())), |
| 775 base::Bind(&TileManager::OnRasterTaskCompleted, | 784 base::Bind(&TileManager::OnRasterTaskCompleted, |
| 776 base::Unretained(this), | 785 base::Unretained(this), |
| 777 tile, | 786 tile, |
| 778 base::Passed(&resource), | 787 base::Passed(&resource), |
| 779 manage_tiles_call_count_)); | 788 manage_tiles_call_count_)); |
| 780 } | 789 } |
| 781 | 790 |
| 782 void TileManager::PerformOneRaster(Tile* tile) { | 791 void TileManager::PerformOneRaster(Tile* tile) { |
| 783 scoped_ptr<ResourcePool::Resource> resource = PrepareTileForRaster(tile); | 792 scoped_ptr<ResourcePool::Resource> resource = PrepareTileForRaster(tile); |
| 784 ResourceProvider::ResourceId resource_id = resource->id(); | 793 ResourceProvider::ResourceId resource_id = resource->id(); |
| 785 | 794 |
| 786 PerformRaster(resource_pool_->resource_provider()->mapPixelBuffer( | 795 PerformRaster(resource_pool_->resource_provider()->mapPixelBuffer( |
| 787 resource_id), | 796 resource_id), |
| 788 tile->content_rect_, | 797 tile->content_rect_, |
| 789 tile->contents_scale(), | 798 tile->contents_scale(), |
| 790 use_cheapness_estimator_, | 799 use_cheapness_estimator_, |
| 800 GetRasterTaskMetadata(tile->managed_state()), |
| 791 tile->picture_pile(), | 801 tile->picture_pile(), |
| 792 &rendering_stats_); | 802 &rendering_stats_); |
| 793 | 803 |
| 794 OnRasterCompleted(tile, resource.Pass(), manage_tiles_call_count_); | 804 OnRasterCompleted(tile, resource.Pass(), manage_tiles_call_count_); |
| 795 } | 805 } |
| 796 | 806 |
| 797 void TileManager::OnRasterCompleted( | 807 void TileManager::OnRasterCompleted( |
| 798 scoped_refptr<Tile> tile, | 808 scoped_refptr<Tile> tile, |
| 799 scoped_ptr<ResourcePool::Resource> resource, | 809 scoped_ptr<ResourcePool::Resource> resource, |
| 800 int manage_tiles_call_count_when_dispatched) { | 810 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]; | 896 ++raster_state_count_[mts.raster_state][tree][new_tree_bin]; |
| 887 | 897 |
| 888 mts.tree_bin[tree] = new_tree_bin; | 898 mts.tree_bin[tree] = new_tree_bin; |
| 889 } | 899 } |
| 890 | 900 |
| 891 // static | 901 // static |
| 892 void TileManager::PerformRaster(uint8* buffer, | 902 void TileManager::PerformRaster(uint8* buffer, |
| 893 const gfx::Rect& rect, | 903 const gfx::Rect& rect, |
| 894 float contents_scale, | 904 float contents_scale, |
| 895 bool use_cheapness_estimator, | 905 bool use_cheapness_estimator, |
| 906 const RasterTaskMetadata& raster_task_metadata, |
| 896 PicturePileImpl* picture_pile, | 907 PicturePileImpl* picture_pile, |
| 897 RenderingStats* stats) { | 908 RenderingStats* stats) { |
| 898 TRACE_EVENT0("cc", "TileManager::PerformRaster"); | 909 TRACE_EVENT2( |
| 910 "cc", "TileManager::PerformRaster", |
| 911 "is_on_pending_tree", |
| 912 raster_task_metadata.is_tile_in_pending_tree_now_bin, |
| 913 "is_low_res", |
| 914 raster_task_metadata.tile_resolution == LOW_RESOLUTION); |
| 915 |
| 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 |