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

Side by Side Diff: cc/resources/tile_manager.cc

Issue 706203003: Update from https://crrev.com/303153 (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 6 years, 1 month 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
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/resources/tile_manager.h" 5 #include "cc/resources/tile_manager.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <limits> 8 #include <limits>
9 #include <string> 9 #include <string>
10 10
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
89 protected: 89 protected:
90 ~RasterTaskImpl() override { DCHECK(!raster_buffer_); } 90 ~RasterTaskImpl() override { DCHECK(!raster_buffer_); }
91 91
92 private: 92 private:
93 void Analyze(const RasterSource* raster_source) { 93 void Analyze(const RasterSource* raster_source) {
94 frame_viewer_instrumentation::ScopedAnalyzeTask analyze_task( 94 frame_viewer_instrumentation::ScopedAnalyzeTask analyze_task(
95 tile_id_, tile_resolution_, source_frame_number_, layer_id_); 95 tile_id_, tile_resolution_, source_frame_number_, layer_id_);
96 96
97 DCHECK(raster_source); 97 DCHECK(raster_source);
98 98
99 raster_source->PerformSolidColorAnalysis( 99 raster_source->PerformSolidColorAnalysis(content_rect_, contents_scale_,
100 content_rect_, contents_scale_, &analysis_, rendering_stats_); 100 &analysis_);
101 101
102 // Record the solid color prediction. 102 // Record the solid color prediction.
103 UMA_HISTOGRAM_BOOLEAN("Renderer4.SolidColorTilesAnalyzed", 103 UMA_HISTOGRAM_BOOLEAN("Renderer4.SolidColorTilesAnalyzed",
104 analysis_.is_solid_color); 104 analysis_.is_solid_color);
105 105
106 // Clear the flag if we're not using the estimator. 106 // Clear the flag if we're not using the estimator.
107 analysis_.is_solid_color &= kUseColorEstimator; 107 analysis_.is_solid_color &= kUseColorEstimator;
108 } 108 }
109 109
110 void Raster(const RasterSource* raster_source) { 110 void Raster(const RasterSource* raster_source) {
111 frame_viewer_instrumentation::ScopedRasterTask raster_task( 111 frame_viewer_instrumentation::ScopedRasterTask raster_task(
112 tile_id_, tile_resolution_, source_frame_number_, layer_id_); 112 tile_id_, tile_resolution_, source_frame_number_, layer_id_);
113 devtools_instrumentation::ScopedLayerTask layer_task( 113 devtools_instrumentation::ScopedLayerTask layer_task(
114 devtools_instrumentation::kRasterTask, layer_id_); 114 devtools_instrumentation::kRasterTask, layer_id_);
115 115
116 base::TimeDelta prev_rasterize_time =
117 rendering_stats_->impl_thread_rendering_stats().rasterize_time;
118
119 // Only record rasterization time for highres tiles, because
120 // lowres tiles are not required for activation and therefore
121 // introduce noise in the measurement (sometimes they get rasterized
122 // before we draw and sometimes they aren't)
123 RenderingStatsInstrumentation* stats =
124 tile_resolution_ == HIGH_RESOLUTION ? rendering_stats_ : NULL;
125 DCHECK(raster_source); 116 DCHECK(raster_source);
126 117
127 raster_buffer_->Playback( 118 raster_buffer_->Playback(raster_source_.get(), content_rect_,
128 raster_source_.get(), content_rect_, contents_scale_, stats); 119 contents_scale_);
129
130 if (rendering_stats_->record_rendering_stats()) {
131 base::TimeDelta current_rasterize_time =
132 rendering_stats_->impl_thread_rendering_stats().rasterize_time;
133 LOCAL_HISTOGRAM_CUSTOM_COUNTS(
134 "Renderer4.PictureRasterTimeUS",
135 (current_rasterize_time - prev_rasterize_time).InMicroseconds(),
136 0,
137 100000,
138 100);
139 }
140 } 120 }
141 121
142 RasterSource::SolidColorAnalysis analysis_; 122 RasterSource::SolidColorAnalysis analysis_;
143 scoped_refptr<RasterSource> raster_source_; 123 scoped_refptr<RasterSource> raster_source_;
144 gfx::Rect content_rect_; 124 gfx::Rect content_rect_;
145 float contents_scale_; 125 float contents_scale_;
146 TileResolution tile_resolution_; 126 TileResolution tile_resolution_;
147 int layer_id_; 127 int layer_id_;
148 const void* tile_id_; 128 const void* tile_id_;
149 int source_frame_number_; 129 int source_frame_number_;
(...skipping 424 matching lines...) Expand 10 before | Expand all | Expand 10 after
574 554
575 // We won't be able to schedule this tile, so break out early. 555 // We won't be able to schedule this tile, so break out early.
576 if (tiles_that_need_to_be_rasterized->size() >= 556 if (tiles_that_need_to_be_rasterized->size() >=
577 scheduled_raster_task_limit_) { 557 scheduled_raster_task_limit_) {
578 all_tiles_that_need_to_be_rasterized_are_scheduled_ = false; 558 all_tiles_that_need_to_be_rasterized_are_scheduled_ = false;
579 break; 559 break;
580 } 560 }
581 561
582 ManagedTileState& mts = tile->managed_state(); 562 ManagedTileState& mts = tile->managed_state();
583 mts.scheduled_priority = schedule_priority++; 563 mts.scheduled_priority = schedule_priority++;
564 mts.resolution = priority.resolution;
584 565
585 DCHECK(mts.draw_info.mode() == 566 DCHECK(mts.draw_info.mode() ==
586 ManagedTileState::DrawInfo::PICTURE_PILE_MODE || 567 ManagedTileState::DrawInfo::PICTURE_PILE_MODE ||
587 !mts.draw_info.IsReadyToDraw()); 568 !mts.draw_info.IsReadyToDraw());
588 569
589 // If the tile already has a raster_task, then the memory used by it is 570 // If the tile already has a raster_task, then the memory used by it is
590 // already accounted for in memory_usage. Otherwise, we'll have to acquire 571 // already accounted for in memory_usage. Otherwise, we'll have to acquire
591 // more memory to create a raster task. 572 // more memory to create a raster task.
592 MemoryUsage memory_required_by_tile_to_be_scheduled; 573 MemoryUsage memory_required_by_tile_to_be_scheduled;
593 if (!mts.raster_task.get()) { 574 if (!mts.raster_task.get()) {
(...skipping 255 matching lines...) Expand 10 before | Expand all | Expand 10 after
849 used_layer_counts_[tile->layer_id()]++; 830 used_layer_counts_[tile->layer_id()]++;
850 return tile; 831 return tile;
851 } 832 }
852 833
853 void TileManager::SetRasterizerForTesting(Rasterizer* rasterizer) { 834 void TileManager::SetRasterizerForTesting(Rasterizer* rasterizer) {
854 rasterizer_ = rasterizer; 835 rasterizer_ = rasterizer;
855 rasterizer_->SetClient(this); 836 rasterizer_->SetClient(this);
856 } 837 }
857 838
858 bool TileManager::IsReadyToActivate() const { 839 bool TileManager::IsReadyToActivate() const {
840 TRACE_EVENT0("cc", "TileManager::IsReadyToActivate");
859 const std::vector<PictureLayerImpl*>& layers = client_->GetPictureLayers(); 841 const std::vector<PictureLayerImpl*>& layers = client_->GetPictureLayers();
860 842
861 for (std::vector<PictureLayerImpl*>::const_iterator it = layers.begin(); 843 for (std::vector<PictureLayerImpl*>::const_iterator it = layers.begin();
862 it != layers.end(); 844 it != layers.end();
863 ++it) { 845 ++it) {
864 if (!(*it)->AllTilesRequiredForActivationAreReadyToDraw()) 846 if (!(*it)->AllTilesRequiredForActivationAreReadyToDraw())
865 return false; 847 return false;
866 } 848 }
867 849
868 return true; 850 return true;
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
922 result -= other; 904 result -= other;
923 return result; 905 return result;
924 } 906 }
925 907
926 bool TileManager::MemoryUsage::Exceeds(const MemoryUsage& limit) const { 908 bool TileManager::MemoryUsage::Exceeds(const MemoryUsage& limit) const {
927 return memory_bytes_ > limit.memory_bytes_ || 909 return memory_bytes_ > limit.memory_bytes_ ||
928 resource_count_ > limit.resource_count_; 910 resource_count_ > limit.resource_count_;
929 } 911 }
930 912
931 } // namespace cc 913 } // namespace cc
OLDNEW
« no previous file with comments | « cc/resources/raster_worker_pool_unittest.cc ('k') | cc/resources/zero_copy_raster_worker_pool.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698