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

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: 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
« cc/tile_manager.h ('K') | « 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 741 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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
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
« cc/tile_manager.h ('K') | « cc/tile_manager.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698