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

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

Issue 16023024: Add CompositingReasons to compositor layers. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: patch for landing Created 7 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 | Annotate | Revision Log
« no previous file with comments | « cc/layers/layer_impl.h ('k') | webkit/renderer/compositor_bindings/compositor_bindings.gyp » ('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 2011 The Chromium Authors. All rights reserved. 1 // Copyright 2011 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 "base/debug/trace_event.h" 7 #include "base/debug/trace_event.h"
8 #include "base/stringprintf.h" 8 #include "base/stringprintf.h"
9 #include "cc/animation/animation_registrar.h" 9 #include "cc/animation/animation_registrar.h"
10 #include "cc/animation/scrollbar_animation_controller.h" 10 #include "cc/animation/scrollbar_animation_controller.h"
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
47 masks_to_bounds_(false), 47 masks_to_bounds_(false),
48 contents_opaque_(false), 48 contents_opaque_(false),
49 opacity_(1.0), 49 opacity_(1.0),
50 preserves_3d_(false), 50 preserves_3d_(false),
51 use_parent_backface_visibility_(false), 51 use_parent_backface_visibility_(false),
52 draw_checkerboard_for_missing_tiles_(false), 52 draw_checkerboard_for_missing_tiles_(false),
53 draws_content_(false), 53 draws_content_(false),
54 force_render_surface_(false), 54 force_render_surface_(false),
55 is_container_for_fixed_position_layers_(false), 55 is_container_for_fixed_position_layers_(false),
56 draw_depth_(0.f), 56 draw_depth_(0.f),
57 compositing_reasons_(kCompositingReasonUnknown),
57 #ifndef NDEBUG 58 #ifndef NDEBUG
58 between_will_draw_and_did_draw_(false), 59 between_will_draw_and_did_draw_(false),
59 #endif 60 #endif
60 horizontal_scrollbar_layer_(NULL), 61 horizontal_scrollbar_layer_(NULL),
61 vertical_scrollbar_layer_(NULL) { 62 vertical_scrollbar_layer_(NULL) {
62 DCHECK_GT(layer_id_, 0); 63 DCHECK_GT(layer_id_, 0);
63 DCHECK(layer_tree_impl_); 64 DCHECK(layer_tree_impl_);
64 layer_tree_impl_->RegisterLayer(this); 65 layer_tree_impl_->RegisterLayer(this);
65 AnimationRegistrar* registrar = layer_tree_impl_->animationRegistrar(); 66 AnimationRegistrar* registrar = layer_tree_impl_->animationRegistrar();
66 layer_animation_controller_ = 67 layer_animation_controller_ =
(...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after
345 } 346 }
346 347
347 void LayerImpl::PushPropertiesTo(LayerImpl* layer) { 348 void LayerImpl::PushPropertiesTo(LayerImpl* layer) {
348 layer->SetAnchorPoint(anchor_point_); 349 layer->SetAnchorPoint(anchor_point_);
349 layer->SetAnchorPointZ(anchor_point_z_); 350 layer->SetAnchorPointZ(anchor_point_z_);
350 layer->SetBackgroundColor(background_color_); 351 layer->SetBackgroundColor(background_color_);
351 layer->SetBounds(bounds_); 352 layer->SetBounds(bounds_);
352 layer->SetContentBounds(content_bounds()); 353 layer->SetContentBounds(content_bounds());
353 layer->SetContentsScale(contents_scale_x(), contents_scale_y()); 354 layer->SetContentsScale(contents_scale_x(), contents_scale_y());
354 layer->SetDebugName(debug_name_); 355 layer->SetDebugName(debug_name_);
356 layer->SetCompositingReasons(compositing_reasons_);
355 layer->SetDoubleSided(double_sided_); 357 layer->SetDoubleSided(double_sided_);
356 layer->SetDrawCheckerboardForMissingTiles( 358 layer->SetDrawCheckerboardForMissingTiles(
357 draw_checkerboard_for_missing_tiles_); 359 draw_checkerboard_for_missing_tiles_);
358 layer->SetForceRenderSurface(force_render_surface_); 360 layer->SetForceRenderSurface(force_render_surface_);
359 layer->SetDrawsContent(DrawsContent()); 361 layer->SetDrawsContent(DrawsContent());
360 layer->SetFilters(filters()); 362 layer->SetFilters(filters());
361 layer->SetFilter(filter()); 363 layer->SetFilter(filter());
362 layer->SetBackgroundFilters(background_filters()); 364 layer->SetBackgroundFilters(background_filters());
363 layer->SetMasksToBounds(masks_to_bounds_); 365 layer->SetMasksToBounds(masks_to_bounds_);
364 layer->SetShouldScrollOnMainThread(should_scroll_on_main_thread_); 366 layer->SetShouldScrollOnMainThread(should_scroll_on_main_thread_);
(...skipping 629 matching lines...) Expand 10 before | Expand all | Expand 10 after
994 if (horizontal_scrollbar_layer_) 996 if (horizontal_scrollbar_layer_)
995 horizontal_scrollbar_layer_->set_scroll_layer_id(id()); 997 horizontal_scrollbar_layer_->set_scroll_layer_id(id());
996 } 998 }
997 999
998 void LayerImpl::SetVerticalScrollbarLayer(ScrollbarLayerImpl* scrollbar_layer) { 1000 void LayerImpl::SetVerticalScrollbarLayer(ScrollbarLayerImpl* scrollbar_layer) {
999 vertical_scrollbar_layer_ = scrollbar_layer; 1001 vertical_scrollbar_layer_ = scrollbar_layer;
1000 if (vertical_scrollbar_layer_) 1002 if (vertical_scrollbar_layer_)
1001 vertical_scrollbar_layer_->set_scroll_layer_id(id()); 1003 vertical_scrollbar_layer_->set_scroll_layer_id(id());
1002 } 1004 }
1003 1005
1006 static scoped_ptr<base::Value>
1007 CompositingReasonsAsValue(CompositingReasons reasons) {
1008 scoped_ptr<base::ListValue> reason_list(new base::ListValue());
1009
1010 if (reasons == kCompositingReasonUnknown) {
1011 reason_list->AppendString("No reasons given");
1012 return reason_list.PassAs<base::Value>();
1013 }
1014
1015 if (reasons & kCompositingReason3DTransform)
1016 reason_list->AppendString("Has a 3d Transform");
1017
1018 if (reasons & kCompositingReasonVideo)
1019 reason_list->AppendString("Is accelerated video");
1020
1021 if (reasons & kCompositingReasonCanvas)
1022 reason_list->AppendString("Is accelerated canvas");
1023
1024 if (reasons & kCompositingReasonPlugin)
1025 reason_list->AppendString("Is accelerated plugin");
1026
1027 if (reasons & kCompositingReasonIFrame)
1028 reason_list->AppendString("Is accelerated iframe");
1029
1030 if (reasons & kCompositingReasonBackfaceVisibilityHidden)
1031 reason_list->AppendString("Has backface-visibility: hidden");
1032
1033 if (reasons & kCompositingReasonAnimation)
1034 reason_list->AppendString("Has accelerated animation or transition");
1035
1036 if (reasons & kCompositingReasonFilters)
1037 reason_list->AppendString("Has accelerated filters");
1038
1039 if (reasons & kCompositingReasonPositionFixed)
1040 reason_list->AppendString("Is fixed position");
1041
1042 if (reasons & kCompositingReasonPositionSticky)
1043 reason_list->AppendString("Is sticky position");
1044
1045 if (reasons & kCompositingReasonOverflowScrollingTouch)
1046 reason_list->AppendString("Is a scrollable overflow element");
1047
1048 if (reasons & kCompositingReasonBlending)
1049 reason_list->AppendString("Has a blend mode");
1050
1051 if (reasons & kCompositingReasonAssumedOverlap)
1052 reason_list->AppendString("Might overlap a composited animation");
1053
1054 if (reasons & kCompositingReasonOverlap)
1055 reason_list->AppendString("Overlaps other composited content");
1056
1057 if (reasons & kCompositingReasonNegativeZIndexChildren) {
1058 reason_list->AppendString("Might overlap negative z-index "
1059 "composited content");
1060 }
1061
1062 if (reasons & kCompositingReasonTransformWithCompositedDescendants) {
1063 reason_list->AppendString("Has transform needed by a "
1064 "composited descendant");
1065 }
1066
1067 if (reasons & kCompositingReasonOpacityWithCompositedDescendants)
1068 reason_list->AppendString("Has opacity needed by a composited descendant");
1069
1070 if (reasons & kCompositingReasonMaskWithCompositedDescendants)
1071 reason_list->AppendString("Has a mask needed by a composited descendant");
1072
1073 if (reasons & kCompositingReasonReflectionWithCompositedDescendants)
1074 reason_list->AppendString("Has a reflection with a composited descendant");
1075
1076 if (reasons & kCompositingReasonFilterWithCompositedDescendants)
1077 reason_list->AppendString("Has filter effect with a composited descendant");
1078
1079 if (reasons & kCompositingReasonBlendingWithCompositedDescendants)
1080 reason_list->AppendString("Has a blend mode with a composited descendant");
1081
1082 if (reasons & kCompositingReasonClipsCompositingDescendants)
1083 reason_list->AppendString("Clips a composited descendant");
1084
1085 if (reasons & kCompositingReasonPerspective) {
1086 reason_list->AppendString("Has a perspective transform needed by a "
1087 "composited 3d descendant");
1088 }
1089
1090 if (reasons & kCompositingReasonPreserve3D) {
1091 reason_list->AppendString("Has preserves-3d style with composited "
1092 "3d descendant");
1093 }
1094
1095 if (reasons & kCompositingReasonReflectionOfCompositedParent)
1096 reason_list->AppendString("Is the reflection of a composited layer");
1097
1098 if (reasons & kCompositingReasonRoot)
1099 reason_list->AppendString("Is the root");
1100
1101 if (reasons & kCompositingReasonLayerForClip)
1102 reason_list->AppendString("Convenience layer, to clip subtree");
1103
1104 if (reasons & kCompositingReasonLayerForScrollbar)
1105 reason_list->AppendString("Convenience layer for rendering scrollbar");
1106
1107 if (reasons & kCompositingReasonLayerForScrollingContainer)
1108 reason_list->AppendString("Convenience layer, the scrolling container");
1109
1110 if (reasons & kCompositingReasonLayerForForeground) {
1111 reason_list->AppendString("Convenience layer, foreground when main layer "
1112 "has negative z-index composited content");
1113 }
1114
1115 if (reasons & kCompositingReasonLayerForBackground) {
1116 reason_list->AppendString("Convenience layer, background when main layer "
1117 "has a composited background");
1118 }
1119
1120 if (reasons & kCompositingReasonLayerForMask)
1121 reason_list->AppendString("Is a mask layer");
1122
1123 return reason_list.PassAs<base::Value>();
1124 }
1125
1004 void LayerImpl::AsValueInto(base::DictionaryValue* state) const { 1126 void LayerImpl::AsValueInto(base::DictionaryValue* state) const {
1005 TracedValue::MakeDictIntoImplicitSnapshot(state, LayerTypeAsString(), this); 1127 TracedValue::MakeDictIntoImplicitSnapshot(state, LayerTypeAsString(), this);
1006 state->SetInteger("layer_id", id()); 1128 state->SetInteger("layer_id", id());
1007 state->Set("bounds", MathUtil::AsValue(bounds()).release()); 1129 state->Set("bounds", MathUtil::AsValue(bounds()).release());
1008 state->SetInteger("draws_content", DrawsContent()); 1130 state->SetInteger("draws_content", DrawsContent());
1009 state->SetInteger("gpu_memory_usage", GPUMemoryUsageInBytes()); 1131 state->SetInteger("gpu_memory_usage", GPUMemoryUsageInBytes());
1132 state->Set("compositing_reasons",
1133 CompositingReasonsAsValue(compositing_reasons_).release());
1010 1134
1011 bool clipped; 1135 bool clipped;
1012 gfx::QuadF layer_quad = MathUtil::MapQuad( 1136 gfx::QuadF layer_quad = MathUtil::MapQuad(
1013 screen_space_transform(), 1137 screen_space_transform(),
1014 gfx::QuadF(gfx::Rect(content_bounds())), 1138 gfx::QuadF(gfx::Rect(content_bounds())),
1015 &clipped); 1139 &clipped);
1016 state->Set("layer_quad", MathUtil::AsValue(layer_quad).release()); 1140 state->Set("layer_quad", MathUtil::AsValue(layer_quad).release());
1017 1141
1018 1142
1019 scoped_ptr<base::ListValue> children_list(new base::ListValue()); 1143 scoped_ptr<base::ListValue> children_list(new base::ListValue());
1020 for (size_t i = 0; i < children_.size(); ++i) 1144 for (size_t i = 0; i < children_.size(); ++i)
1021 children_list->Append(children_[i]->AsValue().release()); 1145 children_list->Append(children_[i]->AsValue().release());
1022 state->Set("children", children_list.release()); 1146 state->Set("children", children_list.release());
1023 if (mask_layer_) 1147 if (mask_layer_)
1024 state->Set("mask_layer", mask_layer_->AsValue().release()); 1148 state->Set("mask_layer", mask_layer_->AsValue().release());
1025 if (replica_layer_) 1149 if (replica_layer_)
1026 state->Set("replica_layer", replica_layer_->AsValue().release()); 1150 state->Set("replica_layer", replica_layer_->AsValue().release());
1027 } 1151 }
1028 1152
1029 size_t LayerImpl::GPUMemoryUsageInBytes() const { return 0; } 1153 size_t LayerImpl::GPUMemoryUsageInBytes() const { return 0; }
1030 1154
1031 scoped_ptr<base::Value> LayerImpl::AsValue() const { 1155 scoped_ptr<base::Value> LayerImpl::AsValue() const {
1032 scoped_ptr<base::DictionaryValue> state(new base::DictionaryValue()); 1156 scoped_ptr<base::DictionaryValue> state(new base::DictionaryValue());
1033 AsValueInto(state.get()); 1157 AsValueInto(state.get());
1034 return state.PassAs<base::Value>(); 1158 return state.PassAs<base::Value>();
1035 } 1159 }
1036 1160
1037 } // namespace cc 1161 } // namespace cc
OLDNEW
« no previous file with comments | « cc/layers/layer_impl.h ('k') | webkit/renderer/compositor_bindings/compositor_bindings.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698