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

Unified Diff: cc/layers/layer_impl.cc

Issue 15051011: Add CompositingReasons to compositor layer types. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 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 side-by-side diff with in-line comments
Download patch
Index: cc/layers/layer_impl.cc
diff --git a/cc/layers/layer_impl.cc b/cc/layers/layer_impl.cc
index 2ffd61ef4b4243e778a9a0f96bc604c8138fdd08..f48b7483ef670022f801e59c2f3eba0e1c31a091 100644
--- a/cc/layers/layer_impl.cc
+++ b/cc/layers/layer_impl.cc
@@ -53,6 +53,7 @@ LayerImpl::LayerImpl(LayerTreeImpl* tree_impl, int id)
force_render_surface_(false),
is_container_for_fixed_position_layers_(false),
draw_depth_(0.f),
+ compositing_reasons_(WebKit::CompositingReasonUnknown),
#ifndef NDEBUG
between_will_draw_and_did_draw_(false),
#endif
@@ -352,6 +353,7 @@ void LayerImpl::PushPropertiesTo(LayerImpl* layer) {
layer->SetContentBounds(content_bounds());
layer->SetContentsScale(contents_scale_x(), contents_scale_y());
layer->SetDebugName(debug_name_);
+ layer->SetCompositingReasons(compositing_reasons_);
layer->SetDoubleSided(double_sided_);
layer->SetDrawCheckerboardForMissingTiles(
draw_checkerboard_for_missing_tiles_);
@@ -1003,11 +1005,130 @@ void LayerImpl::SetVerticalScrollbarLayer(ScrollbarLayerImpl* scrollbar_layer) {
vertical_scrollbar_layer_->set_scroll_layer_id(id());
}
+scoped_ptr<base::Value>
+CompositingReasonsAsValue(WebKit::WebCompositingReasons reasons) {
+ scoped_ptr<base::ListValue> reason_list(new base::ListValue());
+
+ if (reasons == WebKit::CompositingReasonUnknown) {
+ reason_list->AppendString("No reasons given");
+ return reason_list.PassAs<base::Value>();
+ }
+
+ if (reasons & WebKit::CompositingReason3DTransform)
+ reason_list->AppendString("Has a 3d Transform");
+
+ if (reasons & WebKit::CompositingReasonVideo)
+ reason_list->AppendString("Is accelerated video");
+
+ if (reasons & WebKit::CompositingReasonCanvas)
+ reason_list->AppendString("Is accelerated canvas");
+
+ if (reasons & WebKit::CompositingReasonPlugin)
+ reason_list->AppendString("Is accelerated plugin");
+
+ if (reasons & WebKit::CompositingReasonIFrame)
+ reason_list->AppendString("Is accelerated iframe");
+
+ if (reasons & WebKit::CompositingReasonBackfaceVisibilityHidden)
+ reason_list->AppendString("Has backface-visibility: hidden");
+
+ if (reasons & WebKit::CompositingReasonAnimation)
+ reason_list->AppendString("Has accelerated animation");
+
+ if (reasons & WebKit::CompositingReasonFilters)
+ reason_list->AppendString("Has accelerated filters");
+
+ if (reasons & WebKit::CompositingReasonPositionFixed)
+ reason_list->AppendString("Is fixed position");
+
+ if (reasons & WebKit::CompositingReasonPositionSticky)
+ reason_list->AppendString("Is sticky position");
+
+ if (reasons & WebKit::CompositingReasonOverflowScrollingTouch)
+ reason_list->AppendString("Is a scrollable overflow element");
+
+ if (reasons & WebKit::CompositingReasonBlending)
+ reason_list->AppendString("Has a blend mode");
+
+ if (reasons & WebKit::CompositingReasonAssumedOverlap)
+ reason_list->AppendString("Might overlap a composited animation");
+
+ if (reasons & WebKit::CompositingReasonOverlap)
+ reason_list->AppendString("Overlaps other composited content");
+
+ if (reasons & WebKit::CompositingReasonNegativeZIndexChildren)
+ reason_list->AppendString("Might overlap negative z-index "
+ "composited content");
+
+ if (reasons & WebKit::CompositingReasonTransformWithCompositedDescendants)
+ reason_list->AppendString("Has a transform needed by a "
+ "composited descendant");
+
+ if (reasons & WebKit::CompositingReasonOpacityWithCompositedDescendants)
+ reason_list->AppendString("Has opacity needed by a composited "
+ "descendant");
+
+ if (reasons & WebKit::CompositingReasonMaskWithCompositedDescendants)
+ reason_list->AppendString("Has a mask needed by a composited "
+ "descendant");
+
+ if (reasons & WebKit::CompositingReasonReflectionWithCompositedDescendants)
+ reason_list->AppendString("Has a reflection with a composited "
+ "descendant");
+
+ if (reasons & WebKit::CompositingReasonFilterWithCompositedDescendants)
+ reason_list->AppendString("Is a filter effect with a composited "
+ "descendant");
+
+ if (reasons & WebKit::CompositingReasonBlendingWithCompositedDescendants)
+ reason_list->AppendString("Has a blend mode with a composited "
+ "descendant");
+
+ if (reasons & WebKit::CompositingReasonClipsCompositingDescendants)
+ reason_list->AppendString("Clips a composited descendant");
+
+ if (reasons & WebKit::CompositingReasonPerspective)
+ reason_list->AppendString("Has a perspective transform needed by a "
+ "composited 3d descendant");
+
+ if (reasons & WebKit::CompositingReasonPreserve3D)
+ reason_list->AppendString("Has preserves-3d style with composited "
+ "3d descendant");
+
+ if (reasons & WebKit::CompositingReasonReflectionOfCompositedParent)
+ reason_list->AppendString("Is the reflection of a composited layer");
+
+ if (reasons & WebKit::CompositingReasonRoot)
+ reason_list->AppendString("Is the root");
+
+ if (reasons & WebKit::CompositingReasonLayerForClip)
+ reason_list->AppendString("Convenience layer, parent of main layer to "
+ "clip subtree");
+
+ if (reasons & WebKit::CompositingReasonLayerForDescendantClip)
+ reason_list->AppendString("Convenience layer, child of main layer to "
+ "clip scrolling container");
+
+ if (reasons & WebKit::CompositingReasonLayerForScrollbar)
+ reason_list->AppendString("Convenience layer for rendering scrollbar");
+
+ if (reasons & WebKit::CompositingReasonsLayerForScrollingContainer)
+ reason_list->AppendString("Convenience layer, the scrolling container");
+
+ if (reasons & WebKit::CompositingReasonsLayerForForeground)
+ reason_list->AppendString("Convenience layer, when main layer has "
+ "negative z-index content");
+
+ return reason_list.PassAs<base::Value>();
+}
+
void LayerImpl::AsValueInto(base::DictionaryValue* state) const {
TracedValue::MakeDictIntoImplicitSnapshot(state, LayerTypeAsString(), this);
state->SetInteger("layer_id", id());
state->Set("bounds", MathUtil::AsValue(bounds()).release());
state->SetInteger("draws_content", DrawsContent());
+ state->Set("compositing_reasons",
+ CompositingReasonsAsValue(compositing_reasons_).release());
bool clipped;
gfx::QuadF layer_quad = MathUtil::MapQuad(

Powered by Google App Engine
This is Rietveld 408576698