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

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

Issue 1946403003: Add fixed raster scale use counter histograms. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 7 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
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/layer_impl.h" 5 #include "cc/layers/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 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
77 transform_tree_index_(-1), 77 transform_tree_index_(-1),
78 effect_tree_index_(-1), 78 effect_tree_index_(-1),
79 clip_tree_index_(-1), 79 clip_tree_index_(-1),
80 scroll_tree_index_(-1), 80 scroll_tree_index_(-1),
81 sorting_context_id_(0), 81 sorting_context_id_(0),
82 current_draw_mode_(DRAW_MODE_NONE), 82 current_draw_mode_(DRAW_MODE_NONE),
83 element_id_(0), 83 element_id_(0),
84 mutable_properties_(MutableProperty::kNone), 84 mutable_properties_(MutableProperty::kNone),
85 debug_info_(nullptr), 85 debug_info_(nullptr),
86 scrolls_drawn_descendant_(false), 86 scrolls_drawn_descendant_(false),
87 layer_or_descendant_has_touch_handler_(false) { 87 layer_or_descendant_has_touch_handler_(false),
88 has_will_change_transform_hint_(false) {
88 DCHECK_GT(layer_id_, 0); 89 DCHECK_GT(layer_id_, 0);
89 90
90 DCHECK(layer_tree_impl_); 91 DCHECK(layer_tree_impl_);
91 layer_tree_impl_->RegisterLayer(this); 92 layer_tree_impl_->RegisterLayer(this);
92 layer_tree_impl_->AddToElementMap(this); 93 layer_tree_impl_->AddToElementMap(this);
93 94
94 SetNeedsPushProperties(); 95 SetNeedsPushProperties();
95 } 96 }
96 97
97 LayerImpl::~LayerImpl() { 98 LayerImpl::~LayerImpl() {
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
140 layer_tree_impl_->RemoveLayer(child->id()); 141 layer_tree_impl_->RemoveLayer(child->id());
141 children_.clear(); 142 children_.clear();
142 } 143 }
143 144
144 void LayerImpl::ClearLinksToOtherLayers() { 145 void LayerImpl::ClearLinksToOtherLayers() {
145 children_.clear(); 146 children_.clear();
146 mask_layer_ = nullptr; 147 mask_layer_ = nullptr;
147 replica_layer_ = nullptr; 148 replica_layer_ = nullptr;
148 } 149 }
149 150
151 void LayerImpl::SetHasWillChangeTransformHint(bool has_will_change) {
152 if (has_will_change_transform_hint_ == has_will_change)
153 return;
154 has_will_change_transform_hint_ = has_will_change;
155 SetNeedsPushProperties();
156 }
157
150 void LayerImpl::SetDebugInfo( 158 void LayerImpl::SetDebugInfo(
151 std::unique_ptr<base::trace_event::ConvertableToTraceFormat> debug_info) { 159 std::unique_ptr<base::trace_event::ConvertableToTraceFormat> debug_info) {
152 owned_debug_info_ = std::move(debug_info); 160 owned_debug_info_ = std::move(debug_info);
153 debug_info_ = owned_debug_info_.get(); 161 debug_info_ = owned_debug_info_.get();
154 SetNeedsPushProperties(); 162 SetNeedsPushProperties();
155 } 163 }
156 164
157 void LayerImpl::DistributeScroll(ScrollState* scroll_state) { 165 void LayerImpl::DistributeScroll(ScrollState* scroll_state) {
158 DCHECK(scroll_state); 166 DCHECK(scroll_state);
159 if (scroll_state->FullyConsumed()) 167 if (scroll_state->FullyConsumed())
(...skipping 328 matching lines...) Expand 10 before | Expand all | Expand 10 after
488 // If the main thread commits multiple times before the impl thread actually 496 // If the main thread commits multiple times before the impl thread actually
489 // draws, then damage tracking will become incorrect if we simply clobber the 497 // draws, then damage tracking will become incorrect if we simply clobber the
490 // update_rect here. The LayerImpl's update_rect needs to accumulate (i.e. 498 // update_rect here. The LayerImpl's update_rect needs to accumulate (i.e.
491 // union) any update changes that have occurred on the main thread. 499 // union) any update changes that have occurred on the main thread.
492 update_rect_.Union(layer->update_rect()); 500 update_rect_.Union(layer->update_rect());
493 layer->SetUpdateRect(update_rect_); 501 layer->SetUpdateRect(update_rect_);
494 502
495 if (owned_debug_info_) 503 if (owned_debug_info_)
496 layer->SetDebugInfo(std::move(owned_debug_info_)); 504 layer->SetDebugInfo(std::move(owned_debug_info_));
497 505
506 layer->SetHasWillChangeTransformHint(has_will_change_transform_hint());
507
498 // Reset any state that should be cleared for the next update. 508 // Reset any state that should be cleared for the next update.
499 layer_property_changed_ = false; 509 layer_property_changed_ = false;
500 update_rect_ = gfx::Rect(); 510 update_rect_ = gfx::Rect();
501 layer_tree_impl()->RemoveLayerShouldPushProperties(this); 511 layer_tree_impl()->RemoveLayerShouldPushProperties(this);
502 } 512 }
503 513
504 bool LayerImpl::IsAffectedByPageScale() const { 514 bool LayerImpl::IsAffectedByPageScale() const {
505 TransformTree& transform_tree = 515 TransformTree& transform_tree =
506 layer_tree_impl()->property_trees()->transform_tree; 516 layer_tree_impl()->property_trees()->transform_tree;
507 return transform_tree.Node(transform_tree_index()) 517 return transform_tree.Node(transform_tree_index())
(...skipping 755 matching lines...) Expand 10 before | Expand all | Expand 10 after
1263 replica_layer_->AsValueInto(state); 1273 replica_layer_->AsValueInto(state);
1264 state->EndDictionary(); 1274 state->EndDictionary();
1265 } 1275 }
1266 1276
1267 state->SetBoolean("can_use_lcd_text", can_use_lcd_text()); 1277 state->SetBoolean("can_use_lcd_text", can_use_lcd_text());
1268 state->SetBoolean("contents_opaque", contents_opaque()); 1278 state->SetBoolean("contents_opaque", contents_opaque());
1269 1279
1270 state->SetBoolean("has_animation_bounds", 1280 state->SetBoolean("has_animation_bounds",
1271 layer_tree_impl_->HasAnimationThatInflatesBounds(this)); 1281 layer_tree_impl_->HasAnimationThatInflatesBounds(this));
1272 1282
1283 state->SetBoolean("has_will_change_transform_hint",
1284 has_will_change_transform_hint());
1285
1273 gfx::BoxF box; 1286 gfx::BoxF box;
1274 if (LayerUtils::GetAnimationBounds(*this, &box)) 1287 if (LayerUtils::GetAnimationBounds(*this, &box))
1275 MathUtil::AddToTracedValue("animation_bounds", box, state); 1288 MathUtil::AddToTracedValue("animation_bounds", box, state);
1276 1289
1277 if (debug_info_) { 1290 if (debug_info_) {
1278 std::string str; 1291 std::string str;
1279 debug_info_->AppendAsTraceFormat(&str); 1292 debug_info_->AppendAsTraceFormat(&str);
1280 base::JSONReader json_reader; 1293 base::JSONReader json_reader;
1281 std::unique_ptr<base::Value> debug_info_value(json_reader.ReadToValue(str)); 1294 std::unique_ptr<base::Value> debug_info_value(json_reader.ReadToValue(str));
1282 1295
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
1410 .layer_transforms_should_scale_layer_contents) { 1423 .layer_transforms_should_scale_layer_contents) {
1411 return default_scale; 1424 return default_scale;
1412 } 1425 }
1413 1426
1414 gfx::Vector2dF transform_scales = MathUtil::ComputeTransform2dScaleComponents( 1427 gfx::Vector2dF transform_scales = MathUtil::ComputeTransform2dScaleComponents(
1415 DrawTransform(), default_scale); 1428 DrawTransform(), default_scale);
1416 return std::max(transform_scales.x(), transform_scales.y()); 1429 return std::max(transform_scales.x(), transform_scales.y());
1417 } 1430 }
1418 1431
1419 } // namespace cc 1432 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698