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 |