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

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

Issue 2094813003: cc: Merge PictureImageLayerImpl and PictureLayerImpl. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: borders Created 4 years, 6 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 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
70 ideal_source_scale_(0.f), 70 ideal_source_scale_(0.f),
71 ideal_contents_scale_(0.f), 71 ideal_contents_scale_(0.f),
72 raster_page_scale_(0.f), 72 raster_page_scale_(0.f),
73 raster_device_scale_(0.f), 73 raster_device_scale_(0.f),
74 raster_source_scale_(0.f), 74 raster_source_scale_(0.f),
75 raster_contents_scale_(0.f), 75 raster_contents_scale_(0.f),
76 low_res_raster_contents_scale_(0.f), 76 low_res_raster_contents_scale_(0.f),
77 was_screen_space_transform_animating_(false), 77 was_screen_space_transform_animating_(false),
78 only_used_low_res_last_append_quads_(false), 78 only_used_low_res_last_append_quads_(false),
79 is_mask_(is_mask), 79 is_mask_(is_mask),
80 nearest_neighbor_(false) { 80 nearest_neighbor_(false),
81 is_directly_composited_image_(false) {
81 layer_tree_impl()->RegisterPictureLayerImpl(this); 82 layer_tree_impl()->RegisterPictureLayerImpl(this);
82 } 83 }
83 84
84 PictureLayerImpl::~PictureLayerImpl() { 85 PictureLayerImpl::~PictureLayerImpl() {
85 if (twin_layer_) 86 if (twin_layer_)
86 twin_layer_->twin_layer_ = nullptr; 87 twin_layer_->twin_layer_ = nullptr;
87 layer_tree_impl()->UnregisterPictureLayerImpl(this); 88 layer_tree_impl()->UnregisterPictureLayerImpl(this);
88 } 89 }
89 90
90 const char* PictureLayerImpl::LayerTypeAsString() const { 91 const char* PictureLayerImpl::LayerTypeAsString() const {
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
127 128
128 // After syncing a solid color layer, the active layer has no tilings. 129 // After syncing a solid color layer, the active layer has no tilings.
129 DCHECK(!raster_source_->IsSolidColor() || 130 DCHECK(!raster_source_->IsSolidColor() ||
130 layer_impl->tilings_->num_tilings() == 0); 131 layer_impl->tilings_->num_tilings() == 0);
131 132
132 layer_impl->raster_page_scale_ = raster_page_scale_; 133 layer_impl->raster_page_scale_ = raster_page_scale_;
133 layer_impl->raster_device_scale_ = raster_device_scale_; 134 layer_impl->raster_device_scale_ = raster_device_scale_;
134 layer_impl->raster_source_scale_ = raster_source_scale_; 135 layer_impl->raster_source_scale_ = raster_source_scale_;
135 layer_impl->raster_contents_scale_ = raster_contents_scale_; 136 layer_impl->raster_contents_scale_ = raster_contents_scale_;
136 layer_impl->low_res_raster_contents_scale_ = low_res_raster_contents_scale_; 137 layer_impl->low_res_raster_contents_scale_ = low_res_raster_contents_scale_;
138 layer_impl->is_directly_composited_image_ = is_directly_composited_image_;
137 139
138 layer_impl->SanityCheckTilingState(); 140 layer_impl->SanityCheckTilingState();
139 141
140 // We always need to push properties. 142 // We always need to push properties.
141 // See http://crbug.com/303943 143 // See http://crbug.com/303943
142 // TODO(danakj): Stop always pushing properties since we don't swap tilings. 144 // TODO(danakj): Stop always pushing properties since we don't swap tilings.
143 layer_tree_impl()->AddLayerShouldPushProperties(this); 145 layer_tree_impl()->AddLayerShouldPushProperties(this);
144 } 146 }
145 147
146 void PictureLayerImpl::AppendQuads(RenderPass* render_pass, 148 void PictureLayerImpl::AppendQuads(RenderPass* render_pass,
(...skipping 718 matching lines...) Expand 10 before | Expand all | Expand 10 after
865 if (layer_tree_impl()->IsPendingTree()) { 867 if (layer_tree_impl()->IsPendingTree()) {
866 // On the pending tree, drop any tilings that are non-ideal since we don't 868 // On the pending tree, drop any tilings that are non-ideal since we don't
867 // need them to activate anyway. 869 // need them to activate anyway.
868 tilings_->RemoveNonIdealTilings(); 870 tilings_->RemoveNonIdealTilings();
869 } 871 }
870 872
871 SanityCheckTilingState(); 873 SanityCheckTilingState();
872 } 874 }
873 875
874 bool PictureLayerImpl::ShouldAdjustRasterScale() const { 876 bool PictureLayerImpl::ShouldAdjustRasterScale() const {
877 // TODO(vmpstr): We might want to adjust the raster scale once in a while.
878 if (is_directly_composited_image_)
879 return false;
880
875 if (was_screen_space_transform_animating_ != 881 if (was_screen_space_transform_animating_ !=
876 draw_properties().screen_space_transform_is_animating) 882 draw_properties().screen_space_transform_is_animating)
877 return true; 883 return true;
878 884
879 if (draw_properties().screen_space_transform_is_animating && 885 if (draw_properties().screen_space_transform_is_animating &&
880 raster_contents_scale_ != ideal_contents_scale_ && 886 raster_contents_scale_ != ideal_contents_scale_ &&
881 ShouldAdjustRasterScaleDuringScaleAnimations()) 887 ShouldAdjustRasterScaleDuringScaleAnimations())
882 return true; 888 return true;
883 889
884 bool is_pinching = layer_tree_impl()->PinchGestureActive(); 890 bool is_pinching = layer_tree_impl()->PinchGestureActive();
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
943 bool is_pinching = layer_tree_impl()->PinchGestureActive(); 949 bool is_pinching = layer_tree_impl()->PinchGestureActive();
944 bool is_animating = draw_properties().screen_space_transform_is_animating; 950 bool is_animating = draw_properties().screen_space_transform_is_animating;
945 if (!is_pinching && !is_animating) { 951 if (!is_pinching && !is_animating) {
946 if (!low_res) 952 if (!low_res)
947 low_res = AddTiling(low_res_raster_contents_scale_); 953 low_res = AddTiling(low_res_raster_contents_scale_);
948 low_res->set_resolution(LOW_RESOLUTION); 954 low_res->set_resolution(LOW_RESOLUTION);
949 } 955 }
950 } 956 }
951 957
952 void PictureLayerImpl::RecalculateRasterScales() { 958 void PictureLayerImpl::RecalculateRasterScales() {
959 // TODO(vmpstr): We might want to adjust these once in a while.
960 if (is_directly_composited_image_) {
961 raster_page_scale_ = 1.f;
962 raster_device_scale_ = 1.f;
963 raster_source_scale_ = std::max(1.f, MinimumContentsScale());
964 raster_contents_scale_ = raster_source_scale_;
965 low_res_raster_contents_scale_ = raster_contents_scale_;
966 return;
967 }
968
953 float old_raster_contents_scale = raster_contents_scale_; 969 float old_raster_contents_scale = raster_contents_scale_;
954 float old_raster_page_scale = raster_page_scale_; 970 float old_raster_page_scale = raster_page_scale_;
955 971
956 raster_device_scale_ = ideal_device_scale_; 972 raster_device_scale_ = ideal_device_scale_;
957 raster_page_scale_ = ideal_page_scale_; 973 raster_page_scale_ = ideal_page_scale_;
958 raster_source_scale_ = ideal_source_scale_; 974 raster_source_scale_ = ideal_source_scale_;
959 raster_contents_scale_ = ideal_contents_scale_; 975 raster_contents_scale_ = ideal_contents_scale_;
960 976
961 // During pinch we completely ignore the current ideal scale, and just use 977 // During pinch we completely ignore the current ideal scale, and just use
962 // a multiple of the previous scale. 978 // a multiple of the previous scale.
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after
1172 const LayerTreeSettings& settings = layer_tree_impl()->settings(); 1188 const LayerTreeSettings& settings = layer_tree_impl()->settings();
1173 return PictureLayerTilingSet::Create( 1189 return PictureLayerTilingSet::Create(
1174 GetTree(), this, settings.tiling_interest_area_padding, 1190 GetTree(), this, settings.tiling_interest_area_padding,
1175 layer_tree_impl()->use_gpu_rasterization() 1191 layer_tree_impl()->use_gpu_rasterization()
1176 ? settings.gpu_rasterization_skewport_target_time_in_seconds 1192 ? settings.gpu_rasterization_skewport_target_time_in_seconds
1177 : settings.skewport_target_time_in_seconds, 1193 : settings.skewport_target_time_in_seconds,
1178 settings.skewport_extrapolation_limit_in_screen_pixels); 1194 settings.skewport_extrapolation_limit_in_screen_pixels);
1179 } 1195 }
1180 1196
1181 void PictureLayerImpl::UpdateIdealScales() { 1197 void PictureLayerImpl::UpdateIdealScales() {
1198 // TODO(vmpstr): We might want to adjust these once in a while.
1199 if (is_directly_composited_image_) {
1200 ideal_contents_scale_ = 1.f;
1201 ideal_page_scale_ = 1.f;
1202 ideal_device_scale_ = 1.f;
1203 ideal_source_scale_ = 1.f;
1204 return;
1205 }
1206
1182 DCHECK(CanHaveTilings()); 1207 DCHECK(CanHaveTilings());
1183 1208
1184 float min_contents_scale = MinimumContentsScale(); 1209 float min_contents_scale = MinimumContentsScale();
1185 DCHECK_GT(min_contents_scale, 0.f); 1210 DCHECK_GT(min_contents_scale, 0.f);
1186 1211
1187 ideal_page_scale_ = IsAffectedByPageScale() 1212 ideal_page_scale_ = IsAffectedByPageScale()
1188 ? layer_tree_impl()->current_page_scale_factor() 1213 ? layer_tree_impl()->current_page_scale_factor()
1189 : 1.f; 1214 : 1.f;
1190 ideal_device_scale_ = layer_tree_impl()->device_scale_factor(); 1215 ideal_device_scale_ = layer_tree_impl()->device_scale_factor();
1191 ideal_contents_scale_ = std::max(GetIdealContentsScale(), min_contents_scale); 1216 ideal_contents_scale_ = std::max(GetIdealContentsScale(), min_contents_scale);
1192 ideal_source_scale_ = 1217 ideal_source_scale_ =
1193 ideal_contents_scale_ / ideal_page_scale_ / ideal_device_scale_; 1218 ideal_contents_scale_ / ideal_page_scale_ / ideal_device_scale_;
1194 } 1219 }
1195 1220
1196 void PictureLayerImpl::GetDebugBorderProperties( 1221 void PictureLayerImpl::GetDebugBorderProperties(
1197 SkColor* color, 1222 SkColor* color,
1198 float* width) const { 1223 float* width) const {
1199 *color = DebugColors::TiledContentLayerBorderColor(); 1224 if (is_directly_composited_image_) {
1200 *width = DebugColors::TiledContentLayerBorderWidth(layer_tree_impl()); 1225 *color = DebugColors::ImageLayerBorderColor();
1226 *width = DebugColors::ImageLayerBorderWidth(layer_tree_impl());
1227 } else {
1228 *color = DebugColors::TiledContentLayerBorderColor();
1229 *width = DebugColors::TiledContentLayerBorderWidth(layer_tree_impl());
1230 }
1201 } 1231 }
1202 1232
1203 void PictureLayerImpl::GetAllPrioritizedTilesForTracing( 1233 void PictureLayerImpl::GetAllPrioritizedTilesForTracing(
1204 std::vector<PrioritizedTile>* prioritized_tiles) const { 1234 std::vector<PrioritizedTile>* prioritized_tiles) const {
1205 if (!tilings_) 1235 if (!tilings_)
1206 return; 1236 return;
1207 tilings_->GetAllPrioritizedTilesForTracing(prioritized_tiles); 1237 tilings_->GetAllPrioritizedTilesForTracing(prioritized_tiles);
1208 } 1238 }
1209 1239
1210 void PictureLayerImpl::AsValueInto( 1240 void PictureLayerImpl::AsValueInto(
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
1261 bool PictureLayerImpl::IsOnActiveOrPendingTree() const { 1291 bool PictureLayerImpl::IsOnActiveOrPendingTree() const {
1262 return !layer_tree_impl()->IsRecycleTree(); 1292 return !layer_tree_impl()->IsRecycleTree();
1263 } 1293 }
1264 1294
1265 bool PictureLayerImpl::HasValidTilePriorities() const { 1295 bool PictureLayerImpl::HasValidTilePriorities() const {
1266 return IsOnActiveOrPendingTree() && 1296 return IsOnActiveOrPendingTree() &&
1267 is_drawn_render_surface_layer_list_member(); 1297 is_drawn_render_surface_layer_list_member();
1268 } 1298 }
1269 1299
1270 } // namespace cc 1300 } // 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