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

Side by Side Diff: cc/tile_manager.cc

Issue 12258004: [cc] Pass metadata about a tile to the raster system for benchmarks (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: nitfix Created 7 years, 10 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/tile_manager.h ('k') | no next file » | 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/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
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
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
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
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
OLDNEW
« no previous file with comments | « cc/tile_manager.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698