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

Side by Side Diff: cc/layers/picture_layer_impl.cc

Issue 196023015: Revert of cc: Replace recorded region with direct map lookup (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 9 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/layers/picture_layer.cc ('k') | cc/layers/picture_layer_impl_unittest.cc » ('j') | 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/layers/picture_layer_impl.h" 5 #include "cc/layers/picture_layer_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <limits> 8 #include <limits>
9 9
10 #include "base/time/time.h" 10 #include "base/time/time.h"
(...skipping 837 matching lines...) Expand 10 before | Expand all | Expand 10 after
848 848
849 needs_post_commit_initialization_ = false; 849 needs_post_commit_initialization_ = false;
850 } 850 }
851 851
852 PictureLayerTiling* PictureLayerImpl::AddTiling(float contents_scale) { 852 PictureLayerTiling* PictureLayerImpl::AddTiling(float contents_scale) {
853 DCHECK(CanHaveTilingWithScale(contents_scale)) << 853 DCHECK(CanHaveTilingWithScale(contents_scale)) <<
854 "contents_scale: " << contents_scale; 854 "contents_scale: " << contents_scale;
855 855
856 PictureLayerTiling* tiling = tilings_->AddTiling(contents_scale); 856 PictureLayerTiling* tiling = tilings_->AddTiling(contents_scale);
857 857
858 DCHECK(pile_->HasRecordings()); 858 const Region& recorded = pile_->recorded_region();
859 DCHECK(!recorded.IsEmpty());
859 860
860 if (twin_layer_ && twin_layer_->should_use_gpu_rasterization() == 861 if (twin_layer_ && twin_layer_->should_use_gpu_rasterization() ==
861 should_use_gpu_rasterization()) 862 should_use_gpu_rasterization())
862 twin_layer_->SyncTiling(tiling); 863 twin_layer_->SyncTiling(tiling);
863 864
864 return tiling; 865 return tiling;
865 } 866 }
866 867
867 void PictureLayerImpl::RemoveTiling(float contents_scale) { 868 void PictureLayerImpl::RemoveTiling(float contents_scale) {
868 for (size_t i = 0; i < tilings_->num_tilings(); ++i) { 869 for (size_t i = 0; i < tilings_->num_tilings(); ++i) {
(...skipping 290 matching lines...) Expand 10 before | Expand all | Expand 10 after
1159 low_res_raster_contents_scale_ = 0.f; 1160 low_res_raster_contents_scale_ = 0.f;
1160 1161
1161 // When raster scales aren't valid, don't update tile priorities until 1162 // When raster scales aren't valid, don't update tile priorities until
1162 // this layer has been updated via UpdateDrawProperties. 1163 // this layer has been updated via UpdateDrawProperties.
1163 should_update_tile_priorities_ = false; 1164 should_update_tile_priorities_ = false;
1164 } 1165 }
1165 1166
1166 bool PictureLayerImpl::CanHaveTilings() const { 1167 bool PictureLayerImpl::CanHaveTilings() const {
1167 if (!DrawsContent()) 1168 if (!DrawsContent())
1168 return false; 1169 return false;
1169 if (!pile_->HasRecordings()) 1170 if (pile_->recorded_region().IsEmpty())
1170 return false; 1171 return false;
1171 return true; 1172 return true;
1172 } 1173 }
1173 1174
1174 bool PictureLayerImpl::CanHaveTilingWithScale(float contents_scale) const { 1175 bool PictureLayerImpl::CanHaveTilingWithScale(float contents_scale) const {
1175 if (!CanHaveTilings()) 1176 if (!CanHaveTilings())
1176 return false; 1177 return false;
1177 if (contents_scale < MinimumContentsScale()) 1178 if (contents_scale < MinimumContentsScale())
1178 return false; 1179 return false;
1179 return true; 1180 return true;
(...skipping 24 matching lines...) Expand all
1204 1205
1205 void PictureLayerImpl::AsValueInto(base::DictionaryValue* state) const { 1206 void PictureLayerImpl::AsValueInto(base::DictionaryValue* state) const {
1206 const_cast<PictureLayerImpl*>(this)->DoPostCommitInitializationIfNeeded(); 1207 const_cast<PictureLayerImpl*>(this)->DoPostCommitInitializationIfNeeded();
1207 LayerImpl::AsValueInto(state); 1208 LayerImpl::AsValueInto(state);
1208 state->SetDouble("ideal_contents_scale", ideal_contents_scale_); 1209 state->SetDouble("ideal_contents_scale", ideal_contents_scale_);
1209 state->SetDouble("geometry_contents_scale", contents_scale_x()); 1210 state->SetDouble("geometry_contents_scale", contents_scale_x());
1210 state->Set("tilings", tilings_->AsValue().release()); 1211 state->Set("tilings", tilings_->AsValue().release());
1211 state->Set("pictures", pile_->AsValue().release()); 1212 state->Set("pictures", pile_->AsValue().release());
1212 state->Set("invalidation", invalidation_.AsValue().release()); 1213 state->Set("invalidation", invalidation_.AsValue().release());
1213 1214
1215 Region unrecorded_region(gfx::Rect(pile_->size()));
1216 unrecorded_region.Subtract(pile_->recorded_region());
1217 if (!unrecorded_region.IsEmpty())
1218 state->Set("unrecorded_region", unrecorded_region.AsValue().release());
1219
1214 scoped_ptr<base::ListValue> coverage_tiles(new base::ListValue); 1220 scoped_ptr<base::ListValue> coverage_tiles(new base::ListValue);
1215 for (PictureLayerTilingSet::CoverageIterator iter(tilings_.get(), 1221 for (PictureLayerTilingSet::CoverageIterator iter(tilings_.get(),
1216 contents_scale_x(), 1222 contents_scale_x(),
1217 gfx::Rect(content_bounds()), 1223 gfx::Rect(content_bounds()),
1218 ideal_contents_scale_); 1224 ideal_contents_scale_);
1219 iter; 1225 iter;
1220 ++iter) { 1226 ++iter) {
1221 scoped_ptr<base::DictionaryValue> tile_data(new base::DictionaryValue); 1227 scoped_ptr<base::DictionaryValue> tile_data(new base::DictionaryValue);
1222 tile_data->Set("geometry_rect", 1228 tile_data->Set("geometry_rect",
1223 MathUtil::AsValue(iter.geometry_rect()).release()); 1229 MathUtil::AsValue(iter.geometry_rect()).release());
1224 if (*iter) 1230 if (*iter)
1225 tile_data->Set("tile", TracedValue::CreateIDRef(*iter).release()); 1231 tile_data->Set("tile", TracedValue::CreateIDRef(*iter).release());
1226 1232
1227 coverage_tiles->Append(tile_data.release()); 1233 coverage_tiles->Append(tile_data.release());
1228 } 1234 }
1229 state->Set("coverage_tiles", coverage_tiles.release()); 1235 state->Set("coverage_tiles", coverage_tiles.release());
1230 state->SetBoolean("is_using_lcd_text", is_using_lcd_text_); 1236 state->SetBoolean("is_using_lcd_text", is_using_lcd_text_);
1231 } 1237 }
1232 1238
1233 size_t PictureLayerImpl::GPUMemoryUsageInBytes() const { 1239 size_t PictureLayerImpl::GPUMemoryUsageInBytes() const {
1234 const_cast<PictureLayerImpl*>(this)->DoPostCommitInitializationIfNeeded(); 1240 const_cast<PictureLayerImpl*>(this)->DoPostCommitInitializationIfNeeded();
1235 return tilings_->GPUMemoryUsageInBytes(); 1241 return tilings_->GPUMemoryUsageInBytes();
1236 } 1242 }
1237 1243
1238 void PictureLayerImpl::RunMicroBenchmark(MicroBenchmarkImpl* benchmark) { 1244 void PictureLayerImpl::RunMicroBenchmark(MicroBenchmarkImpl* benchmark) {
1239 benchmark->RunOnLayer(this); 1245 benchmark->RunOnLayer(this);
1240 } 1246 }
1241 1247
1242 } // namespace cc 1248 } // namespace cc
OLDNEW
« no previous file with comments | « cc/layers/picture_layer.cc ('k') | cc/layers/picture_layer_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698