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

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

Issue 2175553002: Raster PictureLayerTiling with fractional translation (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: combined Created 3 years, 8 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
« no previous file with comments | « cc/layers/picture_layer_impl.h ('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 <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <algorithm> 10 #include <algorithm>
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
102 ideal_contents_scale_(0.f), 102 ideal_contents_scale_(0.f),
103 raster_page_scale_(0.f), 103 raster_page_scale_(0.f),
104 raster_device_scale_(0.f), 104 raster_device_scale_(0.f),
105 raster_source_scale_(0.f), 105 raster_source_scale_(0.f),
106 raster_contents_scale_(0.f), 106 raster_contents_scale_(0.f),
107 low_res_raster_contents_scale_(0.f), 107 low_res_raster_contents_scale_(0.f),
108 was_screen_space_transform_animating_(false), 108 was_screen_space_transform_animating_(false),
109 only_used_low_res_last_append_quads_(false), 109 only_used_low_res_last_append_quads_(false),
110 mask_type_(mask_type), 110 mask_type_(mask_type),
111 nearest_neighbor_(false), 111 nearest_neighbor_(false),
112 use_transformed_rasterization_(false),
112 is_directly_composited_image_(false) { 113 is_directly_composited_image_(false) {
113 layer_tree_impl()->RegisterPictureLayerImpl(this); 114 layer_tree_impl()->RegisterPictureLayerImpl(this);
114 } 115 }
115 116
116 PictureLayerImpl::~PictureLayerImpl() { 117 PictureLayerImpl::~PictureLayerImpl() {
117 if (twin_layer_) 118 if (twin_layer_)
118 twin_layer_->twin_layer_ = nullptr; 119 twin_layer_->twin_layer_ = nullptr;
119 layer_tree_impl()->UnregisterPictureLayerImpl(this); 120 layer_tree_impl()->UnregisterPictureLayerImpl(this);
120 } 121 }
121 122
(...skipping 16 matching lines...) Expand all
138 DCHECK(!twin_layer_ || twin_layer_ == layer_impl); 139 DCHECK(!twin_layer_ || twin_layer_ == layer_impl);
139 DCHECK(!twin_layer_ || layer_impl->twin_layer_ == this); 140 DCHECK(!twin_layer_ || layer_impl->twin_layer_ == this);
140 // The twin relationship does not need to exist before the first 141 // The twin relationship does not need to exist before the first
141 // PushPropertiesTo from pending to active layer since before that the active 142 // PushPropertiesTo from pending to active layer since before that the active
142 // layer can not have a pile or tilings, it has only been created and inserted 143 // layer can not have a pile or tilings, it has only been created and inserted
143 // into the tree at that point. 144 // into the tree at that point.
144 twin_layer_ = layer_impl; 145 twin_layer_ = layer_impl;
145 layer_impl->twin_layer_ = this; 146 layer_impl->twin_layer_ = this;
146 147
147 layer_impl->SetNearestNeighbor(nearest_neighbor_); 148 layer_impl->SetNearestNeighbor(nearest_neighbor_);
149 layer_impl->SetUseTransformedRasterization(use_transformed_rasterization_);
148 150
149 // Solid color layers have no tilings. 151 // Solid color layers have no tilings.
150 DCHECK(!raster_source_->IsSolidColor() || tilings_->num_tilings() == 0); 152 DCHECK(!raster_source_->IsSolidColor() || tilings_->num_tilings() == 0);
151 // The pending tree should only have a high res (and possibly low res) tiling. 153 // The pending tree should only have a high res (and possibly low res) tiling.
152 DCHECK_LE(tilings_->num_tilings(), 154 DCHECK_LE(tilings_->num_tilings(),
153 layer_tree_impl()->create_low_res_tiling() ? 2u : 1u); 155 layer_tree_impl()->create_low_res_tiling() ? 2u : 1u);
154 156
155 layer_impl->set_gpu_raster_max_texture_size(gpu_raster_max_texture_size_); 157 layer_impl->set_gpu_raster_max_texture_size(gpu_raster_max_texture_size_);
156 layer_impl->UpdateRasterSource(raster_source_, &invalidation_, 158 layer_impl->UpdateRasterSource(raster_source_, &invalidation_,
157 tilings_.get()); 159 tilings_.get());
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
268 width = DebugColors::OOMTileBorderWidth(device_scale_factor); 270 width = DebugColors::OOMTileBorderWidth(device_scale_factor);
269 } else if (iter->draw_info().has_compressed_resource()) { 271 } else if (iter->draw_info().has_compressed_resource()) {
270 color = DebugColors::CompressedTileBorderColor(); 272 color = DebugColors::CompressedTileBorderColor();
271 width = DebugColors::CompressedTileBorderWidth(device_scale_factor); 273 width = DebugColors::CompressedTileBorderWidth(device_scale_factor);
272 } else if (iter.resolution() == HIGH_RESOLUTION) { 274 } else if (iter.resolution() == HIGH_RESOLUTION) {
273 color = DebugColors::HighResTileBorderColor(); 275 color = DebugColors::HighResTileBorderColor();
274 width = DebugColors::HighResTileBorderWidth(device_scale_factor); 276 width = DebugColors::HighResTileBorderWidth(device_scale_factor);
275 } else if (iter.resolution() == LOW_RESOLUTION) { 277 } else if (iter.resolution() == LOW_RESOLUTION) {
276 color = DebugColors::LowResTileBorderColor(); 278 color = DebugColors::LowResTileBorderColor();
277 width = DebugColors::LowResTileBorderWidth(device_scale_factor); 279 width = DebugColors::LowResTileBorderWidth(device_scale_factor);
278 } else if (iter->contents_scale() > max_contents_scale) { 280 } else if (iter->contents_scale_key() > max_contents_scale) {
279 color = DebugColors::ExtraHighResTileBorderColor(); 281 color = DebugColors::ExtraHighResTileBorderColor();
280 width = DebugColors::ExtraHighResTileBorderWidth(device_scale_factor); 282 width = DebugColors::ExtraHighResTileBorderWidth(device_scale_factor);
281 } else { 283 } else {
282 color = DebugColors::ExtraLowResTileBorderColor(); 284 color = DebugColors::ExtraLowResTileBorderColor();
283 width = DebugColors::ExtraLowResTileBorderWidth(device_scale_factor); 285 width = DebugColors::ExtraLowResTileBorderWidth(device_scale_factor);
284 } 286 }
285 } else { 287 } else {
286 color = DebugColors::MissingTileBorderColor(); 288 color = DebugColors::MissingTileBorderColor();
287 width = DebugColors::MissingTileBorderWidth(device_scale_factor); 289 width = DebugColors::MissingTileBorderWidth(device_scale_factor);
288 } 290 }
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
336 switch (draw_info.mode()) { 338 switch (draw_info.mode()) {
337 case TileDrawInfo::RESOURCE_MODE: { 339 case TileDrawInfo::RESOURCE_MODE: {
338 gfx::RectF texture_rect = iter.texture_rect(); 340 gfx::RectF texture_rect = iter.texture_rect();
339 341
340 // The raster_contents_scale_ is the best scale that the layer is 342 // The raster_contents_scale_ is the best scale that the layer is
341 // trying to produce, even though it may not be ideal. Since that's 343 // trying to produce, even though it may not be ideal. Since that's
342 // the best the layer can promise in the future, consider those as 344 // the best the layer can promise in the future, consider those as
343 // complete. But if a tile is ideal scale, we don't want to consider 345 // complete. But if a tile is ideal scale, we don't want to consider
344 // it incomplete and trying to replace it with a tile at a worse 346 // it incomplete and trying to replace it with a tile at a worse
345 // scale. 347 // scale.
346 if (iter->contents_scale() != raster_contents_scale_ && 348 if (iter->contents_scale_key() != raster_contents_scale_ &&
347 iter->contents_scale() != ideal_contents_scale_ && 349 iter->contents_scale_key() != ideal_contents_scale_ &&
348 geometry_rect.Intersects(scaled_viewport_for_tile_priority)) { 350 geometry_rect.Intersects(scaled_viewport_for_tile_priority)) {
349 append_quads_data->num_incomplete_tiles++; 351 append_quads_data->num_incomplete_tiles++;
350 } 352 }
351 353
352 TileDrawQuad* quad = 354 TileDrawQuad* quad =
353 render_pass->CreateAndAppendDrawQuad<TileDrawQuad>(); 355 render_pass->CreateAndAppendDrawQuad<TileDrawQuad>();
354 quad->SetNew(shared_quad_state, geometry_rect, opaque_rect, 356 quad->SetNew(shared_quad_state, geometry_rect, opaque_rect,
355 visible_geometry_rect, draw_info.resource_id(), 357 visible_geometry_rect, draw_info.resource_id(),
356 texture_rect, draw_info.resource_size(), 358 texture_rect, draw_info.resource_size(),
357 draw_info.contents_swizzled(), nearest_neighbor_); 359 draw_info.contents_swizzled(), nearest_neighbor_);
(...skipping 279 matching lines...) Expand 10 before | Expand all | Expand 10 after
637 639
638 DCHECK(!RasterSourceUsesLCDText()); 640 DCHECK(!RasterSourceUsesLCDText());
639 } 641 }
640 642
641 bool PictureLayerImpl::RasterSourceUsesLCDText() const { 643 bool PictureLayerImpl::RasterSourceUsesLCDText() const {
642 return raster_source_ ? raster_source_->CanUseLCDText() 644 return raster_source_ ? raster_source_->CanUseLCDText()
643 : layer_tree_impl()->settings().can_use_lcd_text; 645 : layer_tree_impl()->settings().can_use_lcd_text;
644 } 646 }
645 647
646 void PictureLayerImpl::NotifyTileStateChanged(const Tile* tile) { 648 void PictureLayerImpl::NotifyTileStateChanged(const Tile* tile) {
647 if (layer_tree_impl()->IsActiveTree()) { 649 if (layer_tree_impl()->IsActiveTree())
648 gfx::Rect layer_damage_rect = gfx::ScaleToEnclosingRect( 650 AddDamageRect(tile->enclosing_layer_rect());
649 tile->content_rect(), 1.f / tile->contents_scale());
650 AddDamageRect(layer_damage_rect);
651 }
652 if (tile->draw_info().NeedsRaster()) { 651 if (tile->draw_info().NeedsRaster()) {
653 PictureLayerTiling* tiling = 652 PictureLayerTiling* tiling =
654 tilings_->FindTilingWithScaleKey(tile->contents_scale()); 653 tilings_->FindTilingWithScaleKey(tile->contents_scale_key());
655 if (tiling) 654 if (tiling)
656 tiling->set_all_tiles_done(false); 655 tiling->set_all_tiles_done(false);
657 } 656 }
658 } 657 }
659 658
659 SimpleEnclosedRegion PictureLayerImpl::VisibleOpaqueRegion() const {
660 if (use_transformed_rasterization_)
661 return SimpleEnclosedRegion();
662 return LayerImpl::VisibleOpaqueRegion();
663 }
664
660 void PictureLayerImpl::DidBeginTracing() { 665 void PictureLayerImpl::DidBeginTracing() {
661 raster_source_->DidBeginTracing(); 666 raster_source_->DidBeginTracing();
662 } 667 }
663 668
664 void PictureLayerImpl::ReleaseResources() { 669 void PictureLayerImpl::ReleaseResources() {
665 // Recreate tilings with new settings, since some of those might change when 670 // Recreate tilings with new settings, since some of those might change when
666 // we release resources. 671 // we release resources.
667 tilings_ = nullptr; 672 tilings_ = nullptr;
668 ResetRasterScale(); 673 ResetRasterScale();
669 } 674 }
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
717 if (PictureLayerImpl* twin_layer = GetPendingOrActiveTwinLayer()) 722 if (PictureLayerImpl* twin_layer = GetPendingOrActiveTwinLayer())
718 return &twin_layer->invalidation_; 723 return &twin_layer->invalidation_;
719 return nullptr; 724 return nullptr;
720 } 725 }
721 726
722 const PictureLayerTiling* PictureLayerImpl::GetPendingOrActiveTwinTiling( 727 const PictureLayerTiling* PictureLayerImpl::GetPendingOrActiveTwinTiling(
723 const PictureLayerTiling* tiling) const { 728 const PictureLayerTiling* tiling) const {
724 PictureLayerImpl* twin_layer = GetPendingOrActiveTwinLayer(); 729 PictureLayerImpl* twin_layer = GetPendingOrActiveTwinLayer();
725 if (!twin_layer) 730 if (!twin_layer)
726 return nullptr; 731 return nullptr;
727 return twin_layer->tilings_->FindTilingWithScaleKey(tiling->contents_scale()); 732 const PictureLayerTiling* twin_tiling =
733 twin_layer->tilings_->FindTilingWithScaleKey(
734 tiling->contents_scale_key());
735 if (twin_tiling &&
736 twin_tiling->raster_transform() == tiling->raster_transform())
737 return twin_tiling;
738 return nullptr;
728 } 739 }
729 740
730 bool PictureLayerImpl::RequiresHighResToDraw() const { 741 bool PictureLayerImpl::RequiresHighResToDraw() const {
731 return layer_tree_impl()->RequiresHighResToDraw(); 742 return layer_tree_impl()->RequiresHighResToDraw();
732 } 743 }
733 744
734 gfx::Rect PictureLayerImpl::GetEnclosingRectInTargetSpace() const { 745 gfx::Rect PictureLayerImpl::GetEnclosingRectInTargetSpace() const {
735 return GetScaledEnclosingRectInTargetSpace(MaximumTilingContentsScale()); 746 return GetScaledEnclosingRectInTargetSpace(MaximumTilingContentsScale());
736 } 747 }
737 748
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
865 } 876 }
866 877
867 void PictureLayerImpl::SetNearestNeighbor(bool nearest_neighbor) { 878 void PictureLayerImpl::SetNearestNeighbor(bool nearest_neighbor) {
868 if (nearest_neighbor_ == nearest_neighbor) 879 if (nearest_neighbor_ == nearest_neighbor)
869 return; 880 return;
870 881
871 nearest_neighbor_ = nearest_neighbor; 882 nearest_neighbor_ = nearest_neighbor;
872 NoteLayerPropertyChanged(); 883 NoteLayerPropertyChanged();
873 } 884 }
874 885
875 PictureLayerTiling* PictureLayerImpl::AddTiling(float contents_scale) { 886 void PictureLayerImpl::SetUseTransformedRasterization(bool use) {
887 if (use_transformed_rasterization_ == use)
888 return;
889
890 use_transformed_rasterization_ = use;
891 NoteLayerPropertyChanged();
892 }
893
894 PictureLayerTiling* PictureLayerImpl::AddTiling(
895 const ScaleTranslate2d& contents_transform) {
876 DCHECK(CanHaveTilings()); 896 DCHECK(CanHaveTilings());
877 DCHECK_GE(contents_scale, MinimumContentsScale()); 897 DCHECK_GE(contents_transform.scale(), MinimumContentsScale());
878 DCHECK_LE(contents_scale, MaximumContentsScale()); 898 DCHECK_LE(contents_transform.scale(), MaximumContentsScale());
879 DCHECK(raster_source_->HasRecordings()); 899 DCHECK(raster_source_->HasRecordings());
880 return tilings_->AddTiling(contents_scale, raster_source_); 900 return tilings_->AddTiling(contents_transform, raster_source_);
881 } 901 }
882 902
883 void PictureLayerImpl::RemoveAllTilings() { 903 void PictureLayerImpl::RemoveAllTilings() {
884 tilings_->RemoveAllTilings(); 904 tilings_->RemoveAllTilings();
885 // If there are no tilings, then raster scales are no longer meaningful. 905 // If there are no tilings, then raster scales are no longer meaningful.
886 ResetRasterScale(); 906 ResetRasterScale();
887 } 907 }
888 908
889 void PictureLayerImpl::AddTilingsForRasterScale() { 909 void PictureLayerImpl::AddTilingsForRasterScale() {
890 // Reset all resolution enums on tilings, we'll be setting new values in this 910 // Reset all resolution enums on tilings, we'll be setting new values in this
891 // function. 911 // function.
892 tilings_->MarkAllTilingsNonIdeal(); 912 tilings_->MarkAllTilingsNonIdeal();
893 913
894 PictureLayerTiling* high_res = 914 PictureLayerTiling* high_res =
895 tilings_->FindTilingWithScaleKey(raster_contents_scale_); 915 tilings_->FindTilingWithScaleKey(raster_contents_scale_);
916 gfx::Vector2dF raster_translation =
917 CalculateRasterTranslation(raster_contents_scale_);
918 if (high_res &&
919 high_res->raster_transform().translation() != raster_translation) {
920 tilings_->Remove(high_res);
921 high_res = nullptr;
922 }
896 if (!high_res) { 923 if (!high_res) {
897 // We always need a high res tiling, so create one if it doesn't exist. 924 // We always need a high res tiling, so create one if it doesn't exist.
898 high_res = AddTiling(raster_contents_scale_); 925 high_res =
926 AddTiling(ScaleTranslate2d(raster_contents_scale_, raster_translation));
899 } else if (high_res->may_contain_low_resolution_tiles()) { 927 } else if (high_res->may_contain_low_resolution_tiles()) {
900 // If the tiling we find here was LOW_RESOLUTION previously, it may not be 928 // If the tiling we find here was LOW_RESOLUTION previously, it may not be
901 // fully rastered, so destroy the old tiles. 929 // fully rastered, so destroy the old tiles.
902 high_res->Reset(); 930 high_res->Reset();
903 // Reset the flag now that we'll make it high res, it will have fully 931 // Reset the flag now that we'll make it high res, it will have fully
904 // rastered content. 932 // rastered content.
905 high_res->reset_may_contain_low_resolution_tiles(); 933 high_res->reset_may_contain_low_resolution_tiles();
906 } 934 }
907 high_res->set_resolution(HIGH_RESOLUTION); 935 high_res->set_resolution(HIGH_RESOLUTION);
908 936
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
985 tilings_->FindTilingWithScaleKey(low_res_raster_contents_scale_); 1013 tilings_->FindTilingWithScaleKey(low_res_raster_contents_scale_);
986 DCHECK(!low_res || low_res->resolution() != HIGH_RESOLUTION); 1014 DCHECK(!low_res || low_res->resolution() != HIGH_RESOLUTION);
987 1015
988 // Only create new low res tilings when the transform is static. This 1016 // Only create new low res tilings when the transform is static. This
989 // prevents wastefully creating a paired low res tiling for every new high 1017 // prevents wastefully creating a paired low res tiling for every new high
990 // res tiling during a pinch or a CSS animation. 1018 // res tiling during a pinch or a CSS animation.
991 bool is_pinching = layer_tree_impl()->PinchGestureActive(); 1019 bool is_pinching = layer_tree_impl()->PinchGestureActive();
992 bool is_animating = draw_properties().screen_space_transform_is_animating; 1020 bool is_animating = draw_properties().screen_space_transform_is_animating;
993 if (!is_pinching && !is_animating) { 1021 if (!is_pinching && !is_animating) {
994 if (!low_res) 1022 if (!low_res)
995 low_res = AddTiling(low_res_raster_contents_scale_); 1023 low_res = AddTiling(
1024 ScaleTranslate2d(low_res_raster_contents_scale_, gfx::Vector2dF()));
996 low_res->set_resolution(LOW_RESOLUTION); 1025 low_res->set_resolution(LOW_RESOLUTION);
997 } 1026 }
998 } 1027 }
999 1028
1000 void PictureLayerImpl::RecalculateRasterScales() { 1029 void PictureLayerImpl::RecalculateRasterScales() {
1001 if (is_directly_composited_image_) { 1030 if (is_directly_composited_image_) {
1002 if (!raster_source_scale_) 1031 if (!raster_source_scale_)
1003 raster_source_scale_ = 1.f; 1032 raster_source_scale_ = 1.f;
1004 1033
1005 float min_scale = MinimumContentsScale(); 1034 float min_scale = MinimumContentsScale();
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after
1151 } 1180 }
1152 1181
1153 PictureLayerTilingSet* twin_set = twin ? twin->tilings_.get() : nullptr; 1182 PictureLayerTilingSet* twin_set = twin ? twin->tilings_.get() : nullptr;
1154 tilings_->CleanUpTilings(min_acceptable_high_res_scale, 1183 tilings_->CleanUpTilings(min_acceptable_high_res_scale,
1155 max_acceptable_high_res_scale, used_tilings, 1184 max_acceptable_high_res_scale, used_tilings,
1156 twin_set); 1185 twin_set);
1157 DCHECK_GT(tilings_->num_tilings(), 0u); 1186 DCHECK_GT(tilings_->num_tilings(), 0u);
1158 SanityCheckTilingState(); 1187 SanityCheckTilingState();
1159 } 1188 }
1160 1189
1190 gfx::Vector2dF PictureLayerImpl::CalculateRasterTranslation(
1191 float raster_scale) {
1192 if (!use_transformed_rasterization_)
1193 return gfx::Vector2dF();
1194
1195 DCHECK(!draw_properties().screen_space_transform_is_animating);
1196 gfx::Transform draw_transform = DrawTransform();
1197 DCHECK(draw_transform.IsScaleOrTranslation());
1198
1199 // It is only useful to align the content space to the target space if their
1200 // relative pixel ratio is some small rational number. Currently we only
1201 // align if the relative pixel ratio is 1:1.
1202 // Good match if the maximum alignment error on a layer of size 10000px
1203 // does not exceed 0.001px.
1204 static constexpr float kErrorThreshold = 0.0000001f;
1205 if (std::abs(draw_transform.matrix().getFloat(0, 0) - raster_scale) >
1206 kErrorThreshold ||
1207 std::abs(draw_transform.matrix().getFloat(1, 1) - raster_scale) >
1208 kErrorThreshold)
1209 return gfx::Vector2dF();
1210
1211 // Extract the fractional part of layer origin in the target space.
1212 float origin_x = draw_transform.matrix().getFloat(0, 3);
1213 float origin_y = draw_transform.matrix().getFloat(1, 3);
1214 return gfx::Vector2dF(origin_x - floorf(origin_x),
1215 origin_y - floorf(origin_y));
1216 }
1217
1161 float PictureLayerImpl::MinimumContentsScale() const { 1218 float PictureLayerImpl::MinimumContentsScale() const {
1162 float setting_min = layer_tree_impl()->settings().minimum_contents_scale; 1219 float setting_min = layer_tree_impl()->settings().minimum_contents_scale;
1163 1220
1164 // If the contents scale is less than 1 / width (also for height), 1221 // If the contents scale is less than 1 / width (also for height),
1165 // then it will end up having less than one pixel of content in that 1222 // then it will end up having less than one pixel of content in that
1166 // dimension. Bump the minimum contents scale up in this case to prevent 1223 // dimension. Bump the minimum contents scale up in this case to prevent
1167 // this from happening. 1224 // this from happening.
1168 int min_dimension = std::min(raster_source_->GetSize().width(), 1225 int min_dimension = std::min(raster_source_->GetSize().width(),
1169 raster_source_->GetSize().height()); 1226 raster_source_->GetSize().height());
1170 if (!min_dimension) 1227 if (!min_dimension)
(...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after
1392 } 1449 }
1393 1450
1394 invalidation_.Union(invalidation); 1451 invalidation_.Union(invalidation);
1395 tilings_->UpdateTilingsForImplSideInvalidation(invalidation); 1452 tilings_->UpdateTilingsForImplSideInvalidation(invalidation);
1396 SetNeedsPushProperties(); 1453 SetNeedsPushProperties();
1397 TRACE_EVENT_END1("cc", "PictureLayerImpl::InvalidateRegionForImages", 1454 TRACE_EVENT_END1("cc", "PictureLayerImpl::InvalidateRegionForImages",
1398 "Invalidation", invalidation.ToString()); 1455 "Invalidation", invalidation.ToString());
1399 } 1456 }
1400 1457
1401 } // namespace cc 1458 } // namespace cc
OLDNEW
« no previous file with comments | « cc/layers/picture_layer_impl.h ('k') | cc/layers/picture_layer_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698